electrum

Electrum Bitcoin wallet
git clone https://git.parazyd.org/electrum
Log | Files | Refs | Submodules

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:
Melectrum/interface.py | 3+--
Melectrum/network.py | 6++++++
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: