commit eaf72aa9515bb3c09f68a483645dbeb96932616f
parent 0d05b84dc3234791d73f6aa098d7d799910943b4
Author: SomberNight <somber.night@protonmail.com>
Date: Sun, 29 Jul 2018 04:00:02 +0200
network: handle one-block-long fork
also add fixme about incorrect behaviour in case of a fork height higher than our local chain tip
Diffstat:
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/electrum/network.py b/electrum/network.py
@@ -912,6 +912,9 @@ class Network(util.DaemonThread):
next_height = height + 1
interface.blockchain.catch_up = interface.server
elif chain:
+ # FIXME should await "initial chunk download".
+ # binary search will NOT do the correct thing if we don't yet
+ # have all headers up to the fork height
interface.print_error("binary search")
interface.mode = 'binary'
interface.blockchain = chain
@@ -973,8 +976,10 @@ class Network(util.DaemonThread):
interface.blockchain = b
interface.print_error("new chain", b.checkpoint)
interface.mode = 'catch_up'
- next_height = interface.bad + 1
- interface.blockchain.catch_up = interface.server
+ maybe_next_height = interface.bad + 1
+ if maybe_next_height <= interface.tip:
+ next_height = maybe_next_height
+ interface.blockchain.catch_up = interface.server
else:
assert bh == interface.good
if interface.blockchain.catch_up is None and bh < interface.tip: