diff --git a/network/src/identify_service.rs b/network/src/identify_service.rs index 1e05dfd005..f149e2de9f 100644 --- a/network/src/identify_service.rs +++ b/network/src/identify_service.rs @@ -47,6 +47,7 @@ impl IdentifyService { client_version: info.agent_version.clone(), protocol_version: info.protocol_version.clone(), supported_protocols: info.protocols.clone(), + count_of_known_listen_addrs: info.listen_addrs.len(), }) } None => error!( @@ -193,6 +194,11 @@ where move |_| { let peers_registry = network.peers_registry().read(); for (peer_id, peer) in peers_registry.peers_iter() { + if let Some(ref identify_info) = peer.identify_info { + if identify_info.count_of_known_listen_addrs > 0 { + continue; + } + } trace!( "request identify to peer {:?} {:?}", peer_id, diff --git a/network/src/peers_registry.rs b/network/src/peers_registry.rs index 32cfa5080c..fe60d9cdeb 100644 --- a/network/src/peers_registry.rs +++ b/network/src/peers_registry.rs @@ -80,6 +80,7 @@ pub struct PeerIdentifyInfo { pub client_version: String, pub protocol_version: String, pub supported_protocols: Vec, + pub count_of_known_listen_addrs: usize, } type ProtocolConnec = (ProtocolId, UniqueConnec<(UnboundedSender, u8)>);