def handle_block(self, node, msg): self.got_blkmsg(msg.block.hash) print "downloaded block %s" % h2h(msg.block.hash) if blockchain.Block.exist_by_hash(msg.block.hash): return if blockchain.Block.exist_by_hash(msg.block.prev): blockchain.process_blockmsg(msg) self.check_missing(msg.block.hash) else: self.missing[msg.block.prev] = msg self.want.add(msg.block.prev)
def check_missing(self, h): blkmsg = self.missing.pop(h, None) while blkmsg: blockchain.process_blockmsg(blkmsg) blkmsg = self.missing.pop(blkmsg.block.hash, None)