From 3c1636174bb7aaba41d0fff69b7b9574a57cf982 Mon Sep 17 00:00:00 2001 From: Kittywhiskers Van Gogh <63189531+kwvg@users.noreply.github.com> Date: Sat, 14 Dec 2024 10:40:52 +0000 Subject: [PATCH] merge bitcoin#29356: make v2transport arg in addconnection mandatory and few cleanups --- src/rpc/net.cpp | 2 +- test/functional/feature_anchors.py | 2 +- test/functional/test_framework/p2p.py | 8 +++----- test/functional/test_framework/v2_p2p.py | 1 + 4 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/rpc/net.cpp b/src/rpc/net.cpp index f61b9147c4..1d90abaaf9 100644 --- a/src/rpc/net.cpp +++ b/src/rpc/net.cpp @@ -360,7 +360,7 @@ static RPCHelpMan addconnection() { {"address", RPCArg::Type::STR, RPCArg::Optional::NO, "The IP address and port to attempt connecting to."}, {"connection_type", RPCArg::Type::STR, RPCArg::Optional::NO, "Type of connection to open (\"outbound-full-relay\", \"block-relay-only\", \"addr-fetch\" or \"feeler\")."}, - {"v2transport", RPCArg::Type::BOOL, RPCArg::Default{false}, "Attempt to connect using BIP324 v2 transport protocol"}, + {"v2transport", RPCArg::Type::BOOL, RPCArg::Optional::NO, "Attempt to connect using BIP324 v2 transport protocol"}, }, RPCResult{ RPCResult::Type::OBJ, "", "", diff --git a/test/functional/feature_anchors.py b/test/functional/feature_anchors.py index f164e51612..25c592ee7a 100755 --- a/test/functional/feature_anchors.py +++ b/test/functional/feature_anchors.py @@ -100,7 +100,7 @@ class AnchorsTest(BitcoinTestFramework): self.restart_node(0, extra_args=[f"-onion={onion_conf.addr[0]}:{onion_conf.addr[1]}"]) self.log.info("Add 256-bit-address block-relay-only connections to node") - self.nodes[0].addconnection(ONION_ADDR, 'block-relay-only') + self.nodes[0].addconnection(ONION_ADDR, 'block-relay-only', v2transport=False) self.log.debug("Stop node") with self.nodes[0].assert_debug_log([f"DumpAnchors: Flush 1 outbound block-relay-only peer addresses to anchors.dat"]): diff --git a/test/functional/test_framework/p2p.py b/test/functional/test_framework/p2p.py index 9e518cd529..937e7279cb 100755 --- a/test/functional/test_framework/p2p.py +++ b/test/functional/test_framework/p2p.py @@ -272,7 +272,7 @@ class P2PConnection(asyncio.Protocol): self.on_close() # v2 handshake method - def v2_handshake(self): + def _on_data_v2_handshake(self): """v2 handshake performed before P2P messages are exchanged (see BIP324). P2PConnection is the initiator (in inbound connections to TestNode) and the responder (in outbound connections from TestNode). Performed by: @@ -325,7 +325,7 @@ class P2PConnection(asyncio.Protocol): if len(t) > 0: self.recvbuf += t if self.supports_v2_p2p and not self.v2_state.tried_v2_handshake: - self.v2_handshake() + self._on_data_v2_handshake() else: self._on_data() @@ -631,9 +631,7 @@ class P2PInterface(P2PConnection): def wait_for_reconnect(self, timeout=60): def test_function(): - if not (self.is_connected and self.last_message.get('version') and self.v2_state is None): - return False - return True + return self.is_connected and self.last_message.get('version') and not self.supports_v2_p2p self.wait_until(test_function, timeout=timeout, check_connected=False) # Message receiving helper methods diff --git a/test/functional/test_framework/v2_p2p.py b/test/functional/test_framework/v2_p2p.py index 97830a4665..3624640fa7 100644 --- a/test/functional/test_framework/v2_p2p.py +++ b/test/functional/test_framework/v2_p2p.py @@ -259,6 +259,7 @@ class EncryptedP2PState: # decoy packets have contents = None. v2 handshake is complete only when version packet # (can be empty with contents = b"") with contents != None is received. if contents is not None: + assert contents == b"" # currently TestNode sends an empty version packet self.tried_v2_handshake = True return processed_length, True response = response[length:]