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..61e7db4c5c 100644 --- a/ant-networking/src/relay_manager.rs +++ b/ant-networking/src/relay_manager.rs @@ -18,6 +18,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 +230,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 +245,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)); } }