diff --git a/src/net_processing.cpp b/src/net_processing.cpp index eca6263392c..80a5098f61e 100644 --- a/src/net_processing.cpp +++ b/src/net_processing.cpp @@ -590,7 +590,7 @@ private: bool MaybeDiscourageAndDisconnect(CNode& pnode, Peer& peer); void ProcessOrphanTx(std::set& orphan_work_set) EXCLUSIVE_LOCKS_REQUIRED(cs_main, g_cs_orphans) - EXCLUSIVE_LOCKS_REQUIRED(!m_peer_mutex); + EXCLUSIVE_LOCKS_REQUIRED(!m_peer_mutex, g_msgproc_mutex); /** Process a single headers message from a peer. * * @param[in] pfrom CNode of the peer @@ -924,14 +924,14 @@ private: /** Storage for orphan information */ TxOrphanage m_orphanage; - void AddToCompactExtraTransactions(const CTransactionRef& tx) EXCLUSIVE_LOCKS_REQUIRED(g_cs_orphans); + void AddToCompactExtraTransactions(const CTransactionRef& tx) EXCLUSIVE_LOCKS_REQUIRED(g_msgproc_mutex); /** Orphan/conflicted/etc transactions that are kept for compact block reconstruction. * The last -blockreconstructionextratxn/DEFAULT_BLOCK_RECONSTRUCTION_EXTRA_TXN of * these are kept in a ring buffer */ - std::vector> vExtraTxnForCompact GUARDED_BY(g_cs_orphans); + std::vector> vExtraTxnForCompact GUARDED_BY(g_msgproc_mutex); /** Offset into vExtraTxnForCompact to insert the next tx */ - size_t vExtraTxnForCompactIt GUARDED_BY(g_cs_orphans) = 0; + size_t vExtraTxnForCompactIt GUARDED_BY(g_msgproc_mutex) = 0; /** Check whether the last unknown block a peer advertised is not yet known. */ void ProcessBlockAvailability(NodeId nodeid) EXCLUSIVE_LOCKS_REQUIRED(cs_main); @@ -2885,6 +2885,7 @@ void PeerManagerImpl::ProcessHeadersMessage(CNode& pfrom, Peer& peer, */ void PeerManagerImpl::ProcessOrphanTx(std::set& orphan_work_set) { + AssertLockHeld(g_msgproc_mutex); AssertLockHeld(cs_main); AssertLockHeld(g_cs_orphans); diff --git a/src/txorphanage.h b/src/txorphanage.h index 9363e6f7336..92f4319d7d3 100644 --- a/src/txorphanage.h +++ b/src/txorphanage.h @@ -10,7 +10,7 @@ #include #include -/** Guards orphan transactions and extra txs for compact blocks */ +/** Guards orphan transactions */ extern RecursiveMutex g_cs_orphans; /** A class to track orphan transactions (failed on TX_MISSING_INPUTS)