From c7ec5243892c38f9f77781b0e24a237942e7c776 Mon Sep 17 00:00:00 2001 From: John Newbery Date: Tue, 27 Mar 2018 15:35:54 -0400 Subject: [PATCH] [wallet] Add dummy wallet init class --- src/bitcoind.cpp | 4 +++- src/init.cpp | 30 +++++++++--------------------- src/qt/bitcoin.cpp | 4 +++- src/walletinitinterface.h | 14 ++++++++++++++ 4 files changed, 29 insertions(+), 23 deletions(-) diff --git a/src/bitcoind.cpp b/src/bitcoind.cpp index a849683eb01..5eba1cbeb9f 100644 --- a/src/bitcoind.cpp +++ b/src/bitcoind.cpp @@ -20,8 +20,8 @@ #include #if ENABLE_WALLET #include -#include #endif +#include #include @@ -65,6 +65,8 @@ bool AppInit(int argc, char* argv[]) #if ENABLE_WALLET g_wallet_init_interface.reset(new WalletInit); +#else + g_wallet_init_interface.reset(new DummyWalletInit); #endif // diff --git a/src/init.cpp b/src/init.cpp index cee1eeaf17d..0d83cd9035a 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -188,9 +188,7 @@ void Shutdown() StopREST(); StopRPC(); StopHTTPServer(); - if (g_wallet_init_interface) { - g_wallet_init_interface->Flush(); - } + g_wallet_init_interface->Flush(); StopMapPort(); // Because these depend on each-other, we make sure that neither can be @@ -248,9 +246,7 @@ void Shutdown() pcoinsdbview.reset(); pblocktree.reset(); } - if (g_wallet_init_interface) { - g_wallet_init_interface->Stop(); - } + g_wallet_init_interface->Stop(); #if ENABLE_ZMQ if (pzmqNotificationInterface) { @@ -270,9 +266,7 @@ void Shutdown() UnregisterAllValidationInterfaces(); GetMainSignals().UnregisterBackgroundSignalScheduler(); GetMainSignals().UnregisterWithMempoolSignals(mempool); - if (g_wallet_init_interface) { - g_wallet_init_interface->Close(); - } + g_wallet_init_interface->Close(); g_wallet_init_interface.reset(); globalVerifyHandle.reset(); ECC_Stop(); @@ -415,9 +409,7 @@ std::string HelpMessage(HelpMessageMode mode) strUsage += HelpMessageOpt("-whitelist=", _("Whitelist peers connecting from the given IP address (e.g. 1.2.3.4) or CIDR notated network (e.g. 1.2.3.0/24). Can be specified multiple times.") + " " + _("Whitelisted peers cannot be DoS banned and their transactions are always relayed, even if they are already in the mempool, useful e.g. for a gateway")); - if (g_wallet_init_interface) { - strUsage += g_wallet_init_interface->GetHelpString(showDebug); - } + strUsage += g_wallet_init_interface->GetHelpString(showDebug); #if ENABLE_ZMQ strUsage += HelpMessageGroup(_("ZeroMQ notification options:")); @@ -1091,7 +1083,7 @@ bool AppInitParameterInteraction() return InitError(strprintf("acceptnonstdtxn is not currently supported for %s chain", chainparams.NetworkIDString())); nBytesPerSigOp = gArgs.GetArg("-bytespersigop", nBytesPerSigOp); - if (g_wallet_init_interface && !g_wallet_init_interface->ParameterInteraction()) return false; + if (!g_wallet_init_interface->ParameterInteraction()) return false; fIsBareMultisigStd = gArgs.GetBoolArg("-permitbaremultisig", DEFAULT_PERMIT_BAREMULTISIG); fAcceptDatacarrier = gArgs.GetBoolArg("-datacarrier", DEFAULT_ACCEPT_DATACARRIER); @@ -1254,9 +1246,7 @@ bool AppInitMain() * available in the GUI RPC console even if external calls are disabled. */ RegisterAllCoreRPCCommands(tableRPC); - if (g_wallet_init_interface) { - g_wallet_init_interface->RegisterRPC(tableRPC); - } + g_wallet_init_interface->RegisterRPC(tableRPC); /* Start the RPC server already. It will be started in "warmup" mode * and not really process calls already (but it will signify connections @@ -1273,7 +1263,7 @@ bool AppInitMain() int64_t nStart; // ********************************************************* Step 5: verify wallet database integrity - if (g_wallet_init_interface && !g_wallet_init_interface->Verify()) return false; + if (!g_wallet_init_interface->Verify()) return false; // ********************************************************* Step 6: network initialization // Note that we absolutely cannot open any actual connections @@ -1592,7 +1582,7 @@ bool AppInitMain() fFeeEstimatesInitialized = true; // ********************************************************* Step 8: load wallet - if (g_wallet_init_interface && !g_wallet_init_interface->Open()) return false; + if (!g_wallet_init_interface->Open()) return false; // ********************************************************* Step 9: data directory maintenance @@ -1738,9 +1728,7 @@ bool AppInitMain() SetRPCWarmupFinished(); uiInterface.InitMessage(_("Done loading")); - if (g_wallet_init_interface) { - g_wallet_init_interface->Start(scheduler); - } + g_wallet_init_interface->Start(scheduler); return true; } diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp index e6a2af5f6c3..cb2e6aac950 100644 --- a/src/qt/bitcoin.cpp +++ b/src/qt/bitcoin.cpp @@ -35,8 +35,8 @@ #ifdef ENABLE_WALLET #include #include -#include #endif +#include #include @@ -674,6 +674,8 @@ int main(int argc, char *argv[]) // Hook up the wallet init interface g_wallet_init_interface.reset(new WalletInit); +#else + g_wallet_init_interface.reset(new DummyWalletInit); #endif /// 9. Main GUI initialization diff --git a/src/walletinitinterface.h b/src/walletinitinterface.h index 95c51a4f49f..47e4e2cce1b 100644 --- a/src/walletinitinterface.h +++ b/src/walletinitinterface.h @@ -34,4 +34,18 @@ public: virtual ~WalletInitInterface() {} }; +class DummyWalletInit : public WalletInitInterface { +public: + + std::string GetHelpString(bool showDebug) override {return std::string{};} + bool ParameterInteraction() override {return true;} + void RegisterRPC(CRPCTable &) override {} + bool Verify() override {return true;} + bool Open() override {return true;} + void Start(CScheduler& scheduler) override {} + void Flush() override {} + void Stop() override {} + void Close() override {} +}; + #endif // WALLETINITINTERFACE_H