aboutsummaryrefslogtreecommitdiff
path: root/src/wallet/rpcwallet.h
diff options
context:
space:
mode:
authorRussell Yanofsky <russ@yanofsky.org>2019-09-17 19:05:26 -0400
committerRussell Yanofsky <russ@yanofsky.org>2019-10-28 10:30:51 -0400
commit362ded410b8cb1104b7ef31ff8488fec4824a7d5 (patch)
tree0ffc9c199a3b7adcb9957b19824bff8c0fe33bb0 /src/wallet/rpcwallet.h
parent8922d7f6b751a3e6b3b9f6fb7961c442877fb65a (diff)
downloadbitcoin-362ded410b8cb1104b7ef31ff8488fec4824a7d5.tar.xz
Avoid using g_rpc_node global in wallet code
Wallet code should use interfaces::Chain and not directly access to node state. Add a g_rpc_chain replacement global for wallet code to use, and move g_rpc_node definition to a libbitcoin_server source file so there are link errors if wallet code tries to access it.
Diffstat (limited to 'src/wallet/rpcwallet.h')
-rw-r--r--src/wallet/rpcwallet.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/wallet/rpcwallet.h b/src/wallet/rpcwallet.h
index 1c0523c90b..31d3f7a5f9 100644
--- a/src/wallet/rpcwallet.h
+++ b/src/wallet/rpcwallet.h
@@ -21,6 +21,12 @@ class Chain;
class Handler;
}
+//! Pointer to chain interface that needs to be declared as a global to be
+//! accessible loadwallet and createwallet methods. Due to limitations of the
+//! RPC framework, there's currently no direct way to pass in state to RPC
+//! methods without globals.
+extern interfaces::Chain* g_rpc_chain;
+
void RegisterWalletRPCCommands(interfaces::Chain& chain, std::vector<std::unique_ptr<interfaces::Handler>>& handlers);
/**