@ -682,6 +682,91 @@ bool AppInitServers(boost::thread_group& threadGroup)
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__ ) ;
}
// disable walletbroadcast and whitelistalwaysrelay in blocksonly mode
if ( GetBoolArg ( " -blocksonly " , DEFAULT_BLOCKSONLY ) ) {
if ( SoftSetBoolArg ( " -whitelistalwaysrelay " , false ) )
LogPrintf ( " %s: parameter interaction: -blocksonly=1 -> setting -whitelistalwaysrelay=0 \n " , __func__ ) ;
# ifdef ENABLE_WALLET
if ( SoftSetBoolArg ( " -walletbroadcast " , false ) )
LogPrintf ( " %s: parameter interaction: -blocksonly=1 -> setting -walletbroadcast=0 \n " , __func__ ) ;
# endif
}
}
void InitLogging ( )
{
fPrintToConsole = GetBoolArg ( " -printtoconsole " , false ) ;
fLogTimestamps = GetBoolArg ( " -logtimestamps " , true ) ;
fLogTimeMicros = GetBoolArg ( " -logtimemicros " , DEFAULT_LOGTIMEMICROS ) ;
fLogIPs = GetBoolArg ( " -logips " , false ) ;
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 ) ;
}
/** Initialize bitcoin.
* @ pre Parameters should be parsed and config file should be read .
*/
@ -746,74 +831,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler)
// ********************************************************* Step 2: parameter interactions
const CChainParams & chainparams = Params ( ) ;
// Set this early so that parameter interactions go to console
fPrintToConsole = GetBoolArg ( " -printtoconsole " , false ) ;
fLogTimestamps = GetBoolArg ( " -logtimestamps " , true ) ;
fLogTimeMicros = GetBoolArg ( " -logtimemicros " , DEFAULT_LOGTIMEMICROS ) ;
fLogIPs = GetBoolArg ( " -logips " , false ) ;
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 ) ;
// 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 ( GetArg ( " -prune " , 0 ) ) {