Similarly to my comment about TxMempool::exists()
, I think it would be better here to just overload info
:
0diff --git a/src/net_processing.cpp b/src/net_processing.cpp
1index c0f6ac3f03..c34511d27d 100644
2--- a/src/net_processing.cpp
3+++ b/src/net_processing.cpp
4@@ -5821,7 +5821,7 @@ bool PeerManagerImpl::SendMessages(CNode* pto)
5 continue;
6 }
7 // Not in the mempool anymore? don't bother sending it.
8- auto txinfo = m_mempool.info(ToGenTxid(inv).ToVariant());
9+ auto txinfo{std::visit([&](const auto& tx) { return m_mempool.info(tx); }, ToGenTxid(inv).ToVariant())};
10 if (!txinfo.tx) {
11 continue;
12 }
13diff --git a/src/txmempool.cpp b/src/txmempool.cpp
14index 4153794218..a60c692e84 100644
15--- a/src/txmempool.cpp
16+++ b/src/txmempool.cpp
17@@ -890,17 +890,18 @@ CTransactionRef CTxMemPool::get(const uint256& hash) const
18 return i->GetSharedTx();
19 }
20
21-TxMempoolInfo CTxMemPool::info(const GenTxidVariant& gtxid) const
22+TxMempoolInfo CTxMemPool::info(const Txid& txid) const
23 {
24 LOCK(cs);
25- indexed_transaction_set::const_iterator i = std::visit(util::Overloaded{
26- [this](const Wtxid& wtxid) EXCLUSIVE_LOCKS_REQUIRED(cs) { return get_iter_from_wtxid(wtxid); },
27- [this](const Txid& txid) EXCLUSIVE_LOCKS_REQUIRED(cs) { return mapTx.find(txid); }
28- }, gtxid);
29+ indexed_transaction_set::const_iterator i{mapTx.find(txid)};
30+ return i == mapTx.end() ? TxMempoolInfo{} : GetInfo(i);
31+}
32
33- if (i == mapTx.end())
34- return TxMempoolInfo();
35- return GetInfo(i);
36+TxMempoolInfo CTxMemPool::info(const Wtxid& wtxid) const
37+{
38+ LOCK(cs);
39+ indexed_transaction_set::const_iterator i{get_iter_from_wtxid(wtxid)};
40+ return i == mapTx.end() ? TxMempoolInfo{} : GetInfo(i);
41 }
42
43 TxMempoolInfo CTxMemPool::info_for_relay(const GenTxidVariant& gtxid, uint64_t last_sequence) const
44diff --git a/src/txmempool.h b/src/txmempool.h
45index f96434a344..5421f029bb 100644
46--- a/src/txmempool.h
47+++ b/src/txmempool.h
48@@ -663,7 +663,8 @@ public:
49 AssertLockHeld(cs);
50 return mapTx.project<0>(mapTx.get<index_by_wtxid>().find(wtxid));
51 }
52- TxMempoolInfo info(const GenTxidVariant& gtxid) const;
53+ TxMempoolInfo info(const Txid& txid) const;
54+ TxMempoolInfo info(const Wtxid& wtxid) const;
55
56 /** Returns info for a transaction if its entry_sequence < last_sequence */
57 TxMempoolInfo info_for_relay(const GenTxidVariant& gtxid, uint64_t last_sequence) const;