electrum

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

commit 2039c07a2d79e0d151224339134360caa34bed92
parent 1419a5c60d7dc3b0f45846c3d5873b4b32d147b1
Author: SomberNight <somber.night@protonmail.com>
Date:   Wed, 12 Sep 2018 18:45:15 +0200

interface.mark_ready: handle cancellation

Diffstat:
Melectrum/interface.py | 13+++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/electrum/interface.py b/electrum/interface.py @@ -252,17 +252,23 @@ class Interface(PrintError): assert False def mark_ready(self): + if self.ready.cancelled(): + self.close() + raise asyncio.CancelledError() + if self.ready.done(): + return + assert self.tip_header chain = blockchain.check_header(self.tip_header) if not chain: self.blockchain = blockchain.blockchains[0] else: self.blockchain = chain + assert self.blockchain is not None self.print_error("set blockchain with height", self.blockchain.height()) - if not self.ready.done(): - self.ready.set_result(1) + self.ready.set_result(1) async def save_certificate(self): if not os.path.exists(self.cert_path): @@ -349,8 +355,7 @@ class Interface(PrintError): self.tip = height if self.tip < constants.net.max_checkpoint(): raise GracefulDisconnect('server tip below max checkpoint') - if not self.ready.done(): - self.mark_ready() + self.mark_ready() async with self.network.bhi_lock: if self.blockchain.height() < header['block_height']-1: _, height = await self.sync_until(height, None)