Skip to content

Commit 325baaa

Browse files
committed
RPC: Do all wallet access through new GetWalletForJSONRPCRequest
>>> inspired by bitcoin/bitcoin@d77ad6d currently pwalletMain local variables shadow the global. These will be renamed to pwallet in the next commit (kept separate for ease of review)
1 parent 0e21e09 commit 325baaa

File tree

9 files changed

+196
-13
lines changed

9 files changed

+196
-13
lines changed

src/rpc/budget.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,8 @@ void checkBudgetInputs(const UniValue& params, std::string &strProposalName, std
9797

9898
UniValue preparebudget(const JSONRPCRequest& request)
9999
{
100+
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);
101+
100102
if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
101103
return NullUniValue;
102104

src/rpc/masternode.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,11 @@ UniValue startmasternode(const JSONRPCRequest& request)
355355
throw JSONRPCError(RPC_MISC_ERROR, "startmasternode is not supported when deterministic masternode list is active (DIP3)");
356356
}
357357

358+
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);
359+
360+
if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
361+
return NullUniValue;
362+
358363
std::string strCommand;
359364
if (request.params.size() >= 1) {
360365
strCommand = request.params[0].get_str();
@@ -512,6 +517,11 @@ UniValue createmasternodekey (const JSONRPCRequest& request)
512517

513518
UniValue getmasternodeoutputs (const JSONRPCRequest& request)
514519
{
520+
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);
521+
522+
if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
523+
return NullUniValue;
524+
515525
if (request.fHelp || (request.params.size() != 0))
516526
throw std::runtime_error(
517527
"getmasternodeoutputs\n"
@@ -807,6 +817,8 @@ bool DecodeHexMnb(CMasternodeBroadcast& mnb, std::string strHexMnb) {
807817
}
808818
UniValue createmasternodebroadcast(const JSONRPCRequest& request)
809819
{
820+
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);
821+
810822
if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
811823
return NullUniValue;
812824

src/rpc/mining.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@ UniValue generateBlocks(const Consensus::Params& consensus,
7676

7777
UniValue generate(const JSONRPCRequest& request)
7878
{
79+
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);
80+
7981
if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
8082
return NullUniValue;
8183

@@ -276,6 +278,8 @@ UniValue getgenerate(const JSONRPCRequest& request)
276278

277279
UniValue setgenerate(const JSONRPCRequest& request)
278280
{
281+
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);
282+
279283
if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
280284
return NullUniValue;
281285

@@ -442,6 +446,8 @@ static UniValue BIP22ValidationResult(const CValidationState& state)
442446
#ifdef ENABLE_MINING_RPC
443447
UniValue getblocktemplate(const JSONRPCRequest& request)
444448
{
449+
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);
450+
445451
if (request.fHelp || request.params.size() > 1)
446452
throw std::runtime_error(
447453
"getblocktemplate ( \"jsonrequestobject\" )\n"

src/rpc/misc.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ UniValue getsupplyinfo(const JSONRPCRequest& request);
4747
**/
4848
UniValue getinfo(const JSONRPCRequest& request)
4949
{
50+
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);
51+
5052
if (request.fHelp || request.params.size() != 0)
5153
throw std::runtime_error(
5254
"getinfo\n"
@@ -376,6 +378,8 @@ class DescribePaymentAddressVisitor : public boost::static_visitor<UniValue>
376378

377379
UniValue validateaddress(const JSONRPCRequest& request)
378380
{
381+
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);
382+
379383
if (request.fHelp || request.params.size() != 1)
380384
throw std::runtime_error(
381385
"validateaddress \"pivxaddress\"\n"
@@ -502,6 +506,8 @@ CScript _createmultisig_redeemScript(CWallet * const pwallet, const UniValue& pa
502506

503507
UniValue createmultisig(const JSONRPCRequest& request)
504508
{
509+
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);
510+
505511
if (request.fHelp || request.params.size() < 2 || request.params.size() > 2)
506512
throw std::runtime_error(
507513
"createmultisig nrequired [\"key\",...]\n"

src/rpc/rawtransaction.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,8 @@ UniValue getrawtransaction(const JSONRPCRequest& request)
253253

254254
UniValue result(UniValue::VOBJ);
255255
if (blockindex) result.pushKV("in_active_chain", in_active_chain);
256-
TxToJSON(pwalletMain, *tx, hash_block, result);
256+
CWallet * const pwallet = GetWalletForJSONRPCRequest(request);
257+
TxToJSON(pwallet, *tx, hash_block, result);
257258
return result;
258259
}
259260

@@ -421,7 +422,8 @@ UniValue decoderawtransaction(const JSONRPCRequest& request)
421422
throw JSONRPCError(RPC_DESERIALIZATION_ERROR, "TX decode failed");
422423

423424
UniValue result(UniValue::VOBJ);
424-
TxToJSON(pwalletMain, CTransaction(std::move(mtx)), UINT256_ZERO, result);
425+
CWallet * const pwallet = GetWalletForJSONRPCRequest(request);
426+
TxToJSON(pwallet, CTransaction(std::move(mtx)), UINT256_ZERO, result);
425427

426428
return result;
427429
}

src/rpc/rpcevo.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -375,6 +375,8 @@ static ProRegPL ParseProRegPLParams(const UniValue& params, unsigned int paramId
375375
// handles protx_register, and protx_register_prepare
376376
static UniValue ProTxRegister(const JSONRPCRequest& request, bool fSignAndSend)
377377
{
378+
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);
379+
378380
if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
379381
return NullUniValue;
380382

@@ -493,6 +495,8 @@ UniValue protx_register_prepare(const JSONRPCRequest& request)
493495

494496
UniValue protx_register_submit(const JSONRPCRequest& request)
495497
{
498+
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);
499+
496500
if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
497501
return NullUniValue;
498502

@@ -541,6 +545,8 @@ UniValue protx_register_submit(const JSONRPCRequest& request)
541545

542546
UniValue protx_register_fund(const JSONRPCRequest& request)
543547
{
548+
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);
549+
544550
if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
545551
return NullUniValue;
546552

@@ -706,7 +712,7 @@ UniValue protx_list(const JSONRPCRequest& request)
706712
CheckEvoUpgradeEnforcement();
707713

708714
#ifdef ENABLE_WALLET
709-
CWallet* const pwallet = pwalletMain;
715+
CWallet* const pwallet = GetWalletForJSONRPCRequest(request);
710716
#else
711717
CWallet* const pwallet = nullptr;
712718
#endif

src/rpc/server.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,7 @@ class CWallet;
202202

203203
#ifdef ENABLE_WALLET
204204
// New code should accessing the wallet should be under the ../wallet/ directory
205+
CWallet* GetWalletForJSONRPCRequest(const JSONRPCRequest& request);
205206
std::string HelpRequiringPassphrase(CWallet* const pwallet);
206207
bool EnsureWalletIsAvailable(CWallet* const pwallet, bool avoidException);
207208
void EnsureWalletIsUnlocked(CWallet *pwallet, bool fAllowAnonOnly = false);

src/wallet/rpcdump.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@ bool IsStakingDerPath(KeyOriginInfo keyOrigin)
7676

7777
UniValue importprivkey(const JSONRPCRequest& request)
7878
{
79+
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);
80+
7981
if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
8082
return NullUniValue;
8183

@@ -149,6 +151,8 @@ UniValue importprivkey(const JSONRPCRequest& request)
149151

150152
UniValue abortrescan(const JSONRPCRequest& request)
151153
{
154+
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);
155+
152156
if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
153157
return NullUniValue;
154158

@@ -201,6 +205,8 @@ static void ImportAddress(CWallet* const pwallet, const CTxDestination& dest, co
201205

202206
UniValue importaddress(const JSONRPCRequest& request)
203207
{
208+
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);
209+
204210
if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
205211
return NullUniValue;
206212

@@ -266,6 +272,8 @@ UniValue importaddress(const JSONRPCRequest& request)
266272

267273
UniValue importpubkey(const JSONRPCRequest& request)
268274
{
275+
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);
276+
269277
if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
270278
return NullUniValue;
271279

@@ -321,6 +329,8 @@ UniValue importpubkey(const JSONRPCRequest& request)
321329
// TODO: Needs further review over the HD flow, staking addresses and multisig import.
322330
UniValue importwallet(const JSONRPCRequest& request)
323331
{
332+
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);
333+
324334
if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
325335
return NullUniValue;
326336

@@ -446,6 +456,8 @@ UniValue importwallet(const JSONRPCRequest& request)
446456

447457
UniValue dumpprivkey(const JSONRPCRequest& request)
448458
{
459+
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);
460+
449461
if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
450462
return NullUniValue;
451463

@@ -484,6 +496,8 @@ UniValue dumpprivkey(const JSONRPCRequest& request)
484496

485497
UniValue dumpwallet(const JSONRPCRequest& request)
486498
{
499+
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);
500+
487501
if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
488502
return NullUniValue;
489503

@@ -943,6 +957,8 @@ static int64_t GetImportTimestamp(const UniValue& data, int64_t now)
943957

944958
UniValue importmulti(const JSONRPCRequest& mainRequest)
945959
{
960+
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(mainRequest);
961+
946962
if (!EnsureWalletIsAvailable(pwalletMain, mainRequest.fHelp))
947963
return NullUniValue;
948964

@@ -1097,6 +1113,8 @@ UniValue importmulti(const JSONRPCRequest& mainRequest)
10971113

10981114
UniValue bip38encrypt(const JSONRPCRequest& request)
10991115
{
1116+
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);
1117+
11001118
if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
11011119
return NullUniValue;
11021120

@@ -1146,6 +1164,8 @@ UniValue bip38encrypt(const JSONRPCRequest& request)
11461164

11471165
UniValue bip38decrypt(const JSONRPCRequest& request)
11481166
{
1167+
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);
1168+
11491169
if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
11501170
return NullUniValue;
11511171

@@ -1220,6 +1240,8 @@ UniValue bip38decrypt(const JSONRPCRequest& request)
12201240

12211241
UniValue importsaplingkey(const JSONRPCRequest& request)
12221242
{
1243+
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);
1244+
12231245
if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
12241246
return NullUniValue;
12251247

@@ -1320,6 +1342,8 @@ UniValue importsaplingkey(const JSONRPCRequest& request)
13201342

13211343
UniValue importsaplingviewingkey(const JSONRPCRequest& request)
13221344
{
1345+
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);
1346+
13231347
if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
13241348
return NullUniValue;
13251349

@@ -1424,6 +1448,8 @@ UniValue importsaplingviewingkey(const JSONRPCRequest& request)
14241448

14251449
UniValue exportsaplingviewingkey(const JSONRPCRequest& request)
14261450
{
1451+
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);
1452+
14271453
if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
14281454
return NullUniValue;
14291455

@@ -1465,6 +1491,8 @@ UniValue exportsaplingviewingkey(const JSONRPCRequest& request)
14651491

14661492
UniValue exportsaplingkey(const JSONRPCRequest& request)
14671493
{
1494+
CWallet * const pwalletMain = GetWalletForJSONRPCRequest(request);
1495+
14681496
if (!EnsureWalletIsAvailable(pwalletMain, request.fHelp))
14691497
return NullUniValue;
14701498

0 commit comments

Comments
 (0)