electrum

Electrum Bitcoin wallet
git clone https://git.parazyd.org/electrum
Log | Files | Refs | Submodules

commit a38298c5ee583625318ce72f0e6d13254c62a88c
parent ac956a97cbf5639da49411838b474b02f0333a2e
Author: ThomasV <thomasv@gitorious>
Date:   Fri,  4 Oct 2013 19:27:50 +0200

handle network.interface being None when network is disconnected

Diffstat:
Mgui/qt/network_dialog.py | 8+++-----
Mlib/blockchain.py | 6+++++-
Mlib/network.py | 9++++++++-
Mlib/wallet.py | 8++++----
4 files changed, 20 insertions(+), 11 deletions(-)

diff --git a/gui/qt/network_dialog.py b/gui/qt/network_dialog.py @@ -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() @@ -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")) diff --git a/lib/blockchain.py b/lib/blockchain.py @@ -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'): diff --git a/lib/network.py b/lib/network.py @@ -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 @@ -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 diff --git a/lib/wallet.py b/lib/wallet.py @@ -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):