diff --git a/src/protocol/libp2p/kademlia/handle.rs b/src/protocol/libp2p/kademlia/handle.rs index da02d845..0888447c 100644 --- a/src/protocol/libp2p/kademlia/handle.rs +++ b/src/protocol/libp2p/kademlia/handle.rs @@ -201,7 +201,7 @@ pub enum KademliaEvent { /// in order to add the peers to routing table. RoutingTableUpdate { /// Discovered peers. - peers: Vec, + peers: Vec<(PeerId, Vec)>, }, /// `GET_VALUE` query succeeded. diff --git a/src/protocol/libp2p/kademlia/mod.rs b/src/protocol/libp2p/kademlia/mod.rs index 3d9a90fb..ad3e2ffc 100644 --- a/src/protocol/libp2p/kademlia/mod.rs +++ b/src/protocol/libp2p/kademlia/mod.rs @@ -435,15 +435,19 @@ impl Kademlia { let _ = self .event_tx .send(KademliaEvent::RoutingTableUpdate { - peers: peers.iter().map(|peer| peer.peer).collect::>(), + peers: peers + .iter() + .map(|peer| (peer.peer, peer.addresses())) + .collect::)>>(), }) .await; - for info in peers { - let addresses = info.addresses(); - self.service.add_known_address(&info.peer, addresses.clone().into_iter()); + if std::matches!(self.update_mode, RoutingTableUpdateMode::Automatic) { + for info in peers { + let addresses = info.addresses(); + + self.service.add_known_address(&info.peer, addresses.clone().into_iter()); - if std::matches!(self.update_mode, RoutingTableUpdateMode::Automatic) { self.routing_table.add_known_peer( info.peer, addresses,