Also add addresses from incoming connections

This commit is contained in:
Alex 2022-05-09 12:00:01 +02:00
parent 677c471548
commit 12fb3516c0
Signed by untrusted user: lx
GPG key ID: 0E496D15096376BE

View file

@ -1,4 +1,4 @@
use std::collections::{hash_map::Entry::Vacant, HashMap, VecDeque}; use std::collections::{HashMap, VecDeque};
use std::net::SocketAddr; use std::net::SocketAddr;
use std::sync::atomic::{self, AtomicU64}; use std::sync::atomic::{self, AtomicU64};
use std::sync::{Arc, RwLock}; use std::sync::{Arc, RwLock};
@ -512,12 +512,14 @@ impl FullMeshPeeringStrategy {
} }
fn on_connected(self: Arc<Self>, id: NodeID, addr: SocketAddr, is_incoming: bool) { fn on_connected(self: Arc<Self>, id: NodeID, addr: SocketAddr, is_incoming: bool) {
if is_incoming {
let mut known_hosts = self.known_hosts.write().unwrap(); let mut known_hosts = self.known_hosts.write().unwrap();
if let Vacant(entry) = known_hosts.list.entry(id) { if is_incoming {
entry.insert(self.new_peer(&id, addr)); if let Some(host) = known_hosts.list.get_mut(&id) {
known_hosts.update_hash(); if !host.all_addrs.contains(&addr) {
self.update_public_peer_list(&known_hosts); host.all_addrs.push(addr);
}
} else {
known_hosts.list.insert(id, self.new_peer(&id, addr));
} }
} else { } else {
info!( info!(
@ -525,7 +527,6 @@ impl FullMeshPeeringStrategy {
hex::encode(&id[..8]), hex::encode(&id[..8]),
addr addr
); );
let mut known_hosts = self.known_hosts.write().unwrap();
if let Some(host) = known_hosts.list.get_mut(&id) { if let Some(host) = known_hosts.list.get_mut(&id) {
host.state = PeerConnState::Connected; host.state = PeerConnState::Connected;
host.addr = addr; host.addr = addr;
@ -545,10 +546,10 @@ impl FullMeshPeeringStrategy {
}, },
); );
} }
}
known_hosts.update_hash(); known_hosts.update_hash();
self.update_public_peer_list(&known_hosts); self.update_public_peer_list(&known_hosts);
} }
}
fn on_disconnected(self: Arc<Self>, id: NodeID, is_incoming: bool) { fn on_disconnected(self: Arc<Self>, id: NodeID, is_incoming: bool) {
if !is_incoming { if !is_incoming {