From b71e95b1a5d0623e55597629d1bd829464c64312 Mon Sep 17 00:00:00 2001 From: Neil Booth Date: Sun, 14 Apr 2019 16:10:09 +0100 Subject: [PATCH] _close_servers: close the servers before waiting Might help #795 --- electrumx/server/session.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/electrumx/server/session.py b/electrumx/server/session.py index fb4ef6c..24cc426 100644 --- a/electrumx/server/session.py +++ b/electrumx/server/session.py @@ -164,14 +164,13 @@ class SessionManager(object): async def _close_servers(self, kinds): '''Close the servers of the given kinds (TCP etc.).''' + kinds = set(kinds).intersection(self.servers) if kinds: - self.logger.info('closing down {} listening servers' - .format(', '.join(kinds))) - for kind in kinds: - server = self.servers.pop(kind, None) - if server: - server.close() - await server.wait_closed() + self.logger.info(f'closing down {", ".join(kinds)} listening servers') + servers = [self.servers.pop(kind) for kind in kinds] + # Close all before waiting + [server.close() for server in servers] + [await server.wait_closed() for server in servers] async def _manage_servers(self): paused = False