diff options
-rw-r--r-- | src/net_processing.cpp | 9 | ||||
-rw-r--r-- | src/txorphanage.cpp | 10 | ||||
-rw-r--r-- | src/txorphanage.h | 1 |
3 files changed, 12 insertions, 8 deletions
diff --git a/src/net_processing.cpp b/src/net_processing.cpp index 181e64c77e..cda177dfe3 100644 --- a/src/net_processing.cpp +++ b/src/net_processing.cpp @@ -1509,14 +1509,7 @@ bool PeerManagerImpl::AlreadyHaveTx(const GenTxid& gtxid) const uint256& hash = gtxid.GetHash(); - { - LOCK(g_cs_orphans); - if (!gtxid.IsWtxid() && mapOrphanTransactions.count(hash)) { - return true; - } else if (gtxid.IsWtxid() && g_orphans_by_wtxid.count(hash)) { - return true; - } - } + if (HaveOrphanTx(gtxid)) return true; { LOCK(m_recent_confirmed_transactions_mutex); diff --git a/src/txorphanage.cpp b/src/txorphanage.cpp index c1443115f0..473abd5044 100644 --- a/src/txorphanage.cpp +++ b/src/txorphanage.cpp @@ -119,3 +119,13 @@ void AddChildrenToWorkSet(const CTransaction& tx, std::set<uint256>& orphan_work } } +bool HaveOrphanTx(const GenTxid& gtxid) +{ + LOCK(g_cs_orphans); + if (gtxid.IsWtxid()) { + return g_orphans_by_wtxid.count(gtxid.GetHash()); + } else { + return mapOrphanTransactions.count(gtxid.GetHash()); + } +} + diff --git a/src/txorphanage.h b/src/txorphanage.h index c57249265e..ab4960be69 100644 --- a/src/txorphanage.h +++ b/src/txorphanage.h @@ -27,6 +27,7 @@ int EraseOrphanTx(const uint256& txid) EXCLUSIVE_LOCKS_REQUIRED(g_cs_orphans); void EraseOrphansFor(NodeId peer) EXCLUSIVE_LOCKS_REQUIRED(g_cs_orphans); unsigned int LimitOrphanTxSize(unsigned int nMaxOrphans) EXCLUSIVE_LOCKS_REQUIRED(g_cs_orphans); void AddChildrenToWorkSet(const CTransaction& tx, std::set<uint256>& orphan_work_set) EXCLUSIVE_LOCKS_REQUIRED(g_cs_orphans); +bool HaveOrphanTx(const GenTxid& gtxid) EXCLUSIVE_LOCKS_REQUIRED(!g_cs_orphans); /** Map from txid to orphan transaction record. Limited by * -maxorphantx/DEFAULT_MAX_ORPHAN_TRANSACTIONS */ |