electrum

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

commit 8ee1f140d8a530e5cb41ff204aa09cfef149f0b4
parent f9a5f2e1835e8326d1d030a6e79bd148455ee6be
Author: SomberNight <somber.night@protonmail.com>
Date:   Wed, 19 Sep 2018 20:30:54 +0200

interface: split run_fetch_blocks

The 'continue' in the middle was too easy to miss.
We want a 'network_updated' trigger from every interface,
not just the fastest.

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

diff --git a/electrum/interface.py b/electrum/interface.py @@ -385,18 +385,22 @@ class Interface(PrintError): if self.tip < constants.net.max_checkpoint(): raise GracefulDisconnect('server tip below max checkpoint') self.mark_ready() - async with self.network.bhi_lock: - if self.blockchain.height() >= height and self.blockchain.check_header(header): - # another interface amended the blockchain - self.print_error("skipping header", height) - continue - _, height = await self.step(height, header) - # in the simple case, height == self.tip+1 - if height <= self.tip: - await self.sync_until(height) + await self._process_header_at_tip() self.network.trigger_callback('network_updated') self.network.switch_lagging_interface() + async def _process_header_at_tip(self): + height, header = self.tip, self.tip_header + async with self.network.bhi_lock: + if self.blockchain.height() >= height and self.blockchain.check_header(header): + # another interface amended the blockchain + self.print_error("skipping header", height) + return + _, height = await self.step(height, header) + # in the simple case, height == self.tip+1 + if height <= self.tip: + await self.sync_until(height) + async def sync_until(self, height, next_height=None): if next_height is None: next_height = self.tip