From 3b1295e98878840c94db62223d1bc202d71a7366 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Mon, 23 Jun 2014 17:41:52 +0200 Subject: [PATCH] qa/rpc_tests: Wait for handshake to complete in connect_nodes This avoids a race condition in which the connection was made but the version handshake is not completed yet. In that case transactions won't be broadcasted to a peer yet, and the nodes will wait forever for their mempools to sync. --- qa/rpc-tests/util.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/qa/rpc-tests/util.py b/qa/rpc-tests/util.py index eded098c7..27c9f778f 100644 --- a/qa/rpc-tests/util.py +++ b/qa/rpc-tests/util.py @@ -182,6 +182,10 @@ def wait_bitcoinds(): def connect_nodes(from_connection, node_num): ip_port = "127.0.0.1:"+str(p2p_port(node_num)) from_connection.addnode(ip_port, "onetry") + # poll until version handshake complete to avoid race conditions + # with transaction relaying + while any(peer['version'] == 0 for peer in from_connection.getpeerinfo()): + time.sleep(0.1) def find_output(node, txid, amount): """