From: fsb4000 Date: Mon, 20 Jul 2015 11:17:58 +0000 (+0600) Subject: fix server crash due to orphaned block in header file X-Git-Url: https://git.novaco.in/?p=electrum-server.git;a=commitdiff_plain;h=035aa7f9f568aaed81dbb950042713e19b1ee140 fix server crash due to orphaned block in header file --- diff --git a/backends/bitcoind/blockchain_processor.py b/backends/bitcoind/blockchain_processor.py index 3d93fd8..7f65aa6 100644 --- a/backends/bitcoind/blockchain_processor.py +++ b/backends/bitcoind/blockchain_processor.py @@ -158,10 +158,17 @@ class BlockchainProcessor(Processor): try: while height < db_height: - height = height + 1 + height += 1 header = self.get_header(height) if height > 1: - assert prev_hash == header.get('prev_block_hash') + if prev_hash != header.get('prev_block_hash'): + # The prev_hash block is orphaned, go back + print_log("reorganizing, a block in file is orphaned:", prev_hash) + # Go to the parent of the orphaned block + height -= 2 + prev_hash = self.hash_header(self.read_header(height)) + continue + self.write_header(header, sync=False) prev_hash = self.hash_header(header) if (height % 1000) == 0: