aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPieter Wuille <pieter@wuille.net>2021-07-15 12:59:23 -0700
committerPieter Wuille <pieter@wuille.net>2021-07-15 12:59:23 -0700
commit5648138f5949013331c017c740646e2f4013bc24 (patch)
tree180d8e759edcd7497ff3dc78e1ec67eff8c406cb
parent0d64b8f709b4655d8702f810d4876cd8d96ded82 (diff)
downloadbitcoin-5648138f5949013331c017c740646e2f4013bc24.tar.xz
Randomize the order of addr processing
-rw-r--r--src/net_processing.cpp1
-rwxr-xr-xtest/functional/p2p_addrv2_relay.py4
2 files changed, 4 insertions, 1 deletions
diff --git a/src/net_processing.cpp b/src/net_processing.cpp
index 8d24b00887..79ef11a790 100644
--- a/src/net_processing.cpp
+++ b/src/net_processing.cpp
@@ -2804,6 +2804,7 @@ void PeerManagerImpl::ProcessMessage(CNode& pfrom, const std::string& msg_type,
peer->m_addr_token_timestamp = current_time;
const bool rate_limited = !pfrom.HasPermission(NetPermissionFlags::Addr);
+ Shuffle(vAddr.begin(), vAddr.end(), FastRandomContext());
for (CAddress& addr : vAddr)
{
if (interruptMsgProc)
diff --git a/test/functional/p2p_addrv2_relay.py b/test/functional/p2p_addrv2_relay.py
index 9d36bc03a3..32c1d42b1c 100755
--- a/test/functional/p2p_addrv2_relay.py
+++ b/test/functional/p2p_addrv2_relay.py
@@ -42,7 +42,9 @@ class AddrReceiver(P2PInterface):
super().__init__(support_addrv2 = True)
def on_addrv2(self, message):
- if ADDRS == message.addrs:
+ expected_set = set((addr.ip, addr.port) for addr in ADDRS)
+ received_set = set((addr.ip, addr.port) for addr in message.addrs)
+ if expected_set == received_set:
self.addrv2_received_and_checked = True
def wait_for_addrv2(self):