commit e4bd445a385e9cd85dfb202c4e597aea4b9e818c
parent 64ab8222f77cd0c271da128154dabddf6fddb9ba
Author: SomberNight <somber.night@protonmail.com>
Date: Thu, 13 Sep 2018 20:50:32 +0200
network.new_interface: clarify how timed out interfaces are closed
Diffstat:
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/electrum/interface.py b/electrum/interface.py
@@ -264,8 +264,7 @@ class Interface(PrintError):
def mark_ready(self):
if self.ready.cancelled():
- self.close()
- raise asyncio.CancelledError()
+ raise GracefulDisconnect('conn establishment was too slow; *ready* future was cancelled')
if self.ready.done():
return
diff --git a/electrum/network.py b/electrum/network.py
@@ -630,6 +630,12 @@ class Network(PrintError):
#import traceback
#traceback.print_exc()
self.print_error(interface.server, "couldn't launch because", str(e), str(type(e)))
+ # note: connection_down will not call interface.close() as
+ # interface is not yet in self.interfaces. OTOH, calling
+ # interface.close() here will sometimes raise deep inside the
+ # asyncio internal select.select... instead, interface will close
+ # itself when it detects the cancellation of interface.ready;
+ # however this might take several seconds...
self.connection_down(interface.server)
return
finally: