diff --git a/kcp/local.py b/kcp/local.py index b361f7e..0682e11 100644 --- a/kcp/local.py +++ b/kcp/local.py @@ -30,7 +30,7 @@ def ds_factory(): tunnel = protocol.tunnel return tunnel.create_connection() - server = await asyncio.start_server(functools.partial(open_pipe, ds_factory=ds_factory), host=config.local_address, + server = await asyncio.start_server(functools.partial(open_pipe, ds_factory=ds_factory), host=config.local, port=config.local_port) logging.info("starting local at %s:%s", config.local, config.local_port) diff --git a/kcp/protocols.py b/kcp/protocols.py index e0b9df7..8cb8a3b 100644 --- a/kcp/protocols.py +++ b/kcp/protocols.py @@ -106,13 +106,15 @@ def cb(fut): task = loop.create_task(self.create_connection(conv)) task.add_done_callback(cb) + self.accept_dict[conv] = task def close(self, exc): sessions = self.sessions for session in sessions.values(): session.protocol.eof_received() session.protocol.connection_lost(exc) - del sessions[session.conv] + sessions.clear() + self.accept_dict.clear() del sessions self.sessions = None diff --git a/kcp/server.py b/kcp/server.py index cd44463..1c01658 100644 --- a/kcp/server.py +++ b/kcp/server.py @@ -22,7 +22,7 @@ def ds_factory(): protocol = ServerDataGramHandlerProtocol(functools.partial(open_pipe, ds_factory=ds_factory)) await loop.create_datagram_endpoint(lambda: protocol, local_addr=(config.local, config.local_port)) - logging.info("start server at %s:%s", config.local_address, config.local_port) + logging.info("start server at %s:%s", config.local, config.local_port) updater.load_config(config) updater.run() for signame in {'SIGQUIT', 'SIGTERM'}: