From 6f4da19cc3b1b7cd23cb4be95a6bb9acb79eb3bf Mon Sep 17 00:00:00 2001 From: glozow Date: Wed, 13 Mar 2024 11:25:24 +0000 Subject: [PATCH] guard against MempoolAcceptResult::m_replaced_transactions It should never be a nullopt when the transaction result is valid - Assume() this is the case. However, as a belt-and-suspenders just in case it is nullopt, use an empty list. --- src/net_processing.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/net_processing.cpp b/src/net_processing.cpp index 39ffff97d2..07ac1cfec7 100644 --- a/src/net_processing.cpp +++ b/src/net_processing.cpp @@ -4354,7 +4354,9 @@ void PeerManagerImpl::ProcessMessage(CNode& pfrom, const std::string& msg_type, const TxValidationState& state = result.m_state; if (result.m_result_type == MempoolAcceptResult::ResultType::VALID) { - ProcessValidTx(pfrom.GetId(), ptx, result.m_replaced_transactions.value()); + Assume(result.m_replaced_transactions.has_value()); + std::list empty_replacement_list; + ProcessValidTx(pfrom.GetId(), ptx, result.m_replaced_transactions.value_or(empty_replacement_list)); pfrom.m_last_tx_time = GetTime(); } else if (state.GetResult() == TxValidationResult::TX_MISSING_INPUTS)