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