Skip to content

Commit 7d0f67a

Browse files
committed
test: check pre-segwit peer error in getblockfrompeer RPC
1 parent d4d9daf commit 7d0f67a

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

test/functional/rpc_getblockfrompeer.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@
55
"""Test the getblockfrompeer RPC."""
66

77
from test_framework.authproxy import JSONRPCException
8+
from test_framework.messages import NODE_WITNESS
9+
from test_framework.p2p import (
10+
P2P_SERVICES,
11+
P2PInterface,
12+
)
813
from test_framework.test_framework import BitcoinTestFramework
914
from test_framework.util import (
1015
assert_equal,
@@ -58,6 +63,13 @@ def run_test(self):
5863
self.log.info("Non-existent peer generates error")
5964
assert_raises_rpc_error(-1, "Peer does not exist", self.nodes[0].getblockfrompeer, short_tip, peer_0_peer_1_id + 1)
6065

66+
self.log.info("Fetching from pre-segwit peer generates error")
67+
self.nodes[0].add_p2p_connection(P2PInterface(), services=P2P_SERVICES & ~NODE_WITNESS)
68+
peers = self.nodes[0].getpeerinfo()
69+
assert_equal(len(peers), 2)
70+
presegwit_peer_id = peers[1]["id"]
71+
assert_raises_rpc_error(-1, "Pre-SegWit peer", self.nodes[0].getblockfrompeer, short_tip, presegwit_peer_id)
72+
6173
self.log.info("Successful fetch")
6274
result = self.nodes[0].getblockfrompeer(short_tip, peer_0_peer_1_id)
6375
self.wait_until(lambda: self.check_for_block(short_tip), timeout=1)
@@ -66,5 +78,6 @@ def run_test(self):
6678
self.log.info("Don't fetch blocks we already have")
6779
assert_raises_rpc_error(-1, "Block already downloaded", self.nodes[0].getblockfrompeer, short_tip, peer_0_peer_1_id)
6880

81+
6982
if __name__ == '__main__':
7083
GetBlockFromPeerTest().main()

0 commit comments

Comments
 (0)