From 035aa7f9f568aaed81dbb950042713e19b1ee140 Mon Sep 17 00:00:00 2001 From: fsb4000 Date: Mon, 20 Jul 2015 17:17:58 +0600 Subject: [PATCH] fix server crash due to orphaned block in header file --- backends/bitcoind/blockchain_processor.py | 11 +++++++++-- 1 files changed, 9 insertions(+), 2 deletions(-) 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: -- 1.7.1