aboutsummaryrefslogtreecommitdiff
path: root/qa/rpc-tests
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2014-06-23 17:41:52 +0200
committerWladimir J. van der Laan <laanwj@gmail.com>2014-06-23 17:43:55 +0200
commit3b1295e98878840c94db62223d1bc202d71a7366 (patch)
treea18722111cb86034d8f5ea8659e2f5b924a0a351 /qa/rpc-tests
parent0869df195cc9f71a6f45b0bc19aa49463709cf5f (diff)
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.
Diffstat (limited to 'qa/rpc-tests')
-rw-r--r--qa/rpc-tests/util.py4
1 files changed, 4 insertions, 0 deletions
diff --git a/qa/rpc-tests/util.py b/qa/rpc-tests/util.py
index eded098c7c..27c9f778f6 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):
"""