From cf33252d54f8ec0d9181a71837d0bb14a9b87b67 Mon Sep 17 00:00:00 2001 From: Roman Proskuryakov Date: Wed, 28 Apr 2021 13:21:36 +0300 Subject: [PATCH 1/2] Use as_deref instead of .map in Node::client_version --- client/network/src/peer_info.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/network/src/peer_info.rs b/client/network/src/peer_info.rs index e7ff848b067c1..3f76345743351 100644 --- a/client/network/src/peer_info.rs +++ b/client/network/src/peer_info.rs @@ -144,7 +144,7 @@ impl<'a> Node<'a> { /// Returns the latest version information we know of. pub fn client_version(&self) -> Option<&'a str> { - self.0.client_version.as_ref().map(|s| &s[..]) + self.0.client_version.as_deref() } /// Returns the latest ping time we know of for this node. `None` if we never successfully From 881b6c192bbb4adf9795699bc7d91cb339f70cd1 Mon Sep 17 00:00:00 2001 From: Roman Proskuryakov Date: Wed, 28 Apr 2021 13:23:27 +0300 Subject: [PATCH 2/2] Fix reliance on non-empty NodeInfo::endpoints --- client/network/src/peer_info.rs | 6 ++++-- client/network/src/service.rs | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/client/network/src/peer_info.rs b/client/network/src/peer_info.rs index 3f76345743351..39bbd1d870460 100644 --- a/client/network/src/peer_info.rs +++ b/client/network/src/peer_info.rs @@ -138,8 +138,10 @@ pub struct Node<'a>(&'a NodeInfo); impl<'a> Node<'a> { /// Returns the endpoint of an established connection to the peer. - pub fn endpoint(&self) -> &'a ConnectedPoint { - &self.0.endpoints[0] // `endpoints` are non-empty by definition + /// + /// Returns `None` if we are disconnected from the node. + pub fn endpoint(&self) -> Option<&'a ConnectedPoint> { + self.0.endpoints.get(0) } /// Returns the latest version information we know of. diff --git a/client/network/src/service.rs b/client/network/src/service.rs index e856c6ddf7216..4ad5053d9b287 100644 --- a/client/network/src/service.rs +++ b/client/network/src/service.rs @@ -550,7 +550,7 @@ impl NetworkWorker { let known_addresses = NetworkBehaviour::addresses_of_peer(swarm.behaviour_mut(), peer_id) .into_iter().collect(); - let endpoint = if let Some(e) = swarm.behaviour_mut().node(peer_id).map(|i| i.endpoint()) { + let endpoint = if let Some(e) = swarm.behaviour_mut().node(peer_id).map(|i| i.endpoint()).flatten() { e.clone().into() } else { error!(target: "sub-libp2p", "Found state inconsistency between custom protocol \