URI: 
       tfix bug in chunk validation - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 9bebc051493398e5bf5012bca3215b16187d9c01
   DIR parent f37b23b2a744f3fbbf10cb4ad76f7959c8676f3f
  HTML Author: ThomasV <thomasv@gitorious>
       Date:   Sun,  2 Mar 2014 17:43:46 +0100
       
       fix bug in chunk validation
       
       Diffstat:
         M lib/blockchain.py                   |      45 +++++++++-----------------------
       
       1 file changed, 12 insertions(+), 33 deletions(-)
       ---
   DIR diff --git a/lib/blockchain.py b/lib/blockchain.py
       t@@ -352,45 +352,24 @@ class Blockchain(threading.Thread):
        
        
            def get_and_verify_chunks(self, i, header, height):
       -        requested_chunks = []
       +
                queue = Queue.Queue()
                min_index = (self.local_height + 1)/2016
                max_index = (height + 1)/2016
       -
       -        for n in range(min_index, max_index + 1):
       -            i.send([ ('blockchain.block.get_chunk',[n])], lambda i,r:queue.put(r))
       -            requested_chunks.append(n)
       -
       -        print_error( "requested chunks:", requested_chunks )
       -
       -        while requested_chunks:
       -            try:
       -                r = queue.get(timeout=1)
       -            except Queue.Empty:
       +        n = min_index
       +        while n < max_index + 1:
       +            print_error( "Requesting chunk:", n )
       +            r = i.synchronous_get([ ('blockchain.block.get_chunk',[n])])[0]
       +            if not r: 
                        continue
       -            if not r: continue
       -
       -            if r.get('error'):
       -                print_error('Verifier received an error:', r)
       -                continue
       -
       -            # 3. handle response
       -            params = r['params']
       -            result = r['result']
       -
       -            index = params[0]
                    try:
       -                self.verify_chunk(index, result)
       +                self.verify_chunk(n, r)
       +                n = n + 1
                    except Exception:
       -                print_error('Verify chunk failed!!')
       -                return False
       -            requested_chunks.remove(index)
       +                print_error('Verify chunk failed!')
       +                n = n - 1
       +                if n < 0:
       +                    return False
        
                return True
        
       -
       -
       -
       -
       -
       -