Browse Source

network.new_interface: clarify how timed out interfaces are closed

3.3.3.1
SomberNight 6 years ago
parent
commit
e4bd445a38
No known key found for this signature in database GPG Key ID: B33B5F232C6271E9
  1. 3
      electrum/interface.py
  2. 6
      electrum/network.py

3
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

6
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:

Loading…
Cancel
Save