From 9afbf211973840cfdc794b1342e27cb7f71da6c8 Mon Sep 17 00:00:00 2001 From: ThomasV Date: Sat, 24 Nov 2012 20:31:07 +0100 Subject: [PATCH] no daemon --- electrum | 7 +++++-- lib/interface.py | 5 +++++ lib/verifier.py | 4 +++- lib/wallet.py | 11 ++++------- 4 files changed, 17 insertions(+), 10 deletions(-) diff --git a/electrum b/electrum index 9134cca5..91ece799 100755 --- a/electrum +++ b/electrum @@ -230,7 +230,8 @@ if __name__ == '__main__': verifier = WalletVerifier(interface, config) wallet.set_verifier(verifier) - WalletSynchronizer(wallet, config).start() + synchronizer = WalletSynchronizer(wallet, config) + synchronizer.start() if not found and a == 'restore' and s is not None: try: @@ -250,9 +251,11 @@ if __name__ == '__main__': verifier.start() gui.main(url) wallet.save() + verifier.stop() synchronizer.stop() - #interface.stop() + interface.stop() + sys.exit(0) if cmd not in known_commands: diff --git a/lib/interface.py b/lib/interface.py index 8ca79475..7c17f239 100644 --- a/lib/interface.py +++ b/lib/interface.py @@ -495,6 +495,11 @@ class Interface(threading.Thread): self.is_connected = False # this exits the polling loop self.trigger_callback('disconnecting') # for actively disconnecting + def stop(self): + if self.protocol in 'st' and self.s: + self.s.shutdown(socket.SHUT_RDWR) + self.s.close() + def get_servers_list(self): plist = {} diff --git a/lib/verifier.py b/lib/verifier.py index e96d50b1..578c8a63 100644 --- a/lib/verifier.py +++ b/lib/verifier.py @@ -65,6 +65,7 @@ class WalletVerifier(threading.Thread): def stop(self): with self.lock: self.running = False + self.interface.poke('verifier') def is_running(self): with self.lock: return self.running @@ -126,9 +127,10 @@ class WalletVerifier(threading.Thread): self.pending_headers.remove(header) try: - r = self.interface.get_response('verifier',timeout=0.1) + r = self.interface.get_response('verifier',timeout=1) except Queue.Empty: continue + if not r: continue # 3. handle response method = r['method'] diff --git a/lib/wallet.py b/lib/wallet.py index 0861cd09..373bf699 100644 --- a/lib/wallet.py +++ b/lib/wallet.py @@ -1165,6 +1165,7 @@ class WalletSynchronizer(threading.Thread): def stop(self): with self.lock: self.running = False + self.interface.poke('synchronizer') def is_running(self): with self.lock: return self.running @@ -1233,14 +1234,10 @@ class WalletSynchronizer(threading.Thread): self.was_updated = False # 2. get a response - try: - r = self.interface.get_response('synchronizer', timeout=0.1) - except: - continue + r = self.interface.get_response('synchronizer') - # poke sends None. (check if still needed) - if not r: - continue + # poke sends None. (needed during stop) + if not r: continue # 3. handle response method = r['method']