aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordergoegge <n.goeggi@gmail.com>2023-03-16 18:17:48 +0100
committerdergoegge <n.goeggi@gmail.com>2023-03-16 18:23:49 +0100
commit55c4795c5794c5c2f8a69b394b847413c9cfbe36 (patch)
tree4c33be41fccb82feb375b33742411843355df452 /src
parent460e394625fab2942748aaeec9be31f460f91c58 (diff)
[net processing] Use TxRelay::m_relay_txs over CNode::m_relays_txs
Diffstat (limited to 'src')
-rw-r--r--src/net_processing.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/net_processing.cpp b/src/net_processing.cpp
index 25c65c7090..41e290bff5 100644
--- a/src/net_processing.cpp
+++ b/src/net_processing.cpp
@@ -3296,11 +3296,13 @@ void PeerManagerImpl::ProcessMessage(CNode& pfrom, const std::string& msg_type,
if (greatest_common_version >= WTXID_RELAY_VERSION && m_txreconciliation) {
// Per BIP-330, we announce txreconciliation support if:
// - protocol version per the peer's VERSION message supports WTXID_RELAY;
- // - transaction relay is supported per the peer's VERSION message (see m_relays_txs);
- // - this is not a block-relay-only connection and not a feeler (see m_relays_txs);
+ // - transaction relay is supported per the peer's VERSION message
+ // - this is not a block-relay-only connection and not a feeler
// - this is not an addr fetch connection;
// - we are not in -blocksonly mode.
- if (pfrom.m_relays_txs && !pfrom.IsAddrFetchConn() && !m_ignore_incoming_txs) {
+ const auto* tx_relay = peer->GetTxRelay();
+ if (tx_relay && WITH_LOCK(tx_relay->m_bloom_filter_mutex, return tx_relay->m_relay_txs) &&
+ !pfrom.IsAddrFetchConn() && !m_ignore_incoming_txs) {
const uint64_t recon_salt = m_txreconciliation->PreRegisterPeer(pfrom.GetId());
m_connman.PushMessage(&pfrom, msg_maker.Make(NetMsgType::SENDTXRCNCL,
TXRECONCILIATION_VERSION, recon_salt));
@@ -3529,7 +3531,8 @@ void PeerManagerImpl::ProcessMessage(CNode& pfrom, const std::string& msg_type,
// Peer must not offer us reconciliations if they specified no tx relay support in VERSION.
// This flag might also be false in other cases, but the RejectIncomingTxs check above
// eliminates them, so that this flag fully represents what we are looking for.
- if (!pfrom.m_relays_txs) {
+ const auto* tx_relay = peer->GetTxRelay();
+ if (!tx_relay || !WITH_LOCK(tx_relay->m_bloom_filter_mutex, return tx_relay->m_relay_txs)) {
LogPrintLevel(BCLog::NET, BCLog::Level::Debug, "sendtxrcncl received from peer=%d which indicated no tx relay to us; disconnecting\n", pfrom.GetId());
pfrom.fDisconnect = true;
return;