URI: 
       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):