From d14700f7b636800242ed536cb449774cad94aa6b Mon Sep 17 00:00:00 2001 From: Pierre Krieger <pierre.krieger1708@gmail.com> Date: Mon, 1 Oct 2018 19:31:07 +0200 Subject: [PATCH] The NodeId is always available in the session info (#859) --- substrate/Cargo.lock | 1 - substrate/core/network-libp2p/Cargo.toml | 1 - substrate/core/network-libp2p/src/lib.rs | 5 +---- substrate/core/network-libp2p/src/service.rs | 2 +- substrate/core/network-libp2p/src/traits.rs | 7 +++---- substrate/core/network/src/protocol.rs | 6 ++---- substrate/core/network/src/service.rs | 6 +++--- 7 files changed, 10 insertions(+), 18 deletions(-) diff --git a/substrate/Cargo.lock b/substrate/Cargo.lock index 18b5ff35b9e..3f3c16e5b26 100644 --- a/substrate/Cargo.lock +++ b/substrate/Cargo.lock @@ -3023,7 +3023,6 @@ dependencies = [ "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-primitives 0.1.0", "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-io 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-timer 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/substrate/core/network-libp2p/Cargo.toml b/substrate/core/network-libp2p/Cargo.toml index bcd5facdf7f..e07338455b7 100644 --- a/substrate/core/network-libp2p/Cargo.toml +++ b/substrate/core/network-libp2p/Cargo.toml @@ -23,7 +23,6 @@ tokio = "0.1" tokio-io = "0.1" tokio-timer = "0.2" unsigned-varint = { version = "0.2.1", features = ["codec"] } -substrate-primitives = { path = "../primitives" } [dev-dependencies] assert_matches = "1.2" diff --git a/substrate/core/network-libp2p/src/lib.rs b/substrate/core/network-libp2p/src/lib.rs index 2122d92a747..46d5e84fc14 100644 --- a/substrate/core/network-libp2p/src/lib.rs +++ b/substrate/core/network-libp2p/src/lib.rs @@ -34,7 +34,6 @@ extern crate rand; #[macro_use] extern crate serde_derive; extern crate serde_json; -extern crate substrate_primitives as primitives; extern crate bytes; extern crate unsigned_varint; @@ -45,11 +44,9 @@ extern crate log; #[cfg(test)] #[macro_use] extern crate assert_matches; -use libp2p::PeerId; - pub use connection_filter::{ConnectionFilter, ConnectionDirection}; pub use error::{Error, ErrorKind, DisconnectReason}; -pub use libp2p::{Multiaddr, multiaddr::Protocol}; +pub use libp2p::{Multiaddr, multiaddr::Protocol, PeerId}; pub use traits::*; pub type TimerToken = usize; diff --git a/substrate/core/network-libp2p/src/service.rs b/substrate/core/network-libp2p/src/service.rs index 762e8085736..1b96edc174a 100644 --- a/substrate/core/network-libp2p/src/service.rs +++ b/substrate/core/network-libp2p/src/service.rs @@ -552,7 +552,7 @@ impl NetworkContext for NetworkContextImpl { }; Some(SessionInfo { - id: None, // TODO: ???? what to do??? wrong format! + id: info.id.clone(), client_version: info.client_version.clone().take().unwrap_or(String::new()), protocol_version: From::from(protocol_version), capabilities: Vec::new(), // TODO: list of supported protocols ; hard diff --git a/substrate/core/network-libp2p/src/traits.rs b/substrate/core/network-libp2p/src/traits.rs index 9425279474c..07c83474f34 100644 --- a/substrate/core/network-libp2p/src/traits.rs +++ b/substrate/core/network-libp2p/src/traits.rs @@ -21,9 +21,8 @@ use std::net::Ipv4Addr; use std::str; use std::time::Duration; use TimerToken; -use libp2p::{multiaddr::Protocol, Multiaddr}; +use libp2p::{multiaddr::Protocol, Multiaddr, PeerId}; use error::Error; -use primitives::hash::H512; /// Protocol handler level packet id pub type PacketId = u8; @@ -31,7 +30,7 @@ pub type PacketId = u8; pub type ProtocolId = [u8; 3]; /// Node public key -pub type NodeId = H512; +pub type NodeId = PeerId; /// Local (temporary) peer session ID. pub type NodeIndex = usize; @@ -43,7 +42,7 @@ pub type Secret = [u8; 32]; #[derive(Debug, Clone)] pub struct SessionInfo { /// Peer public key - pub id: Option<NodeId>, + pub id: NodeId, /// Peer client ID pub client_version: String, /// Peer RLPx protocol version diff --git a/substrate/core/network/src/protocol.rs b/substrate/core/network/src/protocol.rs index a828c386c32..3a558bd359e 100644 --- a/substrate/core/network/src/protocol.rs +++ b/substrate/core/network/src/protocol.rs @@ -500,10 +500,8 @@ impl<B: BlockT, S: Specialization<B>, H: ExHashT> Protocol<B, S, H> { .unzip(); if !to_send.is_empty() { - let node_id = io.peer_session_info(*who).map(|info| match info.id { - Some(id) => format!("{}@{:x}", info.remote_address, id), - None => info.remote_address.clone(), - }); + let node_id = io.peer_session_info(*who) + .map(|info| format!("{}@{:?}", info.remote_address, info.id)); if let Some(id) = node_id { for hash in hashes { diff --git a/substrate/core/network/src/service.rs b/substrate/core/network/src/service.rs index 10567165ce4..9d35e653b74 100644 --- a/substrate/core/network/src/service.rs +++ b/substrate/core/network/src/service.rs @@ -21,7 +21,7 @@ use std::time::Duration; use futures::sync::{oneshot, mpsc}; use network_libp2p::{NetworkProtocolHandler, NetworkContext, NodeIndex, ProtocolId, NetworkConfiguration , NonReservedPeerMode, ErrorKind}; -use network_libp2p::{NetworkService}; +use network_libp2p::{NetworkService, PeerId}; use io::NetSyncIo; use protocol::{Protocol, ProtocolContext, Context, ProtocolStatus, PeerInfo as ProtocolPeerInfo}; use config::{ProtocolConfig}; @@ -122,7 +122,7 @@ struct ProtocolHandler<B: BlockT, S: Specialization<B>, H: ExHashT> { #[derive(Debug)] pub struct PeerInfo<B: BlockT> { /// Public node id - pub id: Option<String>, + pub id: PeerId, /// Node client ID pub client_version: String, /// Capabilities @@ -264,7 +264,7 @@ impl<B: BlockT + 'static, S: Specialization<B>, H: ExHashT> SyncProvider<B> for }; Some(PeerInfo { - id: session_info.id.map(|id| format!("{:x}", id)), + id: session_info.id, client_version: session_info.client_version, capabilities: session_info.peer_capabilities.into_iter().map(|c| c.to_string()).collect(), remote_address: session_info.remote_address, -- GitLab