Skip to content

Commit

Permalink
Merge #1375: [Init] Do parameter interaction before creating the UI m…
Browse files Browse the repository at this point in the history
…odel

9182b90 Initialize logging before we do parameter interaction (Jonas Schnelli)
dec0787 [QT] Call inits parameter interaction before we create the options model (Jonas Schnelli)
18480ce Refactor parameter interaction, call it before AppInit2() (Jonas Schnelli)

Pull request description:

  Backport of bitcoin#6780

  Currently optionsModel(QT) parameters interaction overwrites/dominates initial and depending parameter settings. This PR would factor out init's parameter interaction and call it before AppInit2().

ACKs for top commit:
  furszy:
    ACK 9182b90
  random-zebra:
    ACK rebase 9182b90 and merging...

Tree-SHA512: f01c9b6603452d59c3fa7df8b8f85998b9c716fd3209f80fc6d4591035c995ad577b217d1d7ffd7f642d16fe130ee922ba0394870ec391b8e972587022962611
  • Loading branch information
random-zebra committed Mar 12, 2020
2 parents f1206ed + 9182b90 commit 41aae2d
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 25 deletions.
59 changes: 34 additions & 25 deletions src/init.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -842,34 +842,22 @@ bool AppInitBasicSetup()
return true;
}

/** Initialize pivx.
* @pre Parameters should be parsed and config file should be read.
*/
bool AppInit2()
// Parameter interaction based on rules
void InitParameterInteraction()
{
// ********************************************************* Step 1: setup
if (!AppInitBasicSetup())
return false;

// ********************************************************* Step 2: parameter interactions
// Set this early so that parameter interactions go to console
fPrintToConsole = GetBoolArg("-printtoconsole", false);
fLogTimestamps = GetBoolArg("-logtimestamps", true);
fLogIPs = GetBoolArg("-logips", false);

if (mapArgs.count("-bind") || mapArgs.count("-whitebind")) {
// when specifying an explicit binding address, you want to listen on it
// even when -connect or -proxy is specified
if (SoftSetBoolArg("-listen", true))
LogPrintf("AppInit2 : parameter interaction: -bind or -whitebind set -> setting -listen=1\n");
LogPrintf("%s : parameter interaction: -bind or -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("AppInit2 : parameter interaction: -connect set -> setting -dnsseed=0\n");
LogPrintf("%s : parameter interaction: -connect set -> setting -dnsseed=0\n", __func__);
if (SoftSetBoolArg("-listen", false))
LogPrintf("AppInit2 : parameter interaction: -connect set -> setting -listen=0\n");
LogPrintf("%s : parameter interaction: -connect set -> setting -listen=0\n", __func__);
}

if (mapArgs.count("-proxy")) {
Expand All @@ -882,42 +870,63 @@ bool AppInit2()
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("AppInit2 : parameter interaction: -proxy set -> setting -discover=0\n");
LogPrintf("%s : parameter interaction: -proxy set -> setting -discover=0\n", __func__);
}

if (!GetBoolArg("-listen", true)) {
// do not map ports or try to retrieve public IP when not listening (pointless)
if (SoftSetBoolArg("-upnp", false))
LogPrintf("AppInit2 : parameter interaction: -listen=0 -> setting -upnp=0\n");
LogPrintf("%s : parameter interaction: -listen=0 -> setting -upnp=0\n", __func__);
if (SoftSetBoolArg("-discover", false))
LogPrintf("AppInit2 : parameter interaction: -listen=0 -> setting -discover=0\n");
LogPrintf("%s : parameter interaction: -listen=0 -> setting -discover=0\n", __func__);
if (SoftSetBoolArg("-listenonion", false))
LogPrintf("AppInit2 : parameter interaction: -listen=0 -> setting -listenonion=0\n");
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("AppInit2 : parameter interaction: -externalip set -> setting -discover=0\n");
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("AppInit2 : parameter interaction: -salvagewallet=1 -> setting -rescan=1\n");
LogPrintf("%s : parameter interaction: -salvagewallet=1 -> setting -rescan=1\n", __func__);
}

// -zapwallettx implies a rescan
if (GetBoolArg("-zapwallettxes", false)) {
if (SoftSetBoolArg("-rescan", true))
LogPrintf("AppInit2 : parameter interaction: -zapwallettxes=<mode> -> setting -rescan=1\n");
LogPrintf("%s : parameter interaction: -zapwallettxes=<mode> -> setting -rescan=1\n", __func__);
}

if (!GetBoolArg("-enableswifttx", fEnableSwiftTX)) {
if (SoftSetArg("-swifttxdepth", "0"))
LogPrintf("AppInit2 : parameter interaction: -enableswifttx=false -> setting -nSwiftTXDepth=0\n");
LogPrintf("%s : parameter interaction: -enableswifttx=false -> setting -nSwiftTXDepth=0\n", __func__);
}
}

void InitLogging()
{
fPrintToConsole = GetBoolArg("-printtoconsole", false);
fLogTimestamps = GetBoolArg("-logtimestamps", true);
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("PIVX version %s (%s)\n", FormatFullVersion(), CLIENT_DATE);
}

/** Initialize pivx.
* @pre Parameters should be parsed and config file should be read.
*/
bool AppInit2()
{
// ********************************************************* Step 1: setup
if (!AppInitBasicSetup())
return false;

// ********************************************************* Step 2: parameter interactions
// Make sure enough file descriptors are available
int nBind = std::max((int)mapArgs.count("-bind") + (int)mapArgs.count("-whitebind"), 1);
nMaxConnections = GetArg("-maxconnections", 125);
Expand Down
4 changes: 4 additions & 0 deletions src/init.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,10 @@ bool ShutdownRequested();
void Interrupt();
void Shutdown();
void PrepareShutdown();
//!Initialize the logging infrastructure
void InitLogging();
//!Parameter interaction: change current parameters depending on various rules
void InitParameterInteraction();
bool AppInit2();

/** Initialize PIVX core: Basic context setup.
Expand Down
3 changes: 3 additions & 0 deletions src/pivxd.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,9 @@ bool AppInit(int argc, char* argv[])
#endif
SoftSetBoolArg("-server", true);

// Set this early so that parameter interactions go to console
InitLogging();
InitParameterInteraction();
fRet = AppInit2();
} catch (const std::exception& e) {
PrintExceptionContinue(&e, "AppInit()");
Expand Down
10 changes: 10 additions & 0 deletions src/qt/pivx.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,8 @@ class BitcoinApplication : public QApplication
/// Create payment server
void createPaymentServer();
#endif
/// parameter interaction/setup based on rules
void parameterSetup();
/// Create options model
void createOptionsModel();
/// Create main window
Expand Down Expand Up @@ -411,6 +413,12 @@ void BitcoinApplication::startThread()
coreThread->start();
}

void BitcoinApplication::parameterSetup()
{
InitLogging();
InitParameterInteraction();
}

void BitcoinApplication::requestInitialize()
{
qDebug() << __func__ << ": Requesting initialize";
Expand Down Expand Up @@ -639,6 +647,8 @@ int main(int argc, char* argv[])
#endif
// Install qDebug() message handler to route to debug.log
qInstallMessageHandler(DebugMessageHandler);
// Allow parameter interaction before we create the options model
app.parameterSetup();
// Load GUI settings from QSettings
app.createOptionsModel();

Expand Down

0 comments on commit 41aae2d

Please sign in to comment.