URI: 
       tfix blockchain offset - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 37143fd628bff1beafa1894bf643115b6966a7fb
   DIR parent ba2211f52e6cfafaac468e9635210a5eb2a96f5c
  HTML Author: ThomasV <thomasv@electrum.org>
       Date:   Fri, 14 Jul 2017 06:20:05 +0200
       
       fix blockchain offset
       
       Diffstat:
         M lib/blockchain.py                   |       2 +-
         M lib/network.py                      |      15 +++++++--------
       
       2 files changed, 8 insertions(+), 9 deletions(-)
       ---
   DIR diff --git a/lib/blockchain.py b/lib/blockchain.py
       t@@ -147,7 +147,7 @@ class Blockchain(util.PrintError):
            def save_header(self, header):
                height = header.get('block_height')
                if not self.is_saved:
       -            assert height == self.checkpoint + len(self.headers) + 1
       +            assert height == self.checkpoint + len(self.headers)
                    self.headers.append(header)
                    if len(self.headers) > 10:
                        self.fork_and_save()
   DIR diff --git a/lib/network.py b/lib/network.py
       t@@ -840,7 +840,7 @@ class Network(util.DaemonThread):
                        self.connection_down(interface.server)
                    interface.request = None
                    return
       -        can_connect = self.can_connect(header)
       +        can_connect = interface.blockchain.can_connect(header)
                if interface.mode == 'backward':
                    if can_connect:
                        interface.good = height
       t@@ -863,23 +863,21 @@ class Network(util.DaemonThread):
                    if interface.bad != interface.good + 1:
                        next_height = (interface.bad + interface.good) // 2
                    else:
       -                delta1 = interface.blockchain.height() - interface.good
       -                delta2 = interface.tip - interface.good
       -                interface.print_error("chain split detected at %d"%interface.good, delta1, delta2)
       -                interface.blockchain = Blockchain(self.config, False, interface.bad)
       +                interface.print_error("can connect at %d"% interface.good)
       +                interface.blockchain = Blockchain(self.config, interface.blockchain.filename, interface.good)
                        interface.blockchain.catch_up = interface.server
       -                self.blockchains[interface.bad] = interface.blockchain
       -                interface.print_error("catching up")
       +                self.blockchains[interface.good] = interface.blockchain
       +                interface.print_error("catching up with new chain")
                        interface.mode = 'catch_up'
                        next_height = interface.good
        
                elif interface.mode == 'catch_up':
                    if can_connect:
                        interface.blockchain.save_header(header)
       -                self.notify('updated')
                        next_height = height + 1 if height < interface.tip else None
                    else:
                        # go back
       +                interface.print_error("cannot connect", height)
                        interface.mode = 'backward'
                        interface.bad = height
                        next_height = height - 1
       t@@ -890,6 +888,7 @@ class Network(util.DaemonThread):
                        interface.mode = 'default'
                        interface.print_error('catch up done', interface.blockchain.height())
                        interface.blockchain.catch_up = None
       +                self.notify('updated')
        
                elif interface.mode == 'default':
                    assert not can_connect