From d9cc41d1d0ea6cbd912d68ce8bdd13e59a8ef696 Mon Sep 17 00:00:00 2001 From: AriAlavi Date: Tue, 1 Sep 2020 16:26:23 -0700 Subject: [PATCH] More accurate connected users --- network.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/network.py b/network.py index 663ccc8..15cdc21 100644 --- a/network.py +++ b/network.py @@ -84,11 +84,16 @@ def __init__(self, shared_reference): def add(self, ip): self.conns[ip] = time.time() self.shared_reference[0] = len(self.conns.keys()) + def remove(self, ip): + try: + del self.conns[ip] + except: + pass def purge(self): now = time.time() to_remove = [] for ip, last in self.conns.items(): - if now - last > 60: + if now - last > 60 * 10: to_remove.append(ip) for ip in to_remove: del self.conns[ip] @@ -177,9 +182,12 @@ async def _handle_client(self, r, w): assert isinstance(w, asyncio.StreamWriter) try: func = self.BYTE_MAP[await r.read(1)] - self.connection_q.add(r._transport.get_extra_info('peername')) + ip = r._transport.get_extra_info('peername') + self.connection_q.add(ip) await func(self, r, w) + self.connection_q.remove(ip) except ConnectionResetError: + self.connection_q.remove(ip) pass async def killServer(self):