@@ -65,6 +65,7 @@ def run_test(self):
65
65
self .test_service_flags ()
66
66
self .test_getnodeaddresses ()
67
67
self .test_addpeeraddress ()
68
+ self .test_sendmsgtopeer ()
68
69
69
70
def test_connection_count (self ):
70
71
self .log .info ("Test getconnectioncount" )
@@ -328,6 +329,37 @@ def test_addpeeraddress(self):
328
329
addrs = node .getnodeaddresses (count = 0 ) # getnodeaddresses re-runs the addrman checks
329
330
assert_equal (len (addrs ), 2 )
330
331
332
+ def test_sendmsgtopeer (self ):
333
+ node = self .nodes [0 ]
334
+
335
+ self .restart_node (0 )
336
+ self .connect_nodes (0 , 1 )
337
+
338
+ self .log .info ("Test sendmsgtopeer" )
339
+ self .log .debug ("Send a valid message" )
340
+ with self .nodes [1 ].assert_debug_log (expected_msgs = ["received: addr" ]):
341
+ node .sendmsgtopeer (peer_id = 0 , msg_type = "addr" , msg = "FFFFFF" )
342
+
343
+ self .log .debug ("Test error for sending to non-existing peer" )
344
+ assert_raises_rpc_error (- 1 , "Error: Could not send message to peer" , node .sendmsgtopeer , peer_id = 100 , msg_type = "addr" , msg = "FF" )
345
+
346
+ self .log .debug ("Test that zero-length msg_type is allowed" )
347
+ node .sendmsgtopeer (peer_id = 0 , msg_type = "addr" , msg = "" )
348
+
349
+ self .log .debug ("Test error for msg_type that is too long" )
350
+ assert_raises_rpc_error (- 8 , "Error: msg_type too long, max length is 12" , node .sendmsgtopeer , peer_id = 0 , msg_type = "long_msg_type" , msg = "FF" )
351
+
352
+ self .log .debug ("Test that unknown msg_type is allowed" )
353
+ node .sendmsgtopeer (peer_id = 0 , msg_type = "unknown" , msg = "FF" )
354
+
355
+ self .log .debug ("Test that empty msg is allowed" )
356
+ node .sendmsgtopeer (peer_id = 0 , msg_type = "addr" , msg = "FF" )
357
+
358
+ self .log .debug ("Test that oversized messages are allowed, but get us disconnected" )
359
+ zero_byte_string = b'\x00 ' * 4000001
360
+ node .sendmsgtopeer (peer_id = 0 , msg_type = "addr" , msg = zero_byte_string .hex ())
361
+ self .wait_until (lambda : len (self .nodes [0 ].getpeerinfo ()) == 0 , timeout = 10 )
362
+
331
363
332
364
if __name__ == '__main__' :
333
365
NetTest ().main ()
0 commit comments