|
|
@ -681,6 +681,70 @@ bool AppInitServers(boost::thread_group& threadGroup) |
|
|
|
return true; |
|
|
|
return true; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Parameter interaction based on rules
|
|
|
|
|
|
|
|
void InitParameterInteraction() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
// when specifying an explicit binding address, you want to listen on it
|
|
|
|
|
|
|
|
// even when -connect or -proxy is specified
|
|
|
|
|
|
|
|
if (mapArgs.count("-bind")) { |
|
|
|
|
|
|
|
if (SoftSetBoolArg("-listen", true)) |
|
|
|
|
|
|
|
LogPrintf("%s: parameter interaction: -bind set -> setting -listen=1\n", __func__); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if (mapArgs.count("-whitebind")) { |
|
|
|
|
|
|
|
if (SoftSetBoolArg("-listen", true)) |
|
|
|
|
|
|
|
LogPrintf("%s: parameter interaction: -whitebind set -> setting -listen=1\n", __func__); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (mapArgs.count("-connect") && mapMultiArgs["-connect"].size() > 0) { |
|
|
|
|
|
|
|
// when only connecting to trusted nodes, do not seed via DNS, or listen by default
|
|
|
|
|
|
|
|
if (SoftSetBoolArg("-dnsseed", false)) |
|
|
|
|
|
|
|
LogPrintf("%s: parameter interaction: -connect set -> setting -dnsseed=0\n", __func__); |
|
|
|
|
|
|
|
if (SoftSetBoolArg("-listen", false)) |
|
|
|
|
|
|
|
LogPrintf("%s: parameter interaction: -connect set -> setting -listen=0\n", __func__); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (mapArgs.count("-proxy")) { |
|
|
|
|
|
|
|
// to protect privacy, do not listen by default if a default proxy server is specified
|
|
|
|
|
|
|
|
if (SoftSetBoolArg("-listen", false)) |
|
|
|
|
|
|
|
LogPrintf("%s: parameter interaction: -proxy set -> setting -listen=0\n", __func__); |
|
|
|
|
|
|
|
// to protect privacy, do not use UPNP when a proxy is set. The user may still specify -listen=1
|
|
|
|
|
|
|
|
// to listen locally, so don't rely on this happening through -listen below.
|
|
|
|
|
|
|
|
if (SoftSetBoolArg("-upnp", false)) |
|
|
|
|
|
|
|
LogPrintf("%s: parameter interaction: -proxy set -> setting -upnp=0\n", __func__); |
|
|
|
|
|
|
|
// to protect privacy, do not discover addresses by default
|
|
|
|
|
|
|
|
if (SoftSetBoolArg("-discover", false)) |
|
|
|
|
|
|
|
LogPrintf("%s: parameter interaction: -proxy set -> setting -discover=0\n", __func__); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!GetBoolArg("-listen", DEFAULT_LISTEN)) { |
|
|
|
|
|
|
|
// do not map ports or try to retrieve public IP when not listening (pointless)
|
|
|
|
|
|
|
|
if (SoftSetBoolArg("-upnp", false)) |
|
|
|
|
|
|
|
LogPrintf("%s: parameter interaction: -listen=0 -> setting -upnp=0\n", __func__); |
|
|
|
|
|
|
|
if (SoftSetBoolArg("-discover", false)) |
|
|
|
|
|
|
|
LogPrintf("%s: parameter interaction: -listen=0 -> setting -discover=0\n", __func__); |
|
|
|
|
|
|
|
if (SoftSetBoolArg("-listenonion", false)) |
|
|
|
|
|
|
|
LogPrintf("%s: parameter interaction: -listen=0 -> setting -listenonion=0\n", __func__); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (mapArgs.count("-externalip")) { |
|
|
|
|
|
|
|
// if an explicit public IP is specified, do not try to find others
|
|
|
|
|
|
|
|
if (SoftSetBoolArg("-discover", false)) |
|
|
|
|
|
|
|
LogPrintf("%s: parameter interaction: -externalip set -> setting -discover=0\n", __func__); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (GetBoolArg("-salvagewallet", false)) { |
|
|
|
|
|
|
|
// Rewrite just private keys: rescan to find transactions
|
|
|
|
|
|
|
|
if (SoftSetBoolArg("-rescan", true)) |
|
|
|
|
|
|
|
LogPrintf("%s: parameter interaction: -salvagewallet=1 -> setting -rescan=1\n", __func__); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// -zapwallettx implies a rescan
|
|
|
|
|
|
|
|
if (GetBoolArg("-zapwallettxes", false)) { |
|
|
|
|
|
|
|
if (SoftSetBoolArg("-rescan", true)) |
|
|
|
|
|
|
|
LogPrintf("%s: parameter interaction: -zapwallettxes=<mode> -> setting -rescan=1\n", __func__); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** Initialize bitcoin.
|
|
|
|
/** Initialize bitcoin.
|
|
|
|
* @pre Parameters should be parsed and config file should be read. |
|
|
|
* @pre Parameters should be parsed and config file should be read. |
|
|
|
*/ |
|
|
|
*/ |
|
|
@ -754,66 +818,6 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler) |
|
|
|
LogPrintf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); |
|
|
|
LogPrintf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); |
|
|
|
LogPrintf("Bitcoin version %s (%s)\n", FormatFullVersion(), CLIENT_DATE); |
|
|
|
LogPrintf("Bitcoin version %s (%s)\n", FormatFullVersion(), CLIENT_DATE); |
|
|
|
|
|
|
|
|
|
|
|
// when specifying an explicit binding address, you want to listen on it
|
|
|
|
|
|
|
|
// even when -connect or -proxy is specified
|
|
|
|
|
|
|
|
if (mapArgs.count("-bind")) { |
|
|
|
|
|
|
|
if (SoftSetBoolArg("-listen", true)) |
|
|
|
|
|
|
|
LogPrintf("%s: parameter interaction: -bind set -> setting -listen=1\n", __func__); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if (mapArgs.count("-whitebind")) { |
|
|
|
|
|
|
|
if (SoftSetBoolArg("-listen", true)) |
|
|
|
|
|
|
|
LogPrintf("%s: parameter interaction: -whitebind set -> setting -listen=1\n", __func__); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (mapArgs.count("-connect") && mapMultiArgs["-connect"].size() > 0) { |
|
|
|
|
|
|
|
// when only connecting to trusted nodes, do not seed via DNS, or listen by default
|
|
|
|
|
|
|
|
if (SoftSetBoolArg("-dnsseed", false)) |
|
|
|
|
|
|
|
LogPrintf("%s: parameter interaction: -connect set -> setting -dnsseed=0\n", __func__); |
|
|
|
|
|
|
|
if (SoftSetBoolArg("-listen", false)) |
|
|
|
|
|
|
|
LogPrintf("%s: parameter interaction: -connect set -> setting -listen=0\n", __func__); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (mapArgs.count("-proxy")) { |
|
|
|
|
|
|
|
// to protect privacy, do not listen by default if a default proxy server is specified
|
|
|
|
|
|
|
|
if (SoftSetBoolArg("-listen", false)) |
|
|
|
|
|
|
|
LogPrintf("%s: parameter interaction: -proxy set -> setting -listen=0\n", __func__); |
|
|
|
|
|
|
|
// to protect privacy, do not use UPNP when a proxy is set. The user may still specify -listen=1
|
|
|
|
|
|
|
|
// to listen locally, so don't rely on this happening through -listen below.
|
|
|
|
|
|
|
|
if (SoftSetBoolArg("-upnp", false)) |
|
|
|
|
|
|
|
LogPrintf("%s: parameter interaction: -proxy set -> setting -upnp=0\n", __func__); |
|
|
|
|
|
|
|
// to protect privacy, do not discover addresses by default
|
|
|
|
|
|
|
|
if (SoftSetBoolArg("-discover", false)) |
|
|
|
|
|
|
|
LogPrintf("%s: parameter interaction: -proxy set -> setting -discover=0\n", __func__); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!GetBoolArg("-listen", DEFAULT_LISTEN)) { |
|
|
|
|
|
|
|
// do not map ports or try to retrieve public IP when not listening (pointless)
|
|
|
|
|
|
|
|
if (SoftSetBoolArg("-upnp", false)) |
|
|
|
|
|
|
|
LogPrintf("%s: parameter interaction: -listen=0 -> setting -upnp=0\n", __func__); |
|
|
|
|
|
|
|
if (SoftSetBoolArg("-discover", false)) |
|
|
|
|
|
|
|
LogPrintf("%s: parameter interaction: -listen=0 -> setting -discover=0\n", __func__); |
|
|
|
|
|
|
|
if (SoftSetBoolArg("-listenonion", false)) |
|
|
|
|
|
|
|
LogPrintf("%s: parameter interaction: -listen=0 -> setting -listenonion=0\n", __func__); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (mapArgs.count("-externalip")) { |
|
|
|
|
|
|
|
// if an explicit public IP is specified, do not try to find others
|
|
|
|
|
|
|
|
if (SoftSetBoolArg("-discover", false)) |
|
|
|
|
|
|
|
LogPrintf("%s: parameter interaction: -externalip set -> setting -discover=0\n", __func__); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (GetBoolArg("-salvagewallet", false)) { |
|
|
|
|
|
|
|
// Rewrite just private keys: rescan to find transactions
|
|
|
|
|
|
|
|
if (SoftSetBoolArg("-rescan", true)) |
|
|
|
|
|
|
|
LogPrintf("%s: parameter interaction: -salvagewallet=1 -> setting -rescan=1\n", __func__); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// -zapwallettx implies a rescan
|
|
|
|
|
|
|
|
if (GetBoolArg("-zapwallettxes", false)) { |
|
|
|
|
|
|
|
if (SoftSetBoolArg("-rescan", true)) |
|
|
|
|
|
|
|
LogPrintf("%s: parameter interaction: -zapwallettxes=<mode> -> setting -rescan=1\n", __func__); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// if using block pruning, then disable txindex
|
|
|
|
// if using block pruning, then disable txindex
|
|
|
|
if (GetArg("-prune", 0)) { |
|
|
|
if (GetArg("-prune", 0)) { |
|
|
|
if (GetBoolArg("-txindex", false)) |
|
|
|
if (GetBoolArg("-txindex", false)) |
|
|
|