tdo not timeout if interface is receiving data - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit 8c07bdc3bc5bb2a6b7fb7d75a8486beb803c4e95 DIR parent 233fd8ed77b92204e5edac175bfd5fb31c2cb204 HTML Author: ThomasV <thomasv@gitorious> Date: Fri, 8 May 2015 17:45:59 +0200 do not timeout if interface is receiving data Diffstat: M lib/interface.py | 2 +- M lib/util.py | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) --- DIR diff --git a/lib/interface.py b/lib/interface.py t@@ -287,7 +287,7 @@ class TcpInterface(threading.Thread): self.send_request({'method':'server.version', 'params':[ELECTRUM_VERSION, PROTOCOL_VERSION]}) self.ping_time = time.time() # stop interface if we have been waiting for more than 10 seconds - if self.unanswered_requests and time.time() - self.request_time > 10: + if self.unanswered_requests and time.time() - self.self.request_time > 10 and self.pipe.idle_time() > 10: self.print_error("interface timeout", len(self.unanswered_requests)) self.stop() DIR diff --git a/lib/util.py b/lib/util.py t@@ -323,10 +323,14 @@ class SocketPipe: self.socket = socket self.message = '' self.set_timeout(0.1) + self.recv_time = time.time() def set_timeout(self, t): self.socket.settimeout(t) + def idle_time(self): + return time.time() - self.recv_time + def get(self): while True: response, self.message = parse_json(self.message) t@@ -356,6 +360,7 @@ class SocketPipe: self.socket.close() return None self.message += data + self.recv_time = time.time() def send(self, request): out = json.dumps(request) + '\n'