home · contact · privacy
Fix faulty main loop, comment out inactive cause buggy) flood protection.
authorChristian Heller <c.heller@plomlompom.de>
Thu, 3 Dec 2020 01:12:13 +0000 (02:12 +0100)
committerChristian Heller <c.heller@plomlompom.de>
Thu, 3 Dec 2020 01:12:13 +0000 (02:12 +0100)
plomrogue/io.py

index 252fac18d3c3fba5a5f6308f535e165746f20b7d..8110647647b1a809692949220135cf7eb9c4679d 100644 (file)
@@ -17,19 +17,22 @@ class GameIO():
         """Handle commands coming through queue q, run game, send results back.
 
         As basic flood protection, Only accepts one command per connection per
         """Handle commands coming through queue q, run game, send results back.
 
         As basic flood protection, Only accepts one command per connection per
-        1/100 of a second.
+        1/100 of a second (currently commented out).
 
         """
         import time
         potential_flooders = {}
         while True:
             try:
 
         """
         import time
         potential_flooders = {}
         while True:
             try:
-                command, connection_id = q.get(timeout=0.001)
-                if connection_id in potential_flooders:
-                    if int(time.time() * 100) == potential_flooders[connection_id]:
-                        continue
-                potential_flooders[connection_id] = int(time.time() * 100)
-                self.handle_input(connection_id, command)
+                connection_id, command = q.get(timeout=0.001)
+
+                # FIXME: this would catch the init command flood
+                #if connection_id in potential_flooders:
+                #    if int(time.time() * 100) == potential_flooders[connection_id]:
+                #        continue
+                #potential_flooders[connection_id] = int(time.time() * 100)
+
+                self.handle_input(command, connection_id)
             except queue.Empty:
                 self.game.run_tick()
 
             except queue.Empty:
                 self.game.run_tick()
 
@@ -38,6 +41,7 @@ class GameIO():
 
         The game loop works sequentially through game commands received
         via self.queue from connected servers' clients."""
 
         The game loop works sequentially through game commands received
         via self.queue from connected servers' clients."""
+
         self.queue = queue.Queue()
         c = threading.Thread(target=self.loop, args=(self.queue,))
         c.start()
         self.queue = queue.Queue()
         c = threading.Thread(target=self.loop, args=(self.queue,))
         c.start()