Forráskód Böngészése

removed fake_wait and did some minor bugfixes

digital 7 éve
szülő
commit
3447e9cea5
2 módosított fájl, 15 hozzáadás és 17 törlés
  1. 0 5
      misc/__init__.py
  2. 15 12
      network/__init__.py

+ 0 - 5
misc/__init__.py

@@ -22,7 +22,6 @@ import sys
 import time
 import yaml
 
-import curio
 
 log = logging.getLogger(__name__+"")
 
@@ -58,10 +57,6 @@ config_files = [
     "config/commands.yaml",
 ]
 
-async def fake_wait_task():
-    cur_task = await curio.current_task()
-    await curio.ignore_after(0,cur_task.wait)
-
 def load_files(file_list,call):
     if not type(file_list) is list:
         file_list = [file_list]

+ 15 - 12
network/__init__.py

@@ -30,6 +30,7 @@ import traceback
 
 import blinker
 import curio
+import digilib.misc
 
 lclient = logging.getLogger(__name__+".client")
 lserver = logging.getLogger(__name__+".server")
@@ -82,14 +83,14 @@ class ConnHandlerBase(object):
             lserver.error(e, exc_info=True)
             return False
 
-    def close(self):
+    async def close(self):
         self.status = "closed"
         try:
-            self.socket.shutdown(0)
+            await self.socket.shutdown(0)
         except:
             lserver.debug("error during socket shutdown")
         try:
-            self.socket.close()
+            await self.socket.close()
         except:
             lserver.debug("error closing socket")
 
@@ -137,7 +138,7 @@ class Server(object):
         self.read_sockets_expected = [self.socket]
         atexit.register(self.shutdown)
 
-     def make_socket(self):
+    def make_socket(self):
         lserver.debug("making a {} socket".format(self.af_family))
         if self.af_family == "AF_INET":
             s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
@@ -203,7 +204,7 @@ class Server(object):
         # up a second time when the program exits
         atexit.unregister(self.shutdown)
         lserver.info("shutting down server")
-        error_handler(self.handle_tasks.cancel,log_text="handler cancel")
+        error_handler(self.handle_tasks.cancel_remaining,log_text="handler cancel")
         if self.socket:
             error_handler(self.socket.shutdown,log_text="socket shutdown")
             error_handler(self.socket.close,log_text="socket close")
@@ -228,12 +229,12 @@ class Server(object):
             handler = self.make_handler(conn, addr)
             self.register_conn(conn, addr)
             self.register_handler(handler, conn)
-            await self.handle_task.spawn(self.wait_for_client(conn,handler))
+            await self.handle_tasks.spawn(self.handle_client(conn,handler))
 
     async def handle_client(self,socket,handler):
-        _append_task()
-        # while True:
-        for i in range(1):
+        # _append_task()
+        while True:
+        # for i in range(1):
             try:
                 if self.log_ip:
                     lserver.debug("waiting for {} to send something"
@@ -249,7 +250,8 @@ class Server(object):
                         lserver.info("the connection to the client was closed")
                     self.unregister_handler(handler, socket)
                     self.unregister_conn(socket)
-                    handler.close()
+                    await handler.close()
+                    break
                 else:
                     lschat.info("Client:"+data.strip())
                     coro = handler.handle(data)
@@ -259,8 +261,9 @@ class Server(object):
                     lserver.error(e, exc_info=True)
                     # saver to use time.sleep
                     time.sleep(0.1)
-        digilib.misc.fake_wait_task()
-        _tasks.remove(cur_task)
+        cur_task = await curio.current_task()
+        await curio.ignore_after(0,cur_task.join)
+        # _tasks.remove(cur_task)
 
 
 class Client(threading.Thread):