add a sleep() to sessions, and remove some dead code
[electrum-server.git] / transports / stratum_tcp.py
index 6c36086..6ae2940 100644 (file)
@@ -94,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:
@@ -148,6 +144,8 @@ class TcpClientRequestor(threading.Thread):
             self.dispatcher.push_response({"error": "syntax error", "request": raw_command})
         else:
             self.dispatcher.push_request(self.session, command)
+            # sleep a bit to prevent a single session from DOSing the queue
+            time.sleep(0.01)
 
         return True