self.servers = []
def loop(self, q):
- """Handle commands coming through queue q, run game, send results back."""
+ """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.
+
+ """
+ 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)
except queue.Empty:
self.game.run_tick()