From 58c817f81aba5da109113f26d4b6d80c492b8f4d Mon Sep 17 00:00:00 2001 From: ThomasV Date: Tue, 29 Jul 2014 12:13:21 +0200 Subject: [PATCH] close interfaces on shutdown --- electrum | 2 +- lib/interface.py | 4 ++-- lib/network.py | 7 ++++++- lib/network_proxy.py | 7 +++---- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/electrum b/electrum index 248cd9ada..56c3fc718 100755 --- a/electrum +++ b/electrum @@ -209,7 +209,7 @@ if __name__ == '__main__': # we use daemon threads, their termination is enforced. # this sleep command gives them time to terminate cleanly. - time.sleep(0.2) + time.sleep(0.3) sys.exit(0) if cmd == 'daemon': diff --git a/lib/interface.py b/lib/interface.py index 9fec050e6..cd711386e 100644 --- a/lib/interface.py +++ b/lib/interface.py @@ -311,9 +311,9 @@ class TcpInterface(threading.Thread): break self.process_response(response) - print_error("exit interface", self.server) self.change_status() - + print_error("closing connection:", self.server) + def change_status(self): # print_error( "change status", self.server, self.is_connected) self.response_queue.put((self, None)) diff --git a/lib/network.py b/lib/network.py index 04f4d1c48..b2b09799e 100644 --- a/lib/network.py +++ b/lib/network.py @@ -368,7 +368,7 @@ class Network(threading.Thread): def run(self): while self.is_running(): try: - i, response = self.queue.get(0.1) #timeout = 30 if self.interfaces else 3) + i, response = self.queue.get(timeout=0.1) #timeout = 30 if self.interfaces else 3) except Queue.Empty: if len(self.interfaces) < self.num_server: self.start_random_interface() @@ -404,6 +404,10 @@ class Network(threading.Thread): if not self.interface.is_connected and self.config.get('auto_cycle'): self.switch_to_random_interface() + print_error("Network: Stopping interfaces") + for i in self.interfaces.values(): + i.stop() + def on_header(self, i, r): result = r.get('result') @@ -440,6 +444,7 @@ class Network(threading.Thread): self.response_queue.put(r) def stop(self): + print_error("stopping network") with self.lock: self.running = False diff --git a/lib/network_proxy.py b/lib/network_proxy.py index 0ee216f58..38cb0deb6 100644 --- a/lib/network_proxy.py +++ b/lib/network_proxy.py @@ -86,8 +86,9 @@ class NetworkProxy(threading.Thread): break self.process(response) - print_error("NetworkProxy thread terminating") - self.stop() + if self.network: + self.network.stop() + print_error("NetworkProxy: terminating") def process(self, response): if self.debug: @@ -215,8 +216,6 @@ class NetworkProxy(threading.Thread): def stop(self): self.running = False - if self.network: - self.network.stop() def stop_daemon(self): return self.send([('daemon.stop',[])], None)