mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-03 09:56:38 -05:00
Merge bitcoin/bitcoin#27270: refactor, net processing: Avoid CNode::m_relays_txs usage
55c4795c57
[net processing] Use TxRelay::m_relay_txs over CNode::m_relays_txs (dergoegge) Pull request description: `CNode::m_relays_txs` is meant to only be used for the eviction logic in `net`. `TxRelay::m_relay_txs` will hold the same value and is meant to be used on the application layer to determine if we will/should relay transactions to a peer. (Shameless plug: we should really better specify the interface for updating eviction data to avoid refactors like this in the future -> #25572) ACKs for top commit: MarcoFalke: lgtm ACK55c4795c57
Tree-SHA512: 59cfd23e32568fd96cda5570790e518242a6c76d4edf5b7d1a2a7f9724d590d2a38395504e05be0af4e98dd5c0056fc0be6568eab2818934692483a186e5181d
This commit is contained in:
commit
53eb4b7a21
1 changed files with 7 additions and 4 deletions
|
@ -3296,11 +3296,13 @@ void PeerManagerImpl::ProcessMessage(CNode& pfrom, const std::string& msg_type,
|
||||||
if (greatest_common_version >= WTXID_RELAY_VERSION && m_txreconciliation) {
|
if (greatest_common_version >= WTXID_RELAY_VERSION && m_txreconciliation) {
|
||||||
// Per BIP-330, we announce txreconciliation support if:
|
// Per BIP-330, we announce txreconciliation support if:
|
||||||
// - protocol version per the peer's VERSION message supports WTXID_RELAY;
|
// - 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);
|
// - transaction relay is supported per the peer's VERSION message
|
||||||
// - this is not a block-relay-only connection and not a feeler (see m_relays_txs);
|
// - this is not a block-relay-only connection and not a feeler
|
||||||
// - this is not an addr fetch connection;
|
// - this is not an addr fetch connection;
|
||||||
// - we are not in -blocksonly mode.
|
// - 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());
|
const uint64_t recon_salt = m_txreconciliation->PreRegisterPeer(pfrom.GetId());
|
||||||
m_connman.PushMessage(&pfrom, msg_maker.Make(NetMsgType::SENDTXRCNCL,
|
m_connman.PushMessage(&pfrom, msg_maker.Make(NetMsgType::SENDTXRCNCL,
|
||||||
TXRECONCILIATION_VERSION, recon_salt));
|
TXRECONCILIATION_VERSION, recon_salt));
|
||||||
|
@ -3528,7 +3530,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.
|
// 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
|
// 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.
|
// 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());
|
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;
|
pfrom.fDisconnect = true;
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Add table
Reference in a new issue