diff --git a/substrate/network-libp2p/src/service.rs b/substrate/network-libp2p/src/service.rs index b899ceb61623c..045fe05b5c8e8 100644 --- a/substrate/network-libp2p/src/service.rs +++ b/substrate/network-libp2p/src/service.rs @@ -464,7 +464,6 @@ fn init_thread( match swarm_controller.listen_on(listen_addr.clone()) { Ok(new_addr) => { *shared.original_listened_addr.write() = Some(new_addr.clone()); - shared.listened_addrs.write().push(new_addr); }, Err(_) => { warn!(target: "sub-libp2p", "Can't listen on {}, protocol not \ @@ -623,19 +622,27 @@ fn build_kademlia_response(shared: &Arc, searched: &PeerstorePeerId) // TODO the iter of `known_closest_peers` should be infinite .known_closest_peers(searched) .map(move |peer_id| { - let addrs = shared.network_state.addrs_of_peer(&peer_id); - let connec_ty = if shared.network_state.has_connection(&peer_id) { - // TODO: this only checks connections with substrate ; but what - // if we're connected through Kademlia only? - KadConnectionType::Connected + if peer_id == *shared.kad_system.local_peer_id() { + KadPeer { + node_id: peer_id.clone(), + multiaddrs: shared.listened_addrs.read().clone(), + connection_ty: KadConnectionType::Connected, + } } else { - KadConnectionType::NotConnected - }; + let addrs = shared.network_state.addrs_of_peer(&peer_id); + let connec_ty = if shared.network_state.has_connection(&peer_id) { + // TODO: this only checks connections with substrate ; but what + // if we're connected through Kademlia only? + KadConnectionType::Connected + } else { + KadConnectionType::NotConnected + }; - KadPeer { - node_id: peer_id.clone(), - multiaddrs: addrs, - connection_ty: connec_ty, + KadPeer { + node_id: peer_id.clone(), + multiaddrs: addrs, + connection_ty: connec_ty, + } } }) .collect::>()