Fixed high CPU usage, duplicate peers from exchange and tab change code.

This commit is contained in:
Revertron
2021-02-22 14:55:23 +01:00
parent 803b70fc25
commit df19021c62
3 changed files with 51 additions and 8 deletions
+18 -3
View File
@@ -1,4 +1,4 @@
use std::collections::HashMap;
use std::collections::{HashMap, HashSet};
use std::net::{SocketAddr, Shutdown};
use mio::{Token, Interest, Registry};
use mio::net::TcpStream;
@@ -54,12 +54,27 @@ impl Peers {
}
pub fn add_peers_from_exchange(&mut self, peers: Vec<String>) {
info!("Got peers: {:?}", &peers);
let peers: HashSet<String> = peers
.iter()
.fold(HashSet::new(), |mut peers, peer| {
peers.insert(peer.to_owned());
peers
});
debug!("Got {} peers: {:?}", peers.len(), &peers);
// TODO make it return error if these peers are wrong and seem like an attack
for peer in peers.iter() {
let addr: SocketAddr = peer.parse().expect(&format!("Error parsing peer {}", peer));
if self.peers
.iter()
.find(|(token, peer)| peer.get_addr() == addr)
.is_some() {
debug!("Skipping address from exchange: {}", &addr);
continue;
}
if skip_addr(&addr) {
info!("Skipping address from exchange: {}", &addr);
debug!("Skipping address from exchange: {}", &addr);
continue; // Return error in future
}
let mut found = false;