Browse Source

fix bug in chunk validation

283
ThomasV 11 years ago
parent
commit
9bebc05149
  1. 43
      lib/blockchain.py

43
lib/blockchain.py

@ -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!!')
print_error('Verify chunk failed!')
n = n - 1
if n < 0:
return False
requested_chunks.remove(index)
return True

Loading…
Cancel
Save