Browse Source

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 years ago
parent
commit
249d67e37b
1 changed files with 4 additions and 1 deletions
  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 async_trait::async_trait;
 use log::debug;
 use log::debug;
+use rand::seq::SliceRandom;
 use smol::Executor;
 use smol::Executor;
 
 
 use crate::{util::async_util, Result};
 use crate::{util::async_util, Result};
@@ -119,7 +120,9 @@ impl ProtocolAddress {
             debug!(target: "net", "ProtocolAddress::handle_receive_get_addrs() received GetAddrs message");
             debug!(target: "net", "ProtocolAddress::handle_receive_get_addrs() received GetAddrs message");
 
 
             // Loads the list of hosts.
             // 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());
             debug!(target: "net", "ProtocolAddress::handle_receive_get_addrs() sending {} addrs", addrs.len());
             // Creates an address messages containing host address.
             // Creates an address messages containing host address.
             let addrs_msg = message::AddrsMessage { addrs };
             let addrs_msg = message::AddrsMessage { addrs };