mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-01-19 14:53:43 +01:00
Remove mapRelay
This commit is contained in:
@@ -51,9 +51,7 @@
|
||||
#include <optional>
|
||||
#include <typeinfo>
|
||||
|
||||
/** How long to cache transactions in mapRelay for normal relay */
|
||||
static constexpr auto RELAY_TX_CACHE_TIME = 15min;
|
||||
/** How long a transaction has to be in the mempool before it can unconditionally be relayed (even when not in mapRelay). */
|
||||
/** How long a transaction has to be in the mempool before it can unconditionally be relayed. */
|
||||
static constexpr auto UNCONDITIONAL_RELAY_DELAY = 2min;
|
||||
/** Headers download timeout.
|
||||
* Timeout = base + per_header * (expected number of headers) */
|
||||
@@ -920,12 +918,6 @@ private:
|
||||
/** Process a new block. Perform any post-processing housekeeping */
|
||||
void ProcessBlock(CNode& node, const std::shared_ptr<const CBlock>& block, bool force_processing, bool min_pow_checked);
|
||||
|
||||
/** Relay map (txid or wtxid -> CTransactionRef) */
|
||||
typedef std::map<uint256, CTransactionRef> MapRelay;
|
||||
MapRelay mapRelay GUARDED_BY(NetEventsInterface::g_msgproc_mutex);
|
||||
/** Expiration-time ordered list of (expire time, relay map entry) pairs. */
|
||||
std::deque<std::pair<std::chrono::microseconds, MapRelay::iterator>> g_relay_expiration GUARDED_BY(NetEventsInterface::g_msgproc_mutex);
|
||||
|
||||
/**
|
||||
* When a peer sends us a valid block, instruct it to announce blocks to us
|
||||
* using CMPCTBLOCK if possible by adding its nodeid to the end of
|
||||
@@ -2322,12 +2314,6 @@ CTransactionRef PeerManagerImpl::FindTxForGetData(const Peer::TxRelay& tx_relay,
|
||||
}
|
||||
}
|
||||
|
||||
// Or it might be recent and in the relay pool.
|
||||
if (recent) {
|
||||
auto mi = mapRelay.find(gtxid.GetHash());
|
||||
if (mi != mapRelay.end()) return mi->second;
|
||||
}
|
||||
|
||||
return {};
|
||||
}
|
||||
|
||||
@@ -5796,7 +5782,6 @@ bool PeerManagerImpl::SendMessages(CNode* pto)
|
||||
continue;
|
||||
}
|
||||
auto txid = txinfo.tx->GetHash();
|
||||
auto wtxid = txinfo.tx->GetWitnessHash();
|
||||
// Peer told you to not send transactions at that feerate? Don't bother sending it.
|
||||
if (txinfo.fee < filterrate.GetFee(txinfo.vsize)) {
|
||||
continue;
|
||||
@@ -5806,24 +5791,6 @@ bool PeerManagerImpl::SendMessages(CNode* pto)
|
||||
tx_relay->m_recently_announced_invs.insert(hash);
|
||||
vInv.push_back(inv);
|
||||
nRelayedTransactions++;
|
||||
{
|
||||
// Expire old relay messages
|
||||
while (!g_relay_expiration.empty() && g_relay_expiration.front().first < current_time)
|
||||
{
|
||||
mapRelay.erase(g_relay_expiration.front().second);
|
||||
g_relay_expiration.pop_front();
|
||||
}
|
||||
|
||||
auto ret = mapRelay.emplace(txid, std::move(txinfo.tx));
|
||||
if (ret.second) {
|
||||
g_relay_expiration.emplace_back(current_time + RELAY_TX_CACHE_TIME, ret.first);
|
||||
}
|
||||
// Add wtxid-based lookup into mapRelay as well, so that peers can request by wtxid
|
||||
auto ret2 = mapRelay.emplace(wtxid, ret.first->second);
|
||||
if (ret2.second) {
|
||||
g_relay_expiration.emplace_back(current_time + RELAY_TX_CACHE_TIME, ret2.first);
|
||||
}
|
||||
}
|
||||
if (vInv.size() == MAX_INV_SZ) {
|
||||
m_connman.PushMessage(pto, msgMaker.Make(NetMsgType::INV, vInv));
|
||||
vInv.clear();
|
||||
|
||||
Reference in New Issue
Block a user