Fixed bug where switching servers causes assert failure.
authorAmir Taaki <genjix@riseup.net>
Mon, 27 Aug 2012 02:02:15 +0000 (04:02 +0200)
committerAmir Taaki <genjix@riseup.net>
Mon, 27 Aug 2012 02:02:15 +0000 (04:02 +0200)
lib/interface.py
lib/wallet.py

index 7062bee..db5db09 100644 (file)
@@ -313,7 +313,7 @@ class WalletSynchronizer(threading.Thread):
         self.loop = loop
         self.init_interface()
 
-    def init_interface(self):
+    def init_interface(self, servers_loaded_callback=None):
         try:
             host, port, protocol = self.wallet.server.split(':')
             port = int(port)
@@ -332,6 +332,7 @@ class WalletSynchronizer(threading.Thread):
             InterfaceClass = TcpStratumInterface
 
         self.interface = InterfaceClass(host, port, self.wallet.debug_server)
+        self.interface.servers_loaded_callback = servers_loaded_callback
         self.wallet.interface = self.interface
 
 
@@ -363,7 +364,7 @@ class WalletSynchronizer(threading.Thread):
                 if ports and version:
                     servers.append( (host, ports) )
             self.interface.servers = servers
-            assert self.interface.servers_loaded_callback
+            assert self.interface.servers_loaded_callback is not None
             self.interface.servers_loaded_callback()
 
         elif method == 'blockchain.address.subscribe':
@@ -427,7 +428,8 @@ class WalletSynchronizer(threading.Thread):
             self.wallet.trigger_callbacks()
             if self.loop:
                 time.sleep(5)
-                self.init_interface()
+                # Server has been changed. Copy callback for new interface.
+                self.init_interface(self.interface.servers_loaded_callback)
                 self.start_interface()
                 continue
             else:
index 5677cd4..95f7232 100644 (file)
@@ -350,7 +350,7 @@ class Wallet:
         # raise an error if the format isnt correct
         a,b,c = server.split(':')
         b = int(b)
-        assert c in ['t','h','n']
+        assert c in ['t', 'h', 'n']
         # set the server
         if server != self.server:
             self.server = server