From 9ad63140f23f3abe5007fe1d4370eaef7319c9ae Mon Sep 17 00:00:00 2001 From: Jeff Becker Date: Tue, 31 Aug 2021 10:49:41 -0400 Subject: [PATCH] use std::sample to grab MaxGossipPeers when populating std::unordered_set --- llarp/router/rc_gossiper.cpp | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/llarp/router/rc_gossiper.cpp b/llarp/router/rc_gossiper.cpp index dd3cc6356..7eb8aa88a 100644 --- a/llarp/router/rc_gossiper.cpp +++ b/llarp/router/rc_gossiper.cpp @@ -92,13 +92,10 @@ namespace llarp }, true); - // limit the number of peers we gossip to - if (gossipTo.size() > MaxGossipPeers) - { - gossipTo.resize(MaxGossipPeers); - } - - const std::unordered_set keys{gossipTo.begin(), gossipTo.end()}; + std::unordered_set keys; + // grab the keys we want to use + std::sample( + gossipTo.begin(), gossipTo.end(), std::inserter(keys, keys.end()), MaxGossipPeers, CSRNG{}); m_LinkManager->ForEachPeer([&](ILinkSession* peerSession) { if (not(peerSession && peerSession->IsEstablished()))