diff --git a/lib/synchronizer.py b/lib/synchronizer.py index 4b81810db..f3f4cbb5f 100644 --- a/lib/synchronizer.py +++ b/lib/synchronizer.py @@ -50,6 +50,8 @@ class Synchronizer(ThreadJob): self.requested_histories = {} self.requested_addrs = set() self.lock = Lock() + + self.initialized = False self.initialize() def parse_response(self, response): @@ -84,7 +86,7 @@ class Synchronizer(ThreadJob): return bh2u(hashlib.sha256(status.encode('ascii')).digest()) def on_address_status(self, response): - if self.wallet.synchronizer is None: + if self.wallet.synchronizer is None and self.initialized: return # we have been killed, this was just an orphan callback params, result = self.parse_response(response) if not params: @@ -100,7 +102,7 @@ class Synchronizer(ThreadJob): self.requested_addrs.remove(addr) def on_address_history(self, response): - if self.wallet.synchronizer is None: + if self.wallet.synchronizer is None and self.initialized: return # we have been killed, this was just an orphan callback params, result = self.parse_response(response) if not params: @@ -131,7 +133,7 @@ class Synchronizer(ThreadJob): self.requested_histories.pop(addr) def tx_response(self, response): - if self.wallet.synchronizer is None: + if self.wallet.synchronizer is None and self.initialized: return # we have been killed, this was just an orphan callback params, result = self.parse_response(response) if not params: @@ -183,6 +185,7 @@ class Synchronizer(ThreadJob): if self.requested_tx: self.print_error("missing tx", self.requested_tx) self.subscribe_to_addresses(set(self.wallet.get_addresses())) + self.initialized = True def run(self): '''Called from the network proxy thread main loop.'''