diff --git a/electrum/network.py b/electrum/network.py index 3df3f51d7..e0c8f398c 100644 --- a/electrum/network.py +++ b/electrum/network.py @@ -759,9 +759,35 @@ class Network(PrintError): for k in remove: self.connection_down(k) changed = True + + # nodes + now = time.time() for i in range(self.num_server - len(self.interfaces) - len(self.connecting)): if self.start_random_interface(): changed = True + if now - self.nodes_retry_time > NODES_RETRY_INTERVAL: + self.print_error('network: retrying connections') + self.disconnected_servers = set([]) + self.nodes_retry_time = now + + # main interface + if not self.is_connected(): + if self.auto_connect: + if not self.is_connecting(): + self.switch_to_random_interface() + changed = True + else: + if self.default_server in self.disconnected_servers: + if now - self.server_retry_time > SERVER_RETRY_INTERVAL: + self.disconnected_servers.remove(self.default_server) + self.server_retry_time = now + changed = True + else: + self.switch_to_interface(self.default_server) + changed = True + + # TODO: request fee_estimates if needed (now in synchronizer) + if changed: self.notify('updated') await asyncio.sleep(1)