From c116babab854f423d700e3969ca68f411931174e Mon Sep 17 00:00:00 2001 From: Yuxin Wang Date: Wed, 10 Oct 2018 16:40:54 -0400 Subject: [PATCH] Catch ConnectionResetError if the peer has disconnected. --- p2pfs/core/server.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/p2pfs/core/server.py b/p2pfs/core/server.py index 9577685..cf1faa6 100644 --- a/p2pfs/core/server.py +++ b/p2pfs/core/server.py @@ -40,6 +40,8 @@ class MessageServer: self._writers = set() self._server = None + self._is_closing = False + async def start(self): logger.info('Start listening on {}'.format(self._server_address)) # start server @@ -51,6 +53,7 @@ class MessageServer: async def stop(self): logger.warning('Shutting down {}'.format(self)) + self._is_closing = True self._server.close() await self._server.wait_closed() for writer in set(self._writers): @@ -92,6 +95,10 @@ class MessageServer: self._writers.add(writer) try: await self._process_connection(reader, writer) + except ConnectionResetError: + # the peer has disconnected, thus the writer will raise ConnectionResetError + # which is fine + pass finally: if not writer.is_closing(): writer.close()