From 71867f223fa845eff2068110ebed15fa8eec554d Mon Sep 17 00:00:00 2001 From: coffeedogs Date: Wed, 15 Aug 2018 09:18:38 +0100 Subject: [PATCH] Fixed: Wait for lists to be populated. Closes 1335. --- src/network/connectionchooser.py | 3 +++ src/network/connectionpool.py | 8 +++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/network/connectionchooser.py b/src/network/connectionchooser.py index e29185e964..86ec17adfa 100644 --- a/src/network/connectionchooser.py +++ b/src/network/connectionchooser.py @@ -1,5 +1,6 @@ from queues import Queue import random +import time from bmconfigparser import BMConfigParser import knownnodes @@ -33,6 +34,8 @@ def chooseConnection(stream): if helper_random.randomchoice((False, True)) and not haveOnion: # discovered peers are already filtered by allowed streams return getDiscoveredPeer() + while not knownnodes.knownNodes[stream]: + time.sleep(1) for _ in range(50): peer = helper_random.randomchoice(knownnodes.knownNodes[stream].keys()) try: diff --git a/src/network/connectionpool.py b/src/network/connectionpool.py index fa09841189..a9c8c8c794 100644 --- a/src/network/connectionpool.py +++ b/src/network/connectionpool.py @@ -31,7 +31,7 @@ def __init__(self): self.udpSockets = {} self.streams = [] self.lastSpawned = 0 - self.spawnWait = 2 + self.spawnWait = 2 self.bootstrapped = False def connectToStream(self, streamNumber): @@ -156,6 +156,8 @@ def loop(self): Proxy.onionproxy = None established = sum(1 for c in self.outboundConnections.values() if (c.connected and c.fullyEstablished)) pending = len(self.outboundConnections) - established + while not self.streams: + time.sleep(1) if established < BMConfigParser().safeGetInt("bitmessagesettings", "maxoutboundconnections"): for i in range(state.maximumNumberOfHalfOpenConnections - pending): try: @@ -169,7 +171,7 @@ def loop(self): # don't connect to self if chosen in state.ownAddresses: continue - + #for c in self.outboundConnections: # if chosen == c.destination: # continue @@ -247,7 +249,7 @@ def loop(self): if i.fullyEstablished: i.append_write_buf(protocol.CreatePacket('ping')) else: - i.close_reason = "Timeout (%is)" % (time.time() - i.lastTx) + i.close_reason = "Timeout (%is)" % (time.time() - i.lastTx) i.set_state("close") for i in self.inboundConnections.values() + self.outboundConnections.values() + self.listeningSockets.values() + self.udpSockets.values(): if not (i.accepting or i.connecting or i.connected):