mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-06-05 18:52:29 +02:00
dac53b5Modify getblocktxn handler not to drop requests for old blocks (Russell Yanofsky)55bfddc[qa] Fix stale data bug in test_compactblocks_not_at_tip (Russell Yanofsky)47e9659[qa] Fix bug in compactblocks v2 merge (Russell Yanofsky)
This commit is contained in:
@@ -300,8 +300,8 @@ class CompactBlocksTest(BitcoinTestFramework):
|
||||
assert(segwit_tx_generated) # check that our test is not broken
|
||||
|
||||
# Wait until we've seen the block announcement for the resulting tip
|
||||
tip = int(self.nodes[0].getbestblockhash(), 16)
|
||||
assert(self.test_node.wait_for_block_announcement(tip))
|
||||
tip = int(node.getbestblockhash(), 16)
|
||||
assert(test_node.wait_for_block_announcement(tip))
|
||||
|
||||
# Now mine a block, and look at the resulting compact block.
|
||||
test_node.clear_block_announcement()
|
||||
@@ -589,8 +589,8 @@ class CompactBlocksTest(BitcoinTestFramework):
|
||||
assert_equal(int(node.getbestblockhash(), 16), block.sha256)
|
||||
|
||||
def test_getblocktxn_handler(self, node, test_node, version):
|
||||
# bitcoind won't respond for blocks whose height is more than 15 blocks
|
||||
# deep.
|
||||
# bitcoind will not send blocktxn responses for blocks whose height is
|
||||
# more than 10 blocks deep.
|
||||
MAX_GETBLOCKTXN_DEPTH = 10
|
||||
chain_height = node.getblockcount()
|
||||
current_height = chain_height
|
||||
@@ -623,11 +623,17 @@ class CompactBlocksTest(BitcoinTestFramework):
|
||||
test_node.last_blocktxn = None
|
||||
current_height -= 1
|
||||
|
||||
# Next request should be ignored, as we're past the allowed depth.
|
||||
# Next request should send a full block response, as we're past the
|
||||
# allowed depth for a blocktxn response.
|
||||
block_hash = node.getblockhash(current_height)
|
||||
msg.block_txn_request = BlockTransactionsRequest(int(block_hash, 16), [0])
|
||||
with mininode_lock:
|
||||
test_node.last_block = None
|
||||
test_node.last_blocktxn = None
|
||||
test_node.send_and_ping(msg)
|
||||
with mininode_lock:
|
||||
test_node.last_block.block.calc_sha256()
|
||||
assert_equal(test_node.last_block.block.sha256, int(block_hash, 16))
|
||||
assert_equal(test_node.last_blocktxn, None)
|
||||
|
||||
def test_compactblocks_not_at_tip(self, node, test_node):
|
||||
@@ -648,6 +654,8 @@ class CompactBlocksTest(BitcoinTestFramework):
|
||||
node.generate(1)
|
||||
wait_until(test_node.received_block_announcement, timeout=30)
|
||||
test_node.clear_block_announcement()
|
||||
with mininode_lock:
|
||||
test_node.last_block = None
|
||||
test_node.send_message(msg_getdata([CInv(4, int(new_blocks[0], 16))]))
|
||||
success = wait_until(lambda: test_node.last_block is not None, timeout=30)
|
||||
assert(success)
|
||||
|
||||
Reference in New Issue
Block a user