@ -351,7 +351,14 @@ def set_node_times(nodes, t):
def disconnect_nodes ( from_connection , node_num ) :
def disconnect_nodes ( from_connection , node_num ) :
for peer_id in [ peer [ ' id ' ] for peer in from_connection . getpeerinfo ( ) if " testnode %d " % node_num in peer [ ' subver ' ] ] :
for peer_id in [ peer [ ' id ' ] for peer in from_connection . getpeerinfo ( ) if " testnode %d " % node_num in peer [ ' subver ' ] ] :
try :
from_connection . disconnectnode ( nodeid = peer_id )
from_connection . disconnectnode ( nodeid = peer_id )
except JSONRPCException as e :
# If this node is disconnected between calculating the peer id
# and issuing the disconnect, don't worry about it.
# This avoids a race condition if we're mass-disconnecting peers.
if e . error [ ' code ' ] != - 29 : # RPC_CLIENT_NODE_NOT_CONNECTED
raise
# wait to disconnect
# wait to disconnect
wait_until ( lambda : [ peer [ ' id ' ] for peer in from_connection . getpeerinfo ( ) if " testnode %d " % node_num in peer [ ' subver ' ] ] == [ ] , timeout = 5 )
wait_until ( lambda : [ peer [ ' id ' ] for peer in from_connection . getpeerinfo ( ) if " testnode %d " % node_num in peer [ ' subver ' ] ] == [ ] , timeout = 5 )