diff --git a/src/net_processing.cpp b/src/net_processing.cpp index 3c223e1ea4c..bbd24d80928 100644 --- a/src/net_processing.cpp +++ b/src/net_processing.cpp @@ -3076,7 +3076,7 @@ bool PeerManagerImpl::ProcessOrphanTx(Peer& peer) CTransactionRef porphanTx = nullptr; - while (CTransactionRef porphanTx = m_txdownloadman.GetOrphanageRef().GetTxToReconsider(peer.m_id)) { + while (CTransactionRef porphanTx = m_txdownloadman.GetTxToReconsider(peer.m_id)) { const MempoolAcceptResult result = m_chainman.ProcessTransaction(porphanTx); const TxValidationState& state = result.m_state; const Txid& orphanHash = porphanTx->GetHash(); @@ -5000,7 +5000,7 @@ bool PeerManagerImpl::ProcessMessages(CNode* pfrom, std::atomic& interrupt // the extra work may not be noticed, possibly resulting in an // unnecessary 100ms delay) LOCK(m_tx_download_mutex); - if (m_txdownloadman.GetOrphanageRef().HaveTxToReconsider(peer->m_id)) fMoreWork = true; + if (m_txdownloadman.HaveMoreWork(peer->m_id)) fMoreWork = true; } catch (const std::exception& e) { LogDebug(BCLog::NET, "%s(%s, %u bytes): Exception '%s' (%s) caught\n", __func__, SanitizeString(msg.m_type), msg.m_message_size, e.what(), typeid(e).name()); } catch (...) { diff --git a/src/node/txdownloadman.h b/src/node/txdownloadman.h index e921ac3c2d4..aaff966cd56 100644 --- a/src/node/txdownloadman.h +++ b/src/node/txdownloadman.h @@ -161,6 +161,12 @@ public: * Return a bool indicating whether this tx should be validated. If false, optionally, a * PackageToValidate. */ std::pair> ReceivedTx(NodeId nodeid, const CTransactionRef& ptx); + + /** Whether there are any orphans to reconsider for this peer. */ + bool HaveMoreWork(NodeId nodeid) const; + + /** Returns next orphan tx to consider, or nullptr if none exist. */ + CTransactionRef GetTxToReconsider(NodeId nodeid); }; } // namespace node #endif // BITCOIN_NODE_TXDOWNLOADMAN_H diff --git a/src/node/txdownloadman_impl.cpp b/src/node/txdownloadman_impl.cpp index e6b1873e28f..935ec2d6b74 100644 --- a/src/node/txdownloadman_impl.cpp +++ b/src/node/txdownloadman_impl.cpp @@ -75,6 +75,14 @@ std::pair> TxDownloadManager::ReceivedTx( { return m_impl->ReceivedTx(nodeid, ptx); } +bool TxDownloadManager::HaveMoreWork(NodeId nodeid) const +{ + return m_impl->HaveMoreWork(nodeid); +} +CTransactionRef TxDownloadManager::GetTxToReconsider(NodeId nodeid) +{ + return m_impl->GetTxToReconsider(nodeid); +} // TxDownloadManagerImpl void TxDownloadManagerImpl::ActiveTipChange() @@ -496,4 +504,15 @@ std::pair> TxDownloadManagerImpl::Receive return {true, std::nullopt}; } + +bool TxDownloadManagerImpl::HaveMoreWork(NodeId nodeid) +{ + return m_orphanage.HaveTxToReconsider(nodeid); +} + +CTransactionRef TxDownloadManagerImpl::GetTxToReconsider(NodeId nodeid) +{ + return m_orphanage.GetTxToReconsider(nodeid); +} + } // namespace node diff --git a/src/node/txdownloadman_impl.h b/src/node/txdownloadman_impl.h index fe04770f650..85841777d05 100644 --- a/src/node/txdownloadman_impl.h +++ b/src/node/txdownloadman_impl.h @@ -179,6 +179,9 @@ public: void MempoolRejectedPackage(const Package& package); std::pair> ReceivedTx(NodeId nodeid, const CTransactionRef& ptx); + + bool HaveMoreWork(NodeId nodeid); + CTransactionRef GetTxToReconsider(NodeId nodeid); }; } // namespace node #endif // BITCOIN_NODE_TXDOWNLOADMAN_IMPL_H