Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Init] Do parameter interaction before creating the UI model #1375

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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