Skip to content

Commit 7593b06

Browse files
committed
test: ensure I2P addresses are relayed
This test would fail if `CNetAddr::IsRelayable()` returns `false` for I2P addresses, given that this test node does not have I2P connectivity.
1 parent e746813 commit 7593b06

File tree

1 file changed

+16
-9
lines changed

1 file changed

+16
-9
lines changed

test/functional/p2p_addrv2_relay.py

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,19 @@
1818
from test_framework.test_framework import BitcoinTestFramework
1919
from test_framework.util import assert_equal
2020

21+
I2P_ADDR = "c4gfnttsuwqomiygupdqqqyy5y5emnk5c73hrfvatri67prd7vyq.b32.i2p"
22+
2123
ADDRS = []
2224
for i in range(10):
2325
addr = CAddress()
2426
addr.time = int(time.time()) + i
2527
addr.nServices = NODE_NETWORK | NODE_WITNESS
26-
addr.ip = "123.123.123.{}".format(i % 256)
28+
# Add one I2P address at an arbitrary position.
29+
if i == 5:
30+
addr.net = addr.NET_I2P
31+
addr.ip = I2P_ADDR
32+
else:
33+
addr.ip = f"123.123.123.{i % 256}"
2734
addr.port = 8333 + i
2835
ADDRS.append(addr)
2936

@@ -35,11 +42,8 @@ def __init__(self):
3542
super().__init__(support_addrv2 = True)
3643

3744
def on_addrv2(self, message):
38-
for addr in message.addrs:
39-
assert_equal(addr.nServices, NODE_NETWORK | NODE_WITNESS)
40-
assert addr.ip.startswith('123.123.123.')
41-
assert (8333 <= addr.port < 8343)
42-
self.addrv2_received_and_checked = True
45+
if ADDRS == message.addrs:
46+
self.addrv2_received_and_checked = True
4347

4448
def wait_for_addrv2(self):
4549
self.wait_until(lambda: "addrv2" in self.last_message)
@@ -64,15 +68,18 @@ def run_test(self):
6468
addr_receiver = self.nodes[0].add_p2p_connection(AddrReceiver())
6569
msg.addrs = ADDRS
6670
with self.nodes[0].assert_debug_log([
67-
'Added 10 addresses from 127.0.0.1: 0 tried',
68-
'received: addrv2 (131 bytes) peer=0',
69-
'sending addrv2 (131 bytes) peer=1',
71+
# The I2P address is not added to node's own addrman because it has no
72+
# I2P reachability (thus 10 - 1 = 9).
73+
'Added 9 addresses from 127.0.0.1: 0 tried',
74+
'received: addrv2 (159 bytes) peer=0',
75+
'sending addrv2 (159 bytes) peer=1',
7076
]):
7177
addr_source.send_and_ping(msg)
7278
self.nodes[0].setmocktime(int(time.time()) + 30 * 60)
7379
addr_receiver.wait_for_addrv2()
7480

7581
assert addr_receiver.addrv2_received_and_checked
82+
assert_equal(len(self.nodes[0].getnodeaddresses(count=0, network="i2p")), 0)
7683

7784

7885
if __name__ == '__main__':

0 commit comments

Comments
 (0)