Merge pull request #6780
a46f87f
Initialize logging before we do parameter interaction (Jonas Schnelli)df66147
Move -blocksonly parameter interaction to the new ParameterInteraction() function (Jonas Schnelli)68354e7
[QT] Call inits parameter interaction before we create the options model (Jonas Schnelli)411b05a
Refactor parameter interaction, call it before AppInit2() (Jonas Schnelli)
This commit is contained in:
commit
2a94cd67e8
4 changed files with 102 additions and 67 deletions
|
@ -151,6 +151,9 @@ bool AppInit(int argc, char* argv[])
|
||||||
#endif
|
#endif
|
||||||
SoftSetBoolArg("-server", true);
|
SoftSetBoolArg("-server", true);
|
||||||
|
|
||||||
|
// Set this early so that parameter interactions go to console
|
||||||
|
InitLogging();
|
||||||
|
InitParameterInteraction();
|
||||||
fRet = AppInit2(threadGroup, scheduler);
|
fRet = AppInit2(threadGroup, scheduler);
|
||||||
}
|
}
|
||||||
catch (const std::exception& e) {
|
catch (const std::exception& e) {
|
||||||
|
|
152
src/init.cpp
152
src/init.cpp
|
@ -682,6 +682,91 @@ 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__);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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.
|
/** Initialize bitcoin.
|
||||||
* @pre Parameters should be parsed and config file should be read.
|
* @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
|
// ********************************************************* Step 2: parameter interactions
|
||||||
const CChainParams& chainparams = Params();
|
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 using block pruning, then disable txindex
|
||||||
if (GetArg("-prune", 0)) {
|
if (GetArg("-prune", 0)) {
|
||||||
|
|
|
@ -23,6 +23,10 @@ bool ShutdownRequested();
|
||||||
/** Interrupt threads */
|
/** Interrupt threads */
|
||||||
void Interrupt(boost::thread_group& threadGroup);
|
void Interrupt(boost::thread_group& threadGroup);
|
||||||
void Shutdown();
|
void Shutdown();
|
||||||
|
//!Initialize the logging infrastructure
|
||||||
|
void InitLogging();
|
||||||
|
//!Parameter interaction: change current parameters depending on various rules
|
||||||
|
void InitParameterInteraction();
|
||||||
bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler);
|
bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler);
|
||||||
|
|
||||||
/** The help message mode determines what help message to show */
|
/** The help message mode determines what help message to show */
|
||||||
|
|
|
@ -201,6 +201,8 @@ public:
|
||||||
/// Create payment server
|
/// Create payment server
|
||||||
void createPaymentServer();
|
void createPaymentServer();
|
||||||
#endif
|
#endif
|
||||||
|
/// parameter interaction/setup based on rules
|
||||||
|
void parameterSetup();
|
||||||
/// Create options model
|
/// Create options model
|
||||||
void createOptionsModel(bool resetSettings);
|
void createOptionsModel(bool resetSettings);
|
||||||
/// Create main window
|
/// Create main window
|
||||||
|
@ -397,6 +399,12 @@ void BitcoinApplication::startThread()
|
||||||
coreThread->start();
|
coreThread->start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BitcoinApplication::parameterSetup()
|
||||||
|
{
|
||||||
|
InitLogging();
|
||||||
|
InitParameterInteraction();
|
||||||
|
}
|
||||||
|
|
||||||
void BitcoinApplication::requestInitialize()
|
void BitcoinApplication::requestInitialize()
|
||||||
{
|
{
|
||||||
qDebug() << __func__ << ": Requesting initialize";
|
qDebug() << __func__ << ": Requesting initialize";
|
||||||
|
@ -644,6 +652,8 @@ int main(int argc, char *argv[])
|
||||||
// Install qDebug() message handler to route to debug.log
|
// Install qDebug() message handler to route to debug.log
|
||||||
qInstallMessageHandler(DebugMessageHandler);
|
qInstallMessageHandler(DebugMessageHandler);
|
||||||
#endif
|
#endif
|
||||||
|
// Allow parameter interaction before we create the options model
|
||||||
|
app.parameterSetup();
|
||||||
// Load GUI settings from QSettings
|
// Load GUI settings from QSettings
|
||||||
app.createOptionsModel(mapArgs.count("-resetguisettings") != 0);
|
app.createOptionsModel(mapArgs.count("-resetguisettings") != 0);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue