From d5d5e8af5c77760e8e20a5565388b9acc337279b Mon Sep 17 00:00:00 2001 From: ThomasV Date: Mon, 24 Jul 2017 08:46:49 +0200 Subject: [PATCH] fix: handle multiple forks at same checkpoint --- lib/network.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/network.py b/lib/network.py index 2d2e58fc..1a5f671e 100644 --- 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