diff --git a/substrate/substrate/network-libp2p/src/service.rs b/substrate/substrate/network-libp2p/src/service.rs index 045fe05b5c..109bafa5fc 100644 --- a/substrate/substrate/network-libp2p/src/service.rs +++ b/substrate/substrate/network-libp2p/src/service.rs @@ -97,16 +97,20 @@ struct Shared { impl NetworkService { /// Starts IO event loop - pub fn new(config: NetworkConfiguration, filter: Option>) - -> Result { + pub fn new( + config: NetworkConfiguration, + filter: Option> + ) -> Result { // TODO: for now `filter` is always `None` ; remove it from the code or implement it assert!(filter.is_none()); let network_state = NetworkState::new(&config)?; - let local_peer_id = network_state.local_public_key().clone().into_peer_id(); - // TODO: debug! instead? - info!(target: "sub-libp2p", "Local node id = {:?}", local_peer_id); + let local_peer_id = network_state.local_public_key().clone() + .into_peer_id(); + let mut listen_addr = config_to_listen_addr(&config); + listen_addr.append(AddrComponent::P2P(local_peer_id.clone().into_bytes())); + info!(target: "sub-libp2p", "Local node address is: {}", listen_addr); let kad_system = KadSystem::without_init(KadSystemConfig { parallelism: 3, @@ -951,11 +955,12 @@ fn dial_peer_custom_proto( Ok(socket) } else { debug!(target: "sub-libp2p", "Public key mismatch for \ - node {:?} with proto {:?}", expected_peer_id, proto_id); + node {:?} with proto {:?}", expected_peer_id, proto_id); trace!(target: "sub-libp2p", "Removing addr {} for {:?}", original_addr, expected_peer_id); shared.network_state.set_invalid_kad_address(&expected_peer_id, &original_addr); - Err(IoErrorKind::InvalidData.into()) // TODO: correct err + Err(IoError::new(IoErrorKind::InvalidData, "public \ + key mismatch when identifyed peer")) } ) .and_then(move |socket| @@ -1029,13 +1034,17 @@ fn process_identify_info( original_addr.clone())?; // TODO: wrong local addr if let Some(ref original_listened_addr) = *shared.original_listened_addr.read() { - if let Some(ext_addr) = transport.nat_traversal(original_listened_addr, &info.observed_addr) { + if let Some(mut ext_addr) = transport.nat_traversal(original_listened_addr, &info.observed_addr) { let mut listened_addrs = shared.listened_addrs.write(); if !listened_addrs.iter().any(|a| a == &ext_addr) { trace!(target: "sub-libp2p", "NAT traversal: remote observes us as \ {} ; registering {} as one of our own addresses", info.observed_addr, ext_addr); - listened_addrs.push(ext_addr); + listened_addrs.push(ext_addr.clone()); + ext_addr.append(AddrComponent::P2P(shared.kad_system + .local_peer_id().clone().into_bytes())); + info!(target: "sub-libp2p", "New external node address: {}", + ext_addr); } } }