stop session immediately if handshake fails; move some code
[electrum-server.git] / transports / stratum_tcp.py
index 5fb26a5..a1ac042 100644 (file)
@@ -67,7 +67,10 @@ class TcpClientResponder(threading.Thread):
 
     def run(self):
         while not self.session.stopped():
-            response = self.session.response_queue.get()
+            try:
+                response = self.session.response_queue.get(timeout=10)
+            except queue.Empty:
+                continue
             data = json.dumps(response) + "\n"
             try:
                 while data:
@@ -91,26 +94,22 @@ class TcpClientRequestor(threading.Thread):
         try:
             self.session.do_handshake()
         except:
+            self.session.stop()
             return
 
         while not self.shared.stopped():
-            if not self.update():
+
+            data = self.receive()
+            if not data:
+                self.session.stop()
                 break
 
+            self.message += data
             self.session.time = time.time()
 
             while self.parse():
                 pass
 
-    def update(self):
-        data = self.receive()
-        if not data:
-            # close_session
-            self.session.stop()
-            return False
-
-        self.message += data
-        return True
 
     def receive(self):
         try: