|
|
|
@ -188,28 +188,21 @@ class CompactBlocksTest(BitcoinTestFramework):
|
|
|
|
|
test_node.request_headers_and_sync(locator=[tip])
|
|
|
|
|
|
|
|
|
|
# Now try a SENDCMPCT message with too-high version
|
|
|
|
|
sendcmpct = msg_sendcmpct()
|
|
|
|
|
sendcmpct.version = preferred_version + 1
|
|
|
|
|
sendcmpct.announce = True
|
|
|
|
|
test_node.send_and_ping(sendcmpct)
|
|
|
|
|
test_node.send_and_ping(msg_sendcmpct(announce=True, version=preferred_version+1))
|
|
|
|
|
check_announcement_of_new_block(node, test_node, lambda p: "cmpctblock" not in p.last_message)
|
|
|
|
|
|
|
|
|
|
# Headers sync before next test.
|
|
|
|
|
test_node.request_headers_and_sync(locator=[tip])
|
|
|
|
|
|
|
|
|
|
# Now try a SENDCMPCT message with valid version, but announce=False
|
|
|
|
|
sendcmpct.version = preferred_version
|
|
|
|
|
sendcmpct.announce = False
|
|
|
|
|
test_node.send_and_ping(sendcmpct)
|
|
|
|
|
test_node.send_and_ping(msg_sendcmpct(announce=False, version=preferred_version))
|
|
|
|
|
check_announcement_of_new_block(node, test_node, lambda p: "cmpctblock" not in p.last_message)
|
|
|
|
|
|
|
|
|
|
# Headers sync before next test.
|
|
|
|
|
test_node.request_headers_and_sync(locator=[tip])
|
|
|
|
|
|
|
|
|
|
# Finally, try a SENDCMPCT message with announce=True
|
|
|
|
|
sendcmpct.version = preferred_version
|
|
|
|
|
sendcmpct.announce = True
|
|
|
|
|
test_node.send_and_ping(sendcmpct)
|
|
|
|
|
test_node.send_and_ping(msg_sendcmpct(announce=True, version=preferred_version))
|
|
|
|
|
check_announcement_of_new_block(node, test_node, lambda p: "cmpctblock" in p.last_message)
|
|
|
|
|
|
|
|
|
|
# Try one more time (no headers sync should be needed!)
|
|
|
|
@ -220,23 +213,17 @@ class CompactBlocksTest(BitcoinTestFramework):
|
|
|
|
|
check_announcement_of_new_block(node, test_node, lambda p: "cmpctblock" in p.last_message)
|
|
|
|
|
|
|
|
|
|
# Try one more time, after sending a version-1, announce=false message.
|
|
|
|
|
sendcmpct.version = preferred_version - 1
|
|
|
|
|
sendcmpct.announce = False
|
|
|
|
|
test_node.send_and_ping(sendcmpct)
|
|
|
|
|
test_node.send_and_ping(msg_sendcmpct(announce=False, version=preferred_version-1))
|
|
|
|
|
check_announcement_of_new_block(node, test_node, lambda p: "cmpctblock" in p.last_message)
|
|
|
|
|
|
|
|
|
|
# Now turn off announcements
|
|
|
|
|
sendcmpct.version = preferred_version
|
|
|
|
|
sendcmpct.announce = False
|
|
|
|
|
test_node.send_and_ping(sendcmpct)
|
|
|
|
|
test_node.send_and_ping(msg_sendcmpct(announce=False, version=preferred_version))
|
|
|
|
|
check_announcement_of_new_block(node, test_node, lambda p: "cmpctblock" not in p.last_message and "headers" in p.last_message)
|
|
|
|
|
|
|
|
|
|
if old_node is not None:
|
|
|
|
|
# Verify that a peer using an older protocol version can receive
|
|
|
|
|
# announcements from this node.
|
|
|
|
|
sendcmpct.version = preferred_version - 1
|
|
|
|
|
sendcmpct.announce = True
|
|
|
|
|
old_node.send_and_ping(sendcmpct)
|
|
|
|
|
old_node.send_and_ping(msg_sendcmpct(announce=True, version=preferred_version-1))
|
|
|
|
|
# Header sync
|
|
|
|
|
old_node.request_headers_and_sync(locator=[tip])
|
|
|
|
|
check_announcement_of_new_block(node, old_node, lambda p: "cmpctblock" in p.last_message)
|
|
|
|
@ -729,11 +716,7 @@ class CompactBlocksTest(BitcoinTestFramework):
|
|
|
|
|
node = self.nodes[0]
|
|
|
|
|
tip = node.getbestblockhash()
|
|
|
|
|
peer.get_headers(locator=[int(tip, 16)], hashstop=0)
|
|
|
|
|
|
|
|
|
|
msg = msg_sendcmpct()
|
|
|
|
|
msg.version = peer.cmpct_version
|
|
|
|
|
msg.announce = True
|
|
|
|
|
peer.send_and_ping(msg)
|
|
|
|
|
peer.send_and_ping(msg_sendcmpct(announce=True, version=peer.cmpct_version))
|
|
|
|
|
|
|
|
|
|
def test_compactblock_reconstruction_multiple_peers(self, stalling_peer, delivery_peer):
|
|
|
|
|
node = self.nodes[0]
|
|
|
|
|