diff --git a/ant-networking/src/event/swarm.rs b/ant-networking/src/event/swarm.rs index b09ea6f1e7..7425b694d3 100644 --- a/ant-networking/src/event/swarm.rs +++ b/ant-networking/src/event/swarm.rs @@ -69,6 +69,7 @@ impl SwarmDriver { relay_manager.on_successful_reservation_by_client( &relay_peer_id, &mut self.swarm, + &self.live_connected_peers, ); } } else { diff --git a/ant-networking/src/relay_manager.rs b/ant-networking/src/relay_manager.rs index a4eb9115a1..959cec5980 100644 --- a/ant-networking/src/relay_manager.rs +++ b/ant-networking/src/relay_manager.rs @@ -7,7 +7,6 @@ // permissions and limitations relating to use of the SAFE Network Software. use crate::driver::{BadNodes, NodeBehaviour}; -#[cfg(feature = "open-metrics")] use libp2p::swarm::ConnectionId; use libp2p::{ core::transport::ListenerId, multiaddr::Protocol, Multiaddr, PeerId, StreamProtocol, Swarm, @@ -18,6 +17,7 @@ use rand::Rng; use std::collections::{BTreeMap, HashMap, HashSet, VecDeque}; #[cfg(feature = "open-metrics")] use std::sync::atomic::AtomicU64; +use std::time::Instant; #[cfg(feature = "open-metrics")] use std::{collections::btree_map::Entry, time::SystemTime}; @@ -229,6 +229,7 @@ impl RelayManager { &mut self, peer_id: &PeerId, swarm: &mut Swarm, + live_connected_peers: &BTreeMap, ) { match self.waiting_for_reservation.remove(peer_id) { Some(addr) => { @@ -243,12 +244,12 @@ impl RelayManager { if self.connected_relay_servers.len() == MAX_CONCURRENT_RELAY_CONNECTIONS { debug!("We have reached the maximum number of relay connections. Push new identify info to all connected peers"); - // send identify to all peers - let mut all_peers = HashSet::new(); - for bucket in swarm.behaviour_mut().kademlia.kbuckets() { - all_peers.extend(bucket.iter().map(|entry| entry.node.key.preimage())); - } - swarm.behaviour_mut().identify.push(all_peers); + // send identify to all connected peers. + + swarm + .behaviour_mut() + .identify + .push(live_connected_peers.values().map(|(peer_id, ..)| *peer_id)); } }