mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-01-19 14:53:43 +01:00
Merge bitcoin/bitcoin#26396: net: Avoid SetTxRelay for feeler connections
fa24239a1cnet: Avoid SetTxRelay for feeler connections (MacroFake) Pull request description: Seems odd to reserve memory for the struct (the heaviest member being `m_tx_inventory_known_filter`) when it is never used. This also avoids sending out `msg_sendtxrcncl` before disconnecting. This shouldn't matter, as other messages, such as `msg_wtxidrelay`, `msg_sendaddrv2`, `msg_verack` or `msg_getaddr` are still sent. Though, it allows to test the changes here as a side-effect. ACKs for top commit: naumenkogs: ACKfa24239a1cvasild: ACKfa24239a1cjonatack: ACKfa24239a1cmzumsande: ACKfa24239a1cTree-SHA512: d7604c7eb4df8f2de811e600bdd312440ee03e508d3a0f09ae79f7f2d3eeec663bfd47a2d079fa50b756d61e35dfa998de068a7b9afaf35378fa0e62a538263d
This commit is contained in:
@@ -395,9 +395,7 @@ struct Peer {
|
||||
private:
|
||||
Mutex m_tx_relay_mutex;
|
||||
|
||||
/** Transaction relay data. Will be a nullptr if we're not relaying
|
||||
* transactions with this peer (e.g. if it's a block-relay-only peer or
|
||||
* the peer has sent us fRelay=false with bloom filters disabled). */
|
||||
/** Transaction relay data. May be a nullptr. */
|
||||
std::unique_ptr<TxRelay> m_tx_relay GUARDED_BY(m_tx_relay_mutex);
|
||||
};
|
||||
|
||||
@@ -3256,12 +3254,14 @@ void PeerManagerImpl::ProcessMessage(CNode& pfrom, const std::string& msg_type,
|
||||
}
|
||||
peer->m_starting_height = starting_height;
|
||||
|
||||
// We only initialize the Peer::TxRelay m_relay_txs data structure if:
|
||||
// Only initialize the Peer::TxRelay m_relay_txs data structure if:
|
||||
// - this isn't an outbound block-relay-only connection, and
|
||||
// - this isn't an outbound feeler connection, and
|
||||
// - fRelay=true (the peer wishes to receive transaction announcements)
|
||||
// or we're offering NODE_BLOOM to this peer. NODE_BLOOM means that
|
||||
// the peer may turn on transaction relay later.
|
||||
if (!pfrom.IsBlockOnlyConn() &&
|
||||
!pfrom.IsFeelerConn() &&
|
||||
(fRelay || (peer->m_our_services & NODE_BLOOM))) {
|
||||
auto* const tx_relay = peer->SetTxRelay();
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user