From 1b83a1d09a12e0bf2925ef47ae734fe23be69779 Mon Sep 17 00:00:00 2001
From: Victor Shyba <victor1984@riseup.net>
Date: Fri, 27 Mar 2020 22:53:55 -0300
Subject: [PATCH] test and fix verifying from middle

---
 lbry/wallet/header.py             | 7 +++++--
 tests/unit/wallet/test_headers.py | 3 +++
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/lbry/wallet/header.py b/lbry/wallet/header.py
index 0daf49cc1..2fa066cdf 100644
--- a/lbry/wallet/header.py
+++ b/lbry/wallet/header.py
@@ -311,12 +311,15 @@ class Headers:
                 headers = headers[:(len(headers) // self.header_size) * self.header_size]
             for header_hash, header in self._iterate_headers(height, headers):
                 height = header['block_height']
-                if height:
+                if previous_header_hash:
                     if header['prev_block_hash'] != previous_header_hash:
                         fail = True
-                else:
+                elif height == 0:
                     if header_hash != self.genesis_hash:
                         fail = True
+                else:
+                    # for sanity and clarity, since it is the only way we can end up here
+                    assert start_height > 0 and height == start_height
                 if fail:
                     log.warning("Header file corrupted at height %s, truncating it.", height - 1)
                     def __truncate(at_height):
diff --git a/tests/unit/wallet/test_headers.py b/tests/unit/wallet/test_headers.py
index 425d825e3..5ebb333c3 100644
--- a/tests/unit/wallet/test_headers.py
+++ b/tests/unit/wallet/test_headers.py
@@ -143,6 +143,9 @@ class TestHeaders(AsyncioTestCase):
         self.assertEqual(7, headers.height)
         await headers.connect(len(headers), HEADERS[block_bytes(8):])
         self.assertEqual(19, headers.height)
+        # verify from middle
+        await headers.repair(start_height=10)
+        self.assertEqual(19, headers.height)
 
     async def test_misalignment_triggers_repair_on_open(self):
         headers = Headers(':memory:')