|
@@ -126,15 +126,17 @@ class Server(object):
|
|
|
def make_socket(self):
|
|
|
lserver.debug("making a {} socket".format(self.af_family))
|
|
|
if self.af_family == "AF_INET":
|
|
|
- return socket.socket(socket.AF_INET,socket.SOCK_STREAM)
|
|
|
+ s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
|
|
|
elif self.af_family == "AF_UNIX":
|
|
|
- return socket.socket(socket.AF_UNIX,socket.SOCK_STREAM)
|
|
|
+ s = socket.socket(socket.AF_UNIX,socket.SOCK_STREAM)
|
|
|
else:
|
|
|
raise ValueError(
|
|
|
"AF_FAMILY '{}' not supported!".format(
|
|
|
self.af_family
|
|
|
)
|
|
|
)
|
|
|
+ s = curio.io.Socket(s)
|
|
|
+ return s
|
|
|
|
|
|
def make_handler(self, conn, addr):
|
|
|
return self.handler(conn, addr, self, **self.handler_kwargs)
|
|
@@ -178,6 +180,7 @@ class Server(object):
|
|
|
# self.socket.settimeout(1)
|
|
|
|
|
|
def start(self):
|
|
|
+ lserver.debug(dir(self))
|
|
|
curio.run(self.run)
|
|
|
|
|
|
async def run(self):
|
|
@@ -198,7 +201,7 @@ class Server(object):
|
|
|
handler = self.make_handler(conn, addr)
|
|
|
self.register_conn(conn, addr)
|
|
|
self.register_handler(handler, conn)
|
|
|
- await cutio.spawn(self.loop(conn))
|
|
|
+ await curio.spawn(self.wait_for_client(conn))
|
|
|
|
|
|
# for s in read_sockets_confirmed:
|
|
|
# socket_handler = self.conn_to_handler.get(s, None)
|
|
@@ -231,33 +234,33 @@ class Server(object):
|
|
|
# lserver.debug(socket_handler)
|
|
|
# time.sleep(1)
|
|
|
|
|
|
- async def wait_for_client(self,socket,handler):
|
|
|
- while True:
|
|
|
- try:
|
|
|
+ async def wait_for_client(self,socket,handler):
|
|
|
+ while True:
|
|
|
+ try:
|
|
|
+ if self.log_ip:
|
|
|
+ lserver.debug(
|
|
|
+ "waiting for {} to send something"
|
|
|
+ .format(socket.getsockname()))
|
|
|
+ else:
|
|
|
+ lserver.debug(
|
|
|
+ "waiting for the client to send something")
|
|
|
+ data = await handler.recv()
|
|
|
+ if not data:
|
|
|
if self.log_ip:
|
|
|
- lserver.debug(
|
|
|
- "waiting for {} to send something"
|
|
|
+ lserver.info(
|
|
|
+ "the connection to {} was closed"
|
|
|
.format(socket.getsockname()))
|
|
|
else:
|
|
|
- lserver.debug(
|
|
|
- "waiting for the client to send something")
|
|
|
- data = await handler.recv()
|
|
|
- if not data:
|
|
|
- if self.log_ip:
|
|
|
- lserver.info(
|
|
|
- "the connection to {} was closed"
|
|
|
- .format(socket.getsockname()))
|
|
|
- else:
|
|
|
- lserver.info(
|
|
|
- "the connection to the client was closed")
|
|
|
- self.unregister_handler(handler, socket)
|
|
|
- self.unregister_conn(socket)
|
|
|
- handler.close()
|
|
|
- else:
|
|
|
- lschat.info("Client:"+data.strip())
|
|
|
- socket_handler.handle(data)
|
|
|
- except Exception as e:
|
|
|
- lserver.error(e, exc_info=True)
|
|
|
+ lserver.info(
|
|
|
+ "the connection to the client was closed")
|
|
|
+ self.unregister_handler(handler, socket)
|
|
|
+ self.unregister_conn(socket)
|
|
|
+ handler.close()
|
|
|
+ else:
|
|
|
+ lschat.info("Client:"+data.strip())
|
|
|
+ socket_handler.handle(data)
|
|
|
+ except Exception as e:
|
|
|
+ lserver.error(e, exc_info=True)
|
|
|
|
|
|
|
|
|
class Client(threading.Thread):
|