commit d5d5e8af5c77760e8e20a5565388b9acc337279b
parent 732679aa3dd8eab99f1d77e1e5644fe6b3105066
Author: ThomasV <thomasv@electrum.org>
Date: Mon, 24 Jul 2017 08:46:49 +0200
fix: handle multiple forks at same checkpoint
Diffstat:
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/lib/network.py b/lib/network.py
@@ -835,13 +835,19 @@ class Network(util.DaemonThread):
if branch is not None:
if branch.check_header(interface.bad_header):
interface.print_error('joining chain', interface.bad)
+ next_height = None
elif branch.parent().check_header(header):
interface.print_error('reorg', interface.bad, interface.tip)
interface.blockchain = branch.parent()
+ next_height = None
else:
- # should not happen
- raise BaseException('error')
- next_height = None
+ interface.print_error('checkpoint conflicts with existing fork', branch.path())
+ open(branch.path(), 'w+').close()
+ branch.save_header(interface.bad_header)
+ interface.mode = 'catch_up'
+ interface.blockchain = branch
+ next_height = interface.bad + 1
+ interface.blockchain.catch_up = interface.server
else:
bh = interface.blockchain.height()
next_height = None