aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMacroFake <falke.marco@gmail.com>2022-10-21 11:18:43 +0200
committerMacroFake <falke.marco@gmail.com>2022-10-21 11:18:48 +0200
commit8c5c98db47d0fb18ee7471e26d86a152d18240f3 (patch)
treec77a2c0448f908dcb6ffcd276b5781d55130061d
parentf2859c3aa86ebd01b7245135ef043bb5e60c1e17 (diff)
parentdddd1acf58cb7bf328ce3e74d1dc0e8cbd503247 (diff)
Merge bitcoin/bitcoin#26248: net: Set relay in version msg to peers with relay permission in -blocksonly mode
dddd1acf58cb7bf328ce3e74d1dc0e8cbd503247 net: Set relay in version msg to peers with relay permission (MacroFake) Pull request description: Seems odd to set the `relay` permission in -blocksonly mode and also ask the peer not to relay transactions. ACKs for top commit: dergoegge: ACK dddd1acf58cb7bf328ce3e74d1dc0e8cbd503247 naumenkogs: ACK https://github.com/bitcoin/bitcoin/commit/dddd1acf58cb7bf328ce3e74d1dc0e8cbd503247 mzumsande: ACK dddd1acf58cb7bf328ce3e74d1dc0e8cbd503247 Tree-SHA512: 7bb0e964993ea4982747ae2801fe963ff88586e2ded03015b60ab83172b5b61f2d50e9cde9d7711b7ab207f8639467ecafc4d011ea151ec6c82c722f510f4df7
-rw-r--r--src/net_processing.cpp3
-rwxr-xr-xtest/functional/p2p_blocksonly.py1
-rwxr-xr-xtest/functional/test_framework/p2p.py1
3 files changed, 4 insertions, 1 deletions
diff --git a/src/net_processing.cpp b/src/net_processing.cpp
index c87b0e7cd2..34b4840eb1 100644
--- a/src/net_processing.cpp
+++ b/src/net_processing.cpp
@@ -1380,7 +1380,7 @@ void PeerManagerImpl::PushNodeVersion(CNode& pnode, const Peer& peer)
CService addr_you = addr.IsRoutable() && !IsProxy(addr) && addr.IsAddrV1Compatible() ? addr : CService();
uint64_t your_services{addr.nServices};
- const bool tx_relay = !m_ignore_incoming_txs && !pnode.IsBlockOnlyConn() && !pnode.IsFeelerConn();
+ const bool tx_relay{!RejectIncomingTxs(pnode)};
m_connman.PushMessage(&pnode, CNetMsgMaker(INIT_PROTO_VERSION).Make(NetMsgType::VERSION, PROTOCOL_VERSION, my_services, nTime,
your_services, addr_you, // Together the pre-version-31402 serialization of CAddress "addrYou" (without nTime)
my_services, CService(), // Together the pre-version-31402 serialization of CAddress "addrMe" (without nTime)
@@ -5307,6 +5307,7 @@ bool PeerManagerImpl::RejectIncomingTxs(const CNode& peer) const
{
// block-relay-only peers may never send txs to us
if (peer.IsBlockOnlyConn()) return true;
+ if (peer.IsFeelerConn()) return true;
// In -blocksonly mode, peers need the 'relay' permission to send txs to us
if (m_ignore_incoming_txs && !peer.HasPermission(NetPermissionFlags::Relay)) return true;
return false;
diff --git a/test/functional/p2p_blocksonly.py b/test/functional/p2p_blocksonly.py
index 8ac38bff3a..231d2e12c9 100755
--- a/test/functional/p2p_blocksonly.py
+++ b/test/functional/p2p_blocksonly.py
@@ -57,6 +57,7 @@ class P2PBlocksOnly(BitcoinTestFramework):
second_peer = self.nodes[0].add_p2p_connection(P2PInterface())
peer_1_info = self.nodes[0].getpeerinfo()[0]
assert_equal(peer_1_info['permissions'], ['relay'])
+ assert_equal(first_peer.relay, 1)
peer_2_info = self.nodes[0].getpeerinfo()[1]
assert_equal(peer_2_info['permissions'], ['relay'])
assert_equal(self.nodes[0].testmempoolaccept([tx_hex])[0]['allowed'], True)
diff --git a/test/functional/test_framework/p2p.py b/test/functional/test_framework/p2p.py
index 8830b0de63..05b46e630c 100755
--- a/test/functional/test_framework/p2p.py
+++ b/test/functional/test_framework/p2p.py
@@ -449,6 +449,7 @@ class P2PInterface(P2PConnection):
self.send_message(msg_sendaddrv2())
self.send_message(msg_verack())
self.nServices = message.nServices
+ self.relay = message.relay
self.send_message(msg_getaddr())
# Connection helper methods