Browse Source

Fixed bug where switching servers causes assert failure.

283
Amir Taaki 13 years ago
parent
commit
6dfb9e12c7
  1. 8
      lib/interface.py

8
lib/interface.py

@ -313,7 +313,7 @@ class WalletSynchronizer(threading.Thread):
self.loop = loop self.loop = loop
self.init_interface() self.init_interface()
def init_interface(self): def init_interface(self, servers_loaded_callback=None):
try: try:
host, port, protocol = self.wallet.server.split(':') host, port, protocol = self.wallet.server.split(':')
port = int(port) port = int(port)
@ -332,6 +332,7 @@ class WalletSynchronizer(threading.Thread):
InterfaceClass = TcpStratumInterface InterfaceClass = TcpStratumInterface
self.interface = InterfaceClass(host, port, self.wallet.debug_server) self.interface = InterfaceClass(host, port, self.wallet.debug_server)
self.interface.servers_loaded_callback = servers_loaded_callback
self.wallet.interface = self.interface self.wallet.interface = self.interface
@ -363,7 +364,7 @@ class WalletSynchronizer(threading.Thread):
if ports and version: if ports and version:
servers.append( (host, ports) ) servers.append( (host, ports) )
self.interface.servers = servers self.interface.servers = servers
assert self.interface.servers_loaded_callback assert self.interface.servers_loaded_callback is not None
self.interface.servers_loaded_callback() self.interface.servers_loaded_callback()
elif method == 'blockchain.address.subscribe': elif method == 'blockchain.address.subscribe':
@ -427,7 +428,8 @@ class WalletSynchronizer(threading.Thread):
self.wallet.trigger_callbacks() self.wallet.trigger_callbacks()
if self.loop: if self.loop:
time.sleep(5) 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() self.start_interface()
continue continue
else: else:

Loading…
Cancel
Save