10
10
msg_verack ,
11
11
msg_version ,
12
12
msg_wtxidrelay ,
13
+ NODE_BLOOM ,
13
14
)
14
15
from test_framework .p2p import (
15
16
P2PInterface ,
@@ -104,6 +105,22 @@ def run_test(self):
104
105
assert not peer .sendtxrcncl_msg_received
105
106
self .nodes [0 ].disconnect_p2ps ()
106
107
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
+
107
124
self .log .info ('valid SENDTXRCNCL received' )
108
125
peer = self .nodes [0 ].add_p2p_connection (PeerNoVerack (), send_version = True , wait_for_verack = False )
109
126
with self .nodes [0 ].assert_debug_log (["received: sendtxrcncl" ]):
@@ -113,6 +130,15 @@ def run_test(self):
113
130
peer .send_message (create_sendtxrcncl_msg ())
114
131
peer .wait_for_disconnect ()
115
132
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
+
116
142
self .log .info ('SENDTXRCNCL with version=0 triggers a disconnect' )
117
143
sendtxrcncl_low_version = create_sendtxrcncl_msg ()
118
144
sendtxrcncl_low_version .version = 0
@@ -125,7 +151,7 @@ def run_test(self):
125
151
sendtxrcncl_higher_version = create_sendtxrcncl_msg ()
126
152
sendtxrcncl_higher_version .version = 2
127
153
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 ' ]):
129
155
peer .send_message (sendtxrcncl_higher_version )
130
156
self .nodes [0 ].disconnect_p2ps ()
131
157
@@ -160,6 +186,12 @@ def run_test(self):
160
186
assert not peer .sendtxrcncl_msg_received
161
187
self .nodes [0 ].disconnect_p2ps ()
162
188
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
+
163
195
self .log .info ('SENDTXRCNCL if block-relay-only triggers a disconnect' )
164
196
peer = self .nodes [0 ].add_outbound_p2p_connection (
165
197
PeerNoVerack (), wait_for_verack = False , p2p_idx = 0 , connection_type = "block-relay-only" )
0 commit comments