Skip to content

Commit 1020356

Browse files
committed
merge bitcoin#24812: Add CHECK_NONFATAL identity function and NONFATAL_UNREACHABLE macro
1 parent 1caaa85 commit 1020356

File tree

13 files changed

+110
-144
lines changed

13 files changed

+110
-144
lines changed

src/rpc/blockchain.cpp

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
#include <sync.h>
4040
#include <txmempool.h>
4141
#include <undo.h>
42+
#include <util/check.h>
4243
#include <util/strencodings.h>
4344
#include <util/string.h>
4445
#include <util/system.h>
@@ -1359,8 +1360,7 @@ static RPCHelpMan pruneblockchain()
13591360
}
13601361

13611362
PruneBlockFilesManual(active_chainstate, height);
1362-
const CBlockIndex* block = active_chain.Tip();
1363-
CHECK_NONFATAL(block);
1363+
const CBlockIndex* block = CHECK_NONFATAL(active_chain.Tip());
13641364
while (block->pprev && (block->pprev->nStatus & BLOCK_HAVE_DATA)) {
13651365
block = block->pprev;
13661366
}
@@ -1635,14 +1635,13 @@ static RPCHelpMan verifychain()
16351635
const int check_depth{request.params[1].isNull() ? DEFAULT_CHECKBLOCKS : request.params[1].get_int()};
16361636

16371637
const NodeContext& node = EnsureAnyNodeContext(request.context);
1638-
CHECK_NONFATAL(node.evodb);
16391638

16401639
ChainstateManager& chainman = EnsureChainman(node);
16411640
LOCK(cs_main);
16421641

16431642
CChainState& active_chainstate = chainman.ActiveChainstate();
16441643
return CVerifyDB().VerifyDB(
1645-
active_chainstate, Params(), active_chainstate.CoinsTip(), *node.evodb, check_level, check_depth);
1644+
active_chainstate, Params(), active_chainstate.CoinsTip(), *CHECK_NONFATAL(node.evodb), check_level, check_depth);
16461645
},
16471646
};
16481647
}
@@ -1782,13 +1781,11 @@ RPCHelpMan getblockchaininfo()
17821781

17831782
LOCK(cs_main);
17841783
CChainState& active_chainstate = chainman.ActiveChainstate();
1785-
const CBlockIndex* tip = active_chainstate.m_chain.Tip();
17861784

1787-
CHECK_NONFATAL(tip);
1785+
const CBlockIndex* tip = CHECK_NONFATAL(active_chainstate.m_chain.Tip());
17881786
const int height = tip->nHeight;
17891787

1790-
CHECK_NONFATAL(node.mnhf_manager);
1791-
const auto ehfSignals = node.mnhf_manager->GetSignalsStage(tip);
1788+
const auto ehfSignals = CHECK_NONFATAL(node.mnhf_manager)->GetSignalsStage(tip);
17921789

17931790
UniValue obj(UniValue::VOBJ);
17941791
if (args.IsArgSet("-devnet")) {
@@ -1808,8 +1805,7 @@ RPCHelpMan getblockchaininfo()
18081805
obj.pushKV("size_on_disk", chainman.m_blockman.CalculateCurrentUsage());
18091806
obj.pushKV("pruned", fPruneMode);
18101807
if (fPruneMode) {
1811-
const CBlockIndex* block = tip;
1812-
CHECK_NONFATAL(block);
1808+
const CBlockIndex* block = CHECK_NONFATAL(tip);
18131809
while (block->pprev && (block->pprev->nStatus & BLOCK_HAVE_DATA)) {
18141810
block = block->pprev;
18151811
}
@@ -2863,10 +2859,8 @@ static RPCHelpMan scantxoutset()
28632859
LOCK(cs_main);
28642860
CChainState& active_chainstate = chainman.ActiveChainstate();
28652861
active_chainstate.ForceFlushStateToDisk();
2866-
pcursor = active_chainstate.CoinsDB().Cursor();
2867-
CHECK_NONFATAL(pcursor);
2868-
tip = active_chainstate.m_chain.Tip();
2869-
CHECK_NONFATAL(tip);
2862+
pcursor = CHECK_NONFATAL(active_chainstate.CoinsDB().Cursor());
2863+
tip = CHECK_NONFATAL(active_chainstate.m_chain.Tip());
28702864
}
28712865
bool res = FindScriptPubKey(g_scan_progress, g_should_abort_scan, count, pcursor.get(), needles, coins, node.rpc_interruption_point);
28722866
result.pushKV("success", res);
@@ -3061,8 +3055,7 @@ UniValue CreateUTXOSnapshot(NodeContext& node, CChainState& chainstate, CAutoFil
30613055
}
30623056

30633057
pcursor = chainstate.CoinsDB().Cursor();
3064-
tip = chainstate.m_blockman.LookupBlockIndex(stats.hashBlock);
3065-
CHECK_NONFATAL(tip);
3058+
tip = CHECK_NONFATAL(chainstate.m_blockman.LookupBlockIndex(stats.hashBlock));
30663059
}
30673060

30683061
SnapshotMetadata metadata{tip->GetBlockHash(), stats.coins_count, tip->nChainTx};

src/rpc/coinjoin.cpp

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include <rpc/blockchain.h>
1010
#include <rpc/server.h>
1111
#include <rpc/server_util.h>
12+
#include <util/check.h>
1213
#include <rpc/util.h>
1314
#include <util/strencodings.h>
1415

@@ -83,11 +84,8 @@ static RPCHelpMan coinjoin_reset()
8384

8485
ValidateCoinJoinArguments();
8586

86-
CHECK_NONFATAL(node.coinjoin_loader);
87-
auto cj_clientman = node.coinjoin_loader->walletman().Get(wallet->GetName());
88-
89-
CHECK_NONFATAL(cj_clientman);
90-
cj_clientman->ResetPool();
87+
auto cj_clientman = CHECK_NONFATAL(node.coinjoin_loader)->walletman().Get(wallet->GetName());
88+
CHECK_NONFATAL(cj_clientman)->ResetPool();
9189

9290
return "Mixing was reset";
9391
},
@@ -126,10 +124,7 @@ static RPCHelpMan coinjoin_start()
126124
throw JSONRPCError(RPC_WALLET_UNLOCK_NEEDED, "Error: Please unlock wallet for mixing with walletpassphrase first.");
127125
}
128126

129-
CHECK_NONFATAL(node.coinjoin_loader);
130-
auto cj_clientman = node.coinjoin_loader->walletman().Get(wallet->GetName());
131-
132-
CHECK_NONFATAL(cj_clientman);
127+
auto cj_clientman = CHECK_NONFATAL(CHECK_NONFATAL(node.coinjoin_loader)->walletman().Get(wallet->GetName()));
133128
if (!cj_clientman->StartMixing()) {
134129
throw JSONRPCError(RPC_INTERNAL_ERROR, "Mixing has been started already.");
135130
}
@@ -450,8 +445,7 @@ static RPCHelpMan getcoinjoininfo()
450445
return obj;
451446
}
452447

453-
auto manager = node.coinjoin_loader->walletman().Get(wallet->GetName());
454-
CHECK_NONFATAL(manager != nullptr);
448+
auto* manager = CHECK_NONFATAL(node.coinjoin_loader->walletman().Get(wallet->GetName()));
455449
manager->GetJsonInfo(obj);
456450

457451
std::string warning_msg{""};

src/rpc/evo.cpp

Lines changed: 16 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
#include <rpc/server.h>
2727
#include <rpc/server_util.h>
2828
#include <rpc/util.h>
29+
#include <util/check.h>
2930
#include <util/moneystr.h>
3031
#include <util/translation.h>
3132
#include <validation.h>
@@ -628,8 +629,7 @@ static UniValue protx_register_common_wrapper(const JSONRPCRequest& request,
628629
const NodeContext& node = EnsureAnyNodeContext(request.context);
629630
const ChainstateManager& chainman = EnsureChainman(node);
630631

631-
CHECK_NONFATAL(node.chain_helper);
632-
CChainstateHelper& chain_helper = *node.chain_helper;
632+
CChainstateHelper& chain_helper = *CHECK_NONFATAL(node.chain_helper);
633633

634634
const bool isEvoRequested = mnType == MnType::Evo;
635635

@@ -855,8 +855,7 @@ static RPCHelpMan protx_register_submit()
855855
const NodeContext& node = EnsureAnyNodeContext(request.context);
856856
const ChainstateManager& chainman = EnsureChainman(node);
857857

858-
CHECK_NONFATAL(node.chain_helper);
859-
CChainstateHelper& chain_helper = *node.chain_helper;
858+
CChainstateHelper& chain_helper = *CHECK_NONFATAL(node.chain_helper);
860859

861860
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
862861
if (!wallet) return NullUniValue;
@@ -954,11 +953,8 @@ static UniValue protx_update_service_common_wrapper(const JSONRPCRequest& reques
954953
const NodeContext& node = EnsureAnyNodeContext(request.context);
955954
const ChainstateManager& chainman = EnsureChainman(node);
956955

957-
CHECK_NONFATAL(node.dmnman);
958-
CDeterministicMNManager& dmnman = *node.dmnman;
959-
960-
CHECK_NONFATAL(node.chain_helper);
961-
CChainstateHelper& chain_helper = *node.chain_helper;
956+
CDeterministicMNManager& dmnman = *CHECK_NONFATAL(node.dmnman);
957+
CChainstateHelper& chain_helper = *CHECK_NONFATAL(node.chain_helper);
962958

963959
const bool isEvoRequested = mnType == MnType::Evo;
964960
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
@@ -1092,11 +1088,8 @@ static RPCHelpMan protx_update_registrar_wrapper(bool specific_legacy_bls_scheme
10921088
const NodeContext& node = EnsureAnyNodeContext(request.context);
10931089
const ChainstateManager& chainman = EnsureChainman(node);
10941090

1095-
CHECK_NONFATAL(node.dmnman);
1096-
CDeterministicMNManager& dmnman = *node.dmnman;
1097-
1098-
CHECK_NONFATAL(node.chain_helper);
1099-
CChainstateHelper& chain_helper = *node.chain_helper;
1091+
CDeterministicMNManager& dmnman = *CHECK_NONFATAL(node.dmnman);
1092+
CChainstateHelper& chain_helper = *CHECK_NONFATAL(node.chain_helper);
11001093

11011094
std::shared_ptr<CWallet> const wallet = GetWalletForJSONRPCRequest(request);
11021095
if (!wallet) return NullUniValue;
@@ -1207,12 +1200,8 @@ static RPCHelpMan protx_revoke()
12071200
const NodeContext& node = EnsureAnyNodeContext(request.context);
12081201
const ChainstateManager& chainman = EnsureChainman(node);
12091202

1210-
CHECK_NONFATAL(node.dmnman);
1211-
CDeterministicMNManager& dmnman = *node.dmnman;
1212-
1213-
CHECK_NONFATAL(node.chain_helper);
1214-
CChainstateHelper& chain_helper = *node.chain_helper;
1215-
1203+
CDeterministicMNManager& dmnman = *CHECK_NONFATAL(node.dmnman);
1204+
CChainstateHelper& chain_helper = *CHECK_NONFATAL(node.chain_helper);
12161205

12171206
std::shared_ptr<CWallet> const pwallet = GetWalletForJSONRPCRequest(request);
12181207
if (!pwallet) return NullUniValue;
@@ -1370,11 +1359,8 @@ static RPCHelpMan protx_list()
13701359
const NodeContext& node = EnsureAnyNodeContext(request.context);
13711360
const ChainstateManager& chainman = EnsureChainman(node);
13721361

1373-
CHECK_NONFATAL(node.dmnman);
1374-
CDeterministicMNManager& dmnman = *node.dmnman;
1375-
1376-
CHECK_NONFATAL(node.mn_metaman);
1377-
CMasternodeMetaMan& mn_metaman = *node.mn_metaman;
1362+
CDeterministicMNManager& dmnman = *CHECK_NONFATAL(node.dmnman);
1363+
CMasternodeMetaMan& mn_metaman = *CHECK_NONFATAL(node.mn_metaman);
13781364

13791365
std::shared_ptr<CWallet> wallet{nullptr};
13801366
#ifdef ENABLE_WALLET
@@ -1486,11 +1472,8 @@ static RPCHelpMan protx_info()
14861472
const NodeContext& node = EnsureAnyNodeContext(request.context);
14871473
const ChainstateManager& chainman = EnsureChainman(node);
14881474

1489-
CHECK_NONFATAL(node.dmnman);
1490-
CDeterministicMNManager& dmnman = *node.dmnman;
1491-
1492-
CHECK_NONFATAL(node.mn_metaman);
1493-
CMasternodeMetaMan& mn_metaman = *node.mn_metaman;
1475+
CDeterministicMNManager& dmnman = *CHECK_NONFATAL(node.dmnman);
1476+
CMasternodeMetaMan& mn_metaman = *CHECK_NONFATAL(node.mn_metaman);
14941477

14951478
std::shared_ptr<CWallet> wallet{nullptr};
14961479
#ifdef ENABLE_WALLET
@@ -1560,11 +1543,8 @@ static RPCHelpMan protx_diff()
15601543
const NodeContext& node = EnsureAnyNodeContext(request.context);
15611544
const ChainstateManager& chainman = EnsureChainman(node);
15621545

1563-
CHECK_NONFATAL(node.dmnman);
1564-
CDeterministicMNManager& dmnman = *node.dmnman;
1565-
1566-
CHECK_NONFATAL(node.llmq_ctx);
1567-
const LLMQContext& llmq_ctx = *node.llmq_ctx;
1546+
CDeterministicMNManager& dmnman = *CHECK_NONFATAL(node.dmnman);
1547+
const LLMQContext& llmq_ctx = *CHECK_NONFATAL(node.llmq_ctx);
15681548

15691549
LOCK(cs_main);
15701550
uint256 baseBlockHash = ParseBlock(request.params[0], chainman, "baseBlock");
@@ -1621,8 +1601,7 @@ static RPCHelpMan protx_listdiff()
16211601
const NodeContext& node = EnsureAnyNodeContext(request.context);
16221602
const ChainstateManager& chainman = EnsureChainman(node);
16231603

1624-
CHECK_NONFATAL(node.dmnman);
1625-
CDeterministicMNManager& dmnman = *node.dmnman;
1604+
CDeterministicMNManager& dmnman = *CHECK_NONFATAL(node.dmnman);
16261605

16271606
LOCK(cs_main);
16281607
UniValue ret(UniValue::VOBJ);

0 commit comments

Comments
 (0)