More peer connections optimization.
This commit is contained in:
1 parent
3d26b81383
commit
675bb466c1
1 file changed
+5
@@ -290,12 +290,14 @@ impl Peers {
|
|||||||
if self.new_peers.is_empty() {
|
if self.new_peers.is_empty() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
self.new_peers.dedup();
|
||||||
let addr = self.new_peers.remove(0);
|
let addr = self.new_peers.remove(0);
|
||||||
self.connect_peer(&addr, registry, unique_token, yggdrasil_only);
|
self.connect_peer(&addr, registry, unique_token, yggdrasil_only);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Connecting to configured (bootstrap) peers
|
/// Connecting to configured (bootstrap) peers
|
||||||
pub fn connect_peers(&mut self, peers_addrs: Vec<String>, registry: &Registry, unique_token: &mut Token, yggdrasil_only: bool) {
|
pub fn connect_peers(&mut self, peers_addrs: Vec<String>, registry: &Registry, unique_token: &mut Token, yggdrasil_only: bool) {
|
||||||
|
let mut set = HashSet::new();
|
||||||
for peer in peers_addrs.iter() {
|
for peer in peers_addrs.iter() {
|
||||||
let mut addresses: Vec<SocketAddr> = match peer.to_socket_addrs() {
|
let mut addresses: Vec<SocketAddr> = match peer.to_socket_addrs() {
|
||||||
Ok(peers) => { peers.collect() }
|
Ok(peers) => { peers.collect() }
|
||||||
@@ -304,7 +306,10 @@ impl Peers {
|
|||||||
|
|
||||||
// At first we connect to one peer address from every "peer" or domain
|
// At first we connect to one peer address from every "peer" or domain
|
||||||
let addr = addresses.remove(0);
|
let addr = addresses.remove(0);
|
||||||
|
if !set.contains(&addr) {
|
||||||
self.connect_peer(&addr, registry, unique_token, yggdrasil_only);
|
self.connect_peer(&addr, registry, unique_token, yggdrasil_only);
|
||||||
|
set.insert(addr);
|
||||||
|
}
|
||||||
// Copy others to new_peers, to connect later
|
// Copy others to new_peers, to connect later
|
||||||
self.new_peers.append(&mut addresses);
|
self.new_peers.append(&mut addresses);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user