Jelajahi Sumber

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 3 tahun lalu
induk
melakukan
249d67e37b
1 mengubah file dengan 4 tambahan dan 1 penghapusan
  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 };