1010 msg_verack ,
1111 msg_version ,
1212 msg_wtxidrelay ,
13+ NODE_BLOOM ,
1314)
1415from test_framework .p2p import (
1516 P2PInterface ,
@@ -104,6 +105,22 @@ def run_test(self):
104105 assert not peer .sendtxrcncl_msg_received
105106 self .nodes [0 ].disconnect_p2ps ()
106107
108+ self .log .info ('SENDTXRCNCL for fRelay=false should not be sent (with NODE_BLOOM offered)' )
109+ self .restart_node (0 , ["-peerbloomfilters" , "-txreconciliation" ])
110+ peer = self .nodes [0 ].add_p2p_connection (SendTxrcnclReceiver (), send_version = False , wait_for_verack = False )
111+ no_txrelay_version_msg = msg_version ()
112+ no_txrelay_version_msg .nVersion = P2P_VERSION
113+ no_txrelay_version_msg .strSubVer = P2P_SUBVERSION
114+ no_txrelay_version_msg .nServices = P2P_SERVICES
115+ no_txrelay_version_msg .relay = 0
116+ peer .send_message (no_txrelay_version_msg )
117+ peer .wait_for_verack ()
118+ assert peer .nServices & NODE_BLOOM != 0
119+ assert not peer .sendtxrcncl_msg_received
120+ self .nodes [0 ].disconnect_p2ps ()
121+
122+ self .restart_node (0 , ["-txreconciliation" ])
123+
107124 self .log .info ('valid SENDTXRCNCL received' )
108125 peer = self .nodes [0 ].add_p2p_connection (PeerNoVerack (), send_version = True , wait_for_verack = False )
109126 with self .nodes [0 ].assert_debug_log (["received: sendtxrcncl" ]):
@@ -113,6 +130,15 @@ def run_test(self):
113130 peer .send_message (create_sendtxrcncl_msg ())
114131 peer .wait_for_disconnect ()
115132
133+ self .restart_node (0 , [])
134+ self .log .info ('SENDTXRCNCL if no txreconciliation supported is ignored' )
135+ peer = self .nodes [0 ].add_p2p_connection (PeerNoVerack (), send_version = True , wait_for_verack = False )
136+ with self .nodes [0 ].assert_debug_log (['ignored, as our node does not have txreconciliation enabled' ]):
137+ peer .send_message (create_sendtxrcncl_msg ())
138+ self .nodes [0 ].disconnect_p2ps ()
139+
140+ self .restart_node (0 , ["-txreconciliation" ])
141+
116142 self .log .info ('SENDTXRCNCL with version=0 triggers a disconnect' )
117143 sendtxrcncl_low_version = create_sendtxrcncl_msg ()
118144 sendtxrcncl_low_version .version = 0
@@ -125,7 +151,7 @@ def run_test(self):
125151 sendtxrcncl_higher_version = create_sendtxrcncl_msg ()
126152 sendtxrcncl_higher_version .version = 2
127153 peer = self .nodes [0 ].add_p2p_connection (PeerNoVerack (), send_version = True , wait_for_verack = False )
128- with self .nodes [0 ].assert_debug_log (['Register peer=6 ' ]):
154+ with self .nodes [0 ].assert_debug_log (['Register peer=1 ' ]):
129155 peer .send_message (sendtxrcncl_higher_version )
130156 self .nodes [0 ].disconnect_p2ps ()
131157
@@ -160,6 +186,12 @@ def run_test(self):
160186 assert not peer .sendtxrcncl_msg_received
161187 self .nodes [0 ].disconnect_p2ps ()
162188
189+ self .log .info ("SENDTXRCNCL should not be sent if addrfetch" )
190+ peer = self .nodes [0 ].add_outbound_p2p_connection (
191+ SendTxrcnclReceiver (), wait_for_verack = True , p2p_idx = 0 , connection_type = "addr-fetch" )
192+ assert not peer .sendtxrcncl_msg_received
193+ self .nodes [0 ].disconnect_p2ps ()
194+
163195 self .log .info ('SENDTXRCNCL if block-relay-only triggers a disconnect' )
164196 peer = self .nodes [0 ].add_outbound_p2p_connection (
165197 PeerNoVerack (), wait_for_verack = False , p2p_idx = 0 , connection_type = "block-relay-only" )
0 commit comments