|
|
@ -690,13 +690,13 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
if (!SetupNetworking()) |
|
|
|
if (!SetupNetworking()) |
|
|
|
return InitError("Error: Initializing networking failed"); |
|
|
|
return InitError("Initializing networking failed"); |
|
|
|
|
|
|
|
|
|
|
|
#ifndef WIN32 |
|
|
|
#ifndef WIN32 |
|
|
|
if (GetBoolArg("-sysperms", false)) { |
|
|
|
if (GetBoolArg("-sysperms", false)) { |
|
|
|
#ifdef ENABLE_WALLET |
|
|
|
#ifdef ENABLE_WALLET |
|
|
|
if (!GetBoolArg("-disablewallet", false)) |
|
|
|
if (!GetBoolArg("-disablewallet", false)) |
|
|
|
return InitError("Error: -sysperms is not allowed in combination with enabled wallet functionality"); |
|
|
|
return InitError("-sysperms is not allowed in combination with enabled wallet functionality"); |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
umask(077); |
|
|
|
umask(077); |
|
|
@ -826,16 +826,16 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) |
|
|
|
|
|
|
|
|
|
|
|
// Check for -debugnet
|
|
|
|
// Check for -debugnet
|
|
|
|
if (GetBoolArg("-debugnet", false)) |
|
|
|
if (GetBoolArg("-debugnet", false)) |
|
|
|
InitWarning(_("Warning: Unsupported argument -debugnet ignored, use -debug=net.")); |
|
|
|
InitWarning(_("Unsupported argument -debugnet ignored, use -debug=net.")); |
|
|
|
// Check for -socks - as this is a privacy risk to continue, exit here
|
|
|
|
// Check for -socks - as this is a privacy risk to continue, exit here
|
|
|
|
if (mapArgs.count("-socks")) |
|
|
|
if (mapArgs.count("-socks")) |
|
|
|
return InitError(_("Error: Unsupported argument -socks found. Setting SOCKS version isn't possible anymore, only SOCKS5 proxies are supported.")); |
|
|
|
return InitError(_("Unsupported argument -socks found. Setting SOCKS version isn't possible anymore, only SOCKS5 proxies are supported.")); |
|
|
|
// Check for -tor - as this is a privacy risk to continue, exit here
|
|
|
|
// Check for -tor - as this is a privacy risk to continue, exit here
|
|
|
|
if (GetBoolArg("-tor", false)) |
|
|
|
if (GetBoolArg("-tor", false)) |
|
|
|
return InitError(_("Error: Unsupported argument -tor found, use -onion.")); |
|
|
|
return InitError(_("Unsupported argument -tor found, use -onion.")); |
|
|
|
|
|
|
|
|
|
|
|
if (GetBoolArg("-benchmark", false)) |
|
|
|
if (GetBoolArg("-benchmark", false)) |
|
|
|
InitWarning(_("Warning: Unsupported argument -benchmark ignored, use -debug=bench.")); |
|
|
|
InitWarning(_("Unsupported argument -benchmark ignored, use -debug=bench.")); |
|
|
|
|
|
|
|
|
|
|
|
// Checkmempool and checkblockindex default to true in regtest mode
|
|
|
|
// Checkmempool and checkblockindex default to true in regtest mode
|
|
|
|
mempool.setSanityCheck(GetBoolArg("-checkmempool", chainparams.DefaultConsistencyChecks())); |
|
|
|
mempool.setSanityCheck(GetBoolArg("-checkmempool", chainparams.DefaultConsistencyChecks())); |
|
|
@ -846,7 +846,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) |
|
|
|
int64_t nMempoolSizeLimit = GetArg("-maxmempool", DEFAULT_MAX_MEMPOOL_SIZE) * 1000000; |
|
|
|
int64_t nMempoolSizeLimit = GetArg("-maxmempool", DEFAULT_MAX_MEMPOOL_SIZE) * 1000000; |
|
|
|
int64_t nMempoolDescendantSizeLimit = GetArg("-limitdescendantsize", DEFAULT_DESCENDANT_SIZE_LIMIT) * 1000; |
|
|
|
int64_t nMempoolDescendantSizeLimit = GetArg("-limitdescendantsize", DEFAULT_DESCENDANT_SIZE_LIMIT) * 1000; |
|
|
|
if (nMempoolSizeLimit < 0 || nMempoolSizeLimit < nMempoolDescendantSizeLimit * 40) |
|
|
|
if (nMempoolSizeLimit < 0 || nMempoolSizeLimit < nMempoolDescendantSizeLimit * 40) |
|
|
|
return InitError(strprintf(_("Error: -maxmempool must be at least %d MB"), GetArg("-limitdescendantsize", DEFAULT_DESCENDANT_SIZE_LIMIT) / 25)); |
|
|
|
return InitError(strprintf(_("-maxmempool must be at least %d MB"), GetArg("-limitdescendantsize", DEFAULT_DESCENDANT_SIZE_LIMIT) / 25)); |
|
|
|
|
|
|
|
|
|
|
|
// -par=0 means autodetect, but nScriptCheckThreads==0 means no concurrency
|
|
|
|
// -par=0 means autodetect, but nScriptCheckThreads==0 means no concurrency
|
|
|
|
nScriptCheckThreads = GetArg("-par", DEFAULT_SCRIPTCHECK_THREADS); |
|
|
|
nScriptCheckThreads = GetArg("-par", DEFAULT_SCRIPTCHECK_THREADS); |
|
|
@ -915,7 +915,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) |
|
|
|
if (!ParseMoney(mapArgs["-paytxfee"], nFeePerK)) |
|
|
|
if (!ParseMoney(mapArgs["-paytxfee"], nFeePerK)) |
|
|
|
return InitError(strprintf(_("Invalid amount for -paytxfee=<amount>: '%s'"), mapArgs["-paytxfee"])); |
|
|
|
return InitError(strprintf(_("Invalid amount for -paytxfee=<amount>: '%s'"), mapArgs["-paytxfee"])); |
|
|
|
if (nFeePerK > nHighTransactionFeeWarning) |
|
|
|
if (nFeePerK > nHighTransactionFeeWarning) |
|
|
|
InitWarning(_("Warning: -paytxfee is set very high! This is the transaction fee you will pay if you send a transaction.")); |
|
|
|
InitWarning(_("-paytxfee is set very high! This is the transaction fee you will pay if you send a transaction.")); |
|
|
|
payTxFee = CFeeRate(nFeePerK, 1000); |
|
|
|
payTxFee = CFeeRate(nFeePerK, 1000); |
|
|
|
if (payTxFee < ::minRelayTxFee) |
|
|
|
if (payTxFee < ::minRelayTxFee) |
|
|
|
{ |
|
|
|
{ |
|
|
@ -929,7 +929,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) |
|
|
|
if (!ParseMoney(mapArgs["-maxtxfee"], nMaxFee)) |
|
|
|
if (!ParseMoney(mapArgs["-maxtxfee"], nMaxFee)) |
|
|
|
return InitError(strprintf(_("Invalid amount for -maxtxfee=<amount>: '%s'"), mapArgs["-maptxfee"])); |
|
|
|
return InitError(strprintf(_("Invalid amount for -maxtxfee=<amount>: '%s'"), mapArgs["-maptxfee"])); |
|
|
|
if (nMaxFee > nHighTransactionMaxFeeWarning) |
|
|
|
if (nMaxFee > nHighTransactionMaxFeeWarning) |
|
|
|
InitWarning(_("Warning: -maxtxfee is set very high! Fees this large could be paid on a single transaction.")); |
|
|
|
InitWarning(_("-maxtxfee is set very high! Fees this large could be paid on a single transaction.")); |
|
|
|
maxTxFee = nMaxFee; |
|
|
|
maxTxFee = nMaxFee; |
|
|
|
if (CFeeRate(maxTxFee, 1000) < ::minRelayTxFee) |
|
|
|
if (CFeeRate(maxTxFee, 1000) < ::minRelayTxFee) |
|
|
|
{ |
|
|
|
{ |
|
|
@ -1056,12 +1056,12 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) |
|
|
|
BOOST_FOREACH(string cmt, mapMultiArgs["-uacomment"]) |
|
|
|
BOOST_FOREACH(string cmt, mapMultiArgs["-uacomment"]) |
|
|
|
{ |
|
|
|
{ |
|
|
|
if (cmt != SanitizeString(cmt, SAFE_CHARS_UA_COMMENT)) |
|
|
|
if (cmt != SanitizeString(cmt, SAFE_CHARS_UA_COMMENT)) |
|
|
|
return InitError(strprintf("User Agent comment (%s) contains unsafe characters.", cmt)); |
|
|
|
return InitError(strprintf(_("User Agent comment (%s) contains unsafe characters."), cmt)); |
|
|
|
uacomments.push_back(SanitizeString(cmt, SAFE_CHARS_UA_COMMENT)); |
|
|
|
uacomments.push_back(SanitizeString(cmt, SAFE_CHARS_UA_COMMENT)); |
|
|
|
} |
|
|
|
} |
|
|
|
strSubVersion = FormatSubVersion(CLIENT_NAME, CLIENT_VERSION, uacomments); |
|
|
|
strSubVersion = FormatSubVersion(CLIENT_NAME, CLIENT_VERSION, uacomments); |
|
|
|
if (strSubVersion.size() > MAX_SUBVERSION_LENGTH) { |
|
|
|
if (strSubVersion.size() > MAX_SUBVERSION_LENGTH) { |
|
|
|
return InitError(strprintf("Total length of network version string %i exceeds maximum of %i characters. Reduce the number and/or size of uacomments.", |
|
|
|
return InitError(strprintf(_("Total length of network version string (%i) exceeds maximum length (%i). Reduce the number or size of uacomments."), |
|
|
|
strSubVersion.size(), MAX_SUBVERSION_LENGTH)); |
|
|
|
strSubVersion.size(), MAX_SUBVERSION_LENGTH)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -1382,9 +1382,8 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) |
|
|
|
strErrors << _("Error loading wallet.dat: Wallet corrupted") << "\n"; |
|
|
|
strErrors << _("Error loading wallet.dat: Wallet corrupted") << "\n"; |
|
|
|
else if (nLoadWalletRet == DB_NONCRITICAL_ERROR) |
|
|
|
else if (nLoadWalletRet == DB_NONCRITICAL_ERROR) |
|
|
|
{ |
|
|
|
{ |
|
|
|
string msg(_("Warning: error reading wallet.dat! All keys read correctly, but transaction data" |
|
|
|
InitWarning(_("Error reading wallet.dat! All keys read correctly, but transaction data" |
|
|
|
" or address book entries might be missing or incorrect.")); |
|
|
|
" or address book entries might be missing or incorrect.")); |
|
|
|
InitWarning(msg); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
else if (nLoadWalletRet == DB_TOO_NEW) |
|
|
|
else if (nLoadWalletRet == DB_TOO_NEW) |
|
|
|
strErrors << _("Error loading wallet.dat: Wallet requires newer version of Bitcoin Core") << "\n"; |
|
|
|
strErrors << _("Error loading wallet.dat: Wallet requires newer version of Bitcoin Core") << "\n"; |
|
|
|