tnetwork: disconnected retry interval - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit 858ff86660a1e1e83c754c1df31fa28cb97fc1ec DIR parent ec5478c328dc43d8e6d108a9d8d45f8f9c84f943 HTML Author: ThomasV <thomasv@gitorious> Date: Wed, 30 Jul 2014 10:43:15 +0200 network: disconnected retry interval Diffstat: M lib/network.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) --- DIR diff --git a/lib/network.py b/lib/network.py t@@ -23,6 +23,8 @@ DEFAULT_SERVERS = { 'electrum.stepkrav.pw':DEFAULT_PORTS, } +DISCONNECTED_RETRY_INTERVAL = 60 + def parse_servers(result): """ parse servers list into dict format""" t@@ -94,7 +96,10 @@ class Network(threading.Thread): self.default_server = pick_random_server(self.protocol) self.irc_servers = {} # returned by interface (list from irc) + self.disconnected_servers = set([]) + self.disconnected_time = time.time() + self.recent_servers = self.config.get('recent_servers',[]) # successful connections self.banner = '' t@@ -165,9 +170,6 @@ class Network(threading.Thread): choice_list.append(s) if not choice_list: - if not self.interfaces: - # we are probably offline, retry later - self.disconnected_servers = set([]) return server = random.choice( choice_list ) t@@ -364,10 +366,16 @@ class Network(threading.Thread): def run(self): while self.is_running(): try: - i, response = self.queue.get(timeout=0.1) #timeout = 30 if self.interfaces else 3) + i, response = self.queue.get(timeout=0.1) except Queue.Empty: + if len(self.interfaces) < self.num_server: self.start_random_interface() + if not self.interfaces: + if time.time() - self.disconnected_time > DISCONNECTED_RETRY_INTERVAL: + print_error('network: retrying connections') + self.disconnected_servers = set([]) + self.disconnected_time = time.time() continue if response is not None: