From b3013deacd45e4a098a0f13036d764e83b5345d8 Mon Sep 17 00:00:00 2001 From: shamardy Date: Tue, 16 Aug 2022 14:35:21 +0200 Subject: [PATCH 1/2] return random known peers with a maximum of DEFAULT_PEERS_NUM --- mm2src/mm2_libp2p/src/peers_exchange.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/mm2src/mm2_libp2p/src/peers_exchange.rs b/mm2src/mm2_libp2p/src/peers_exchange.rs index 8bc43af8d4..afd2fca4d8 100644 --- a/mm2src/mm2_libp2p/src/peers_exchange.rs +++ b/mm2src/mm2_libp2p/src/peers_exchange.rs @@ -108,7 +108,11 @@ impl PeersExchange { } fn get_random_known_peers(&mut self, num: usize) -> HashMap { - let mut result = HashMap::with_capacity(num); + let mut result = if num > DEFAULT_PEERS_NUM { + HashMap::with_capacity(DEFAULT_PEERS_NUM) + } else { + HashMap::with_capacity(num) + }; let mut rng = rand::thread_rng(); let peer_ids = self .known_peers From 51466cab2f4fc52cebb95a9ee6eb9ebb74efa44a Mon Sep 17 00:00:00 2001 From: shamardy Date: Tue, 16 Aug 2022 14:44:32 +0200 Subject: [PATCH 2/2] Do not respond to GetKnownPeers p2p msg if requested number is greater than DEFAULT_PEERS_NUM --- mm2src/mm2_libp2p/src/peers_exchange.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mm2src/mm2_libp2p/src/peers_exchange.rs b/mm2src/mm2_libp2p/src/peers_exchange.rs index afd2fca4d8..8817b43276 100644 --- a/mm2src/mm2_libp2p/src/peers_exchange.rs +++ b/mm2src/mm2_libp2p/src/peers_exchange.rs @@ -108,11 +108,7 @@ impl PeersExchange { } fn get_random_known_peers(&mut self, num: usize) -> HashMap { - let mut result = if num > DEFAULT_PEERS_NUM { - HashMap::with_capacity(DEFAULT_PEERS_NUM) - } else { - HashMap::with_capacity(num) - }; + let mut result = HashMap::with_capacity(num); let mut rng = rand::thread_rng(); let peer_ids = self .known_peers @@ -302,6 +298,10 @@ impl NetworkBehaviourEventProcess match message { RequestResponseMessage::Request { request, channel, .. } => match request { PeersExchangeRequest::GetKnownPeers { num } => { + // Should not send a response in such case + if num > DEFAULT_PEERS_NUM { + return; + } let response = PeersExchangeResponse::KnownPeers { peers: self.get_random_known_peers(num), };