diff --git a/lib/network.py b/lib/network.py index 2d2e58fc4..1a5f671e2 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