Procházet zdrojové kódy

p2p/propotocol_address/handle_receive_get_addrs(): shuffle addresses vec

This shuffles is added so when we ask for peers to connect to from seed or in peer discovery, the return vec is shuffled so we don't all end up connected to same nodes
aggstam před 3 roky
rodič
revize
249d67e37b
1 změnil soubory, kde provedl 4 přidání a 1 odebrání
  1. 4 1
      src/net/protocol/protocol_address.rs

+ 4 - 1
src/net/protocol/protocol_address.rs

@@ -20,6 +20,7 @@ use std::sync::Arc;
 
 use async_trait::async_trait;
 use log::debug;
+use rand::seq::SliceRandom;
 use smol::Executor;
 
 use crate::{util::async_util, Result};
@@ -119,7 +120,9 @@ impl ProtocolAddress {
             debug!(target: "net", "ProtocolAddress::handle_receive_get_addrs() received GetAddrs message");
 
             // Loads the list of hosts.
-            let addrs = self.hosts.load_all().await;
+            let mut addrs = self.hosts.load_all().await;
+            // Shuffling list of hosts
+            addrs.shuffle(&mut rand::thread_rng());
             debug!(target: "net", "ProtocolAddress::handle_receive_get_addrs() sending {} addrs", addrs.len());
             // Creates an address messages containing host address.
             let addrs_msg = message::AddrsMessage { addrs };