aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/bitcoind.cpp2
-rw-r--r--src/init.cpp6
-rw-r--r--src/init.h4
-rw-r--r--src/interfaces/node.cpp2
-rw-r--r--src/node/context.h2
-rw-r--r--src/test/util/setup_common.cpp1
-rw-r--r--src/test/util/setup_common.h3
7 files changed, 14 insertions, 6 deletions
diff --git a/src/bitcoind.cpp b/src/bitcoind.cpp
index f26eb45fce..bf444dd0bc 100644
--- a/src/bitcoind.cpp
+++ b/src/bitcoind.cpp
@@ -53,7 +53,7 @@ static bool AppInit(int argc, char* argv[])
// Parameters
//
// If Qt is used, parameters/bitcoin.conf are parsed in qt/bitcoin.cpp's main()
- SetupServerArgs();
+ SetupServerArgs(node);
std::string error;
if (!gArgs.ParseParameters(argc, argv, error)) {
return InitError(strprintf("Error parsing command line arguments: %s\n", error));
diff --git a/src/init.cpp b/src/init.cpp
index de2db694fd..de32c0ad71 100644
--- a/src/init.cpp
+++ b/src/init.cpp
@@ -297,6 +297,7 @@ void Shutdown(NodeContext& node)
GetMainSignals().UnregisterBackgroundSignalScheduler();
globalVerifyHandle.reset();
ECC_Stop();
+ node.args = nullptr;
if (node.mempool) node.mempool = nullptr;
node.scheduler.reset();
@@ -360,8 +361,11 @@ static void OnRPCStopped()
LogPrint(BCLog::RPC, "RPC stopped.\n");
}
-void SetupServerArgs()
+void SetupServerArgs(NodeContext& node)
{
+ assert(!node.args);
+ node.args = &gArgs;
+
SetupHelpOptions(gArgs);
gArgs.AddArg("-help-debug", "Print help message with debugging options and exit", ArgsManager::ALLOW_ANY, OptionsCategory::DEBUG_TEST); // server-only for now
diff --git a/src/init.h b/src/init.h
index f74ae5a47a..0c44035b00 100644
--- a/src/init.h
+++ b/src/init.h
@@ -54,9 +54,9 @@ bool AppInitLockDataDirectory();
bool AppInitMain(NodeContext& node);
/**
- * Setup the arguments for gArgs
+ * Register all arguments with the ArgsManager
*/
-void SetupServerArgs();
+void SetupServerArgs(NodeContext& node);
/** Returns licensing information (for -version) */
std::string LicenseInfo();
diff --git a/src/interfaces/node.cpp b/src/interfaces/node.cpp
index 6e5fdc61b5..5ebbd61584 100644
--- a/src/interfaces/node.cpp
+++ b/src/interfaces/node.cpp
@@ -97,7 +97,7 @@ public:
StopMapPort();
}
}
- void setupServerArgs() override { return SetupServerArgs(); }
+ void setupServerArgs() override { return SetupServerArgs(m_context); }
bool getProxy(Network net, proxyType& proxy_info) override { return GetProxy(net, proxy_info); }
size_t getNodeCount(CConnman::NumConnections flags) override
{
diff --git a/src/node/context.h b/src/node/context.h
index 1c592b456b..7b6dd37361 100644
--- a/src/node/context.h
+++ b/src/node/context.h
@@ -8,6 +8,7 @@
#include <memory>
#include <vector>
+class ArgsManager;
class BanMan;
class CConnman;
class CScheduler;
@@ -33,6 +34,7 @@ struct NodeContext {
CTxMemPool* mempool{nullptr}; // Currently a raw pointer because the memory is not managed by this struct
std::unique_ptr<PeerLogicValidation> peer_logic;
std::unique_ptr<BanMan> banman;
+ ArgsManager* args{nullptr}; // Currently a raw pointer because the memory is not managed by this struct
std::unique_ptr<interfaces::Chain> chain;
std::vector<std::unique_ptr<interfaces::ChainClient>> chain_clients;
std::unique_ptr<CScheduler> scheduler;
diff --git a/src/test/util/setup_common.cpp b/src/test/util/setup_common.cpp
index 32d50e49b9..b49e2a56d0 100644
--- a/src/test/util/setup_common.cpp
+++ b/src/test/util/setup_common.cpp
@@ -159,6 +159,7 @@ TestingSetup::~TestingSetup()
g_rpc_node = nullptr;
m_node.connman.reset();
m_node.banman.reset();
+ m_node.args = nullptr;
m_node.mempool = nullptr;
m_node.scheduler.reset();
UnloadBlockIndex();
diff --git a/src/test/util/setup_common.h b/src/test/util/setup_common.h
index 0930309c3a..41547c8b3a 100644
--- a/src/test/util/setup_common.h
+++ b/src/test/util/setup_common.h
@@ -73,9 +73,11 @@ static constexpr CAmount CENT{1000000};
*/
struct BasicTestingSetup {
ECCVerifyHandle globalVerifyHandle;
+ NodeContext m_node;
explicit BasicTestingSetup(const std::string& chainName = CBaseChainParams::MAIN);
~BasicTestingSetup();
+
private:
const fs::path m_path_root;
};
@@ -84,7 +86,6 @@ private:
* Included are coins database, script check threads setup.
*/
struct TestingSetup : public BasicTestingSetup {
- NodeContext m_node;
boost::thread_group threadGroup;
explicit TestingSetup(const std::string& chainName = CBaseChainParams::MAIN);