diff --git a/server/controller.py b/server/controller.py index 41dc9c1..e609abd 100644 --- a/server/controller.py +++ b/server/controller.py @@ -591,7 +591,7 @@ class Controller(ServerBase): def rpc_stop(self): '''Shut down the server cleanly.''' - self.shutdown_event.set() + self.loop.call_soon(self.shutdown_event.set) return 'stopping' def rpc_getinfo(self): diff --git a/server/peers.py b/server/peers.py index c7a6a96..aa16b05 100644 --- a/server/peers.py +++ b/server/peers.py @@ -16,7 +16,7 @@ import time from collections import defaultdict, Counter from functools import partial -from aiorpcx import ClientSession, RPCError, SOCKSProxy +from aiorpcx import ClientSession, RPCError, SOCKSProxy, ConnectionError from lib.peer import Peer from lib.util import ConnectionLogger @@ -73,7 +73,7 @@ class PeerSession(ClientSession): def is_good(self, request, instance): try: result = request.result() - except asyncio.CancelledError: + except (asyncio.CancelledError, ConnectionError): return False except asyncio.TimeoutError as e: self.fail(request, str(e))