thandle network.interface being None when network is disconnected - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit a38298c5ee583625318ce72f0e6d13254c62a88c DIR parent ac956a97cbf5639da49411838b474b02f0333a2e HTML Author: ThomasV <thomasv@gitorious> Date: Fri, 4 Oct 2013 19:27:50 +0200 handle network.interface being None when network is disconnected Diffstat: M gui/qt/network_dialog.py | 8 +++----- M lib/blockchain.py | 6 +++++- M lib/network.py | 9 ++++++++- M lib/wallet.py | 8 ++++---- 4 files changed, 20 insertions(+), 11 deletions(-) --- DIR diff --git a/gui/qt/network_dialog.py b/gui/qt/network_dialog.py t@@ -50,18 +50,16 @@ class NetworkDialog(QDialog): else: status = _("Not connected") - if interface.is_connected: + if network.is_connected(): status += "\n" + _("Main server:") + " %s"%(interface.host) else: status += "\n" + _("Disconnected from main server") - - server = interface.server else: import random status = _("Please choose a server.") + "\n" + _("Select 'Cancel' if you are offline.") - server = interface.server + server = network.default_server self.servers = network.get_servers() t@@ -148,7 +146,7 @@ class NetworkDialog(QDialog): if not self.config.is_modifiable('proxy'): for w in [self.proxy_host, self.proxy_port, self.proxy_mode]: w.setEnabled(False) - proxy_config = interface.proxy if interface.proxy else { "mode":"none", "host":"localhost", "port":"8080"} + proxy_config = network.proxy if network.proxy else { "mode":"none", "host":"localhost", "port":"8080"} self.proxy_mode.setCurrentIndex(self.proxy_mode.findText(str(proxy_config.get("mode").upper()))) self.proxy_host.setText(proxy_config.get("host")) self.proxy_port.setText(proxy_config.get("port")) DIR diff --git a/lib/blockchain.py b/lib/blockchain.py t@@ -92,7 +92,11 @@ class Blockchain(threading.Thread): print_error("error", i.server) # todo: dismiss that server - h = self.servers_height.get(self.network.interface.server) + if self.network.is_connected(): + h = self.servers_height.get(self.network.interface.server) + else: + h = None + if h is not None and h < height - 1: print_error( "Server is lagging", height, h) if self.config.get('auto_cycle'): DIR diff --git a/lib/network.py b/lib/network.py t@@ -166,6 +166,11 @@ class Network(threading.Thread): return self.interface.is_connected + def wait_until_connected(self): + while not self.interface: + time.sleep(1) + self.interface.connect_event.wait() + def set_proxy(self, proxy): self.proxy = proxy t@@ -175,7 +180,9 @@ class Network(threading.Thread): return # stop the interface in order to terminate subscriptions - self.interface.stop() + if self.interface: + self.interface.stop() + # notify gui self.trigger_callback('disconnecting') # start interface DIR diff --git a/lib/wallet.py b/lib/wallet.py t@@ -1510,12 +1510,12 @@ class WalletSynchronizer(threading.Thread): self.running = True while self.is_running(): - interface = self.network.interface - if not interface.is_connected: + + if not self.network.is_connected(): print_error("synchronizer: waiting for interface") - interface.connect_event.wait() + self.network.wait_until_connected() - self.run_interface(interface) + self.run_interface(self.network.interface) def run_interface(self, interface):