diff --git a/examples/kademlia.rs b/examples/kademlia.rs index 1770f26b..3d21c08f 100644 --- a/examples/kademlia.rs +++ b/examples/kademlia.rs @@ -204,10 +204,10 @@ fn main() { }) .filter_map(move |event| { match event { - KadQueryEvent::NewKnownMultiaddrs(peers) => { - for (peer, addrs) in peers { - peer_store.peer_or_create(&peer) - .add_addrs(addrs, Duration::from_secs(3600)); + KadQueryEvent::PeersReported(peers) => { + for peer in peers { + peer_store.peer_or_create(&peer.node_id) + .add_addrs(peer.multiaddrs, Duration::from_secs(3600)); } None }, diff --git a/protocols/kad/src/high_level.rs b/protocols/kad/src/high_level.rs index d838ed6d..34f52315 100644 --- a/protocols/kad/src/high_level.rs +++ b/protocols/kad/src/high_level.rs @@ -23,7 +23,6 @@ use futures::{future, Future, IntoFuture, stream, Stream}; use kad_server::KadConnecController; use kbucket::{KBucketsTable, KBucketsPeerId}; use libp2p_core::PeerId; -use multiaddr::Multiaddr; use protocol; use rand; use smallvec::SmallVec; @@ -64,7 +63,7 @@ pub struct KadSystem { #[derive(Debug, Clone)] pub enum KadQueryEvent { /// Learned about new mutiaddresses for the given peers. - NewKnownMultiaddrs(Vec<(PeerId, Vec)>), + PeersReported(Vec), /// Finished the processing of the query. Contains the result. Finished(TOut), } @@ -180,7 +179,7 @@ where F: FnMut(&PeerId) -> Fut + Send + 'a, let stream = query(access, kbuckets, peer_id, parallelism, 20, request_timeout) // TODO: 20 is arbitrary .map(|event| { match event { - KadQueryEvent::NewKnownMultiaddrs(peers) => KadQueryEvent::NewKnownMultiaddrs(peers), + KadQueryEvent::PeersReported(peers) => KadQueryEvent::PeersReported(peers), KadQueryEvent::Finished(_) => KadQueryEvent::Finished(()), } }); @@ -413,15 +412,12 @@ where F: FnMut(&PeerId) -> Fut + 'a, let mut local_nearest_node_updated = false; // Update `state` with the actual content of the message. - let mut new_known_multiaddrs = Vec::with_capacity(closer_peers.len()); + let mut peers_reported = Vec::with_capacity(closer_peers.len()); for mut peer in closer_peers { // Update the peerstore with the information sent by // the remote. - { - let multiaddrs = mem::replace(&mut peer.multiaddrs, Vec::new()); - trace!("Reporting multiaddresses for {:?}: {:?}", peer.node_id, multiaddrs); - new_known_multiaddrs.push((peer.node_id.clone(), multiaddrs)); - } + trace!("Reporting multiaddresses for {:?}: {:?}", peer.node_id, peer.multiaddrs); + peers_reported.push(peer.clone()); if peer.node_id.distance_with(&searched_key) <= state.result[0].distance_with(&searched_key) @@ -458,7 +454,7 @@ where F: FnMut(&PeerId) -> Fut + 'a, } } - future::ok((Some(KadQueryEvent::NewKnownMultiaddrs(new_known_multiaddrs)), state)) + future::ok((Some(KadQueryEvent::PeersReported(peers_reported)), state)) }); Some(future::Either::B(future)) diff --git a/protocols/kad/src/query.rs b/protocols/kad/src/query.rs index fec81e5c..78a0006b 100644 --- a/protocols/kad/src/query.rs +++ b/protocols/kad/src/query.rs @@ -49,7 +49,7 @@ pub struct QueryParams { #[derive(Debug, Clone)] pub enum QueryEvent { /// Learned about new mutiaddresses for the given peers. - NewKnownMultiaddrs(Vec<(PeerId, Vec)>), + PeersReported(Vec<(PeerId, Vec)>), /// Finished the processing of the query. Contains the result. Finished(TOut), } @@ -86,7 +86,7 @@ where let stream = find_node(query_params, peer_id).map(|event| { match event { - QueryEvent::NewKnownMultiaddrs(peers) => QueryEvent::NewKnownMultiaddrs(peers), + QueryEvent::PeersReported(peers) => QueryEvent::PeersReported(peers), QueryEvent::Finished(_) => QueryEvent::Finished(()), } }); @@ -355,7 +355,7 @@ where } } - future::ok((Some(QueryEvent::NewKnownMultiaddrs(new_known_multiaddrs)), state)) + future::ok((Some(QueryEvent::PeersReported(new_known_multiaddrs)), state)) }); Some(future::Either::B(future))