From 50835d38e86e322740c2dd3b665911cdfa6449fd Mon Sep 17 00:00:00 2001 From: Filip Bozic <70634661+fbozic@users.noreply.github.com> Date: Fri, 17 May 2024 08:12:40 +0200 Subject: [PATCH] feat: resolve relayed dial on the first connection --- examples/chat/src/network.rs | 15 ++++++++------- examples/chat/src/network/events.rs | 4 ++-- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/examples/chat/src/network.rs b/examples/chat/src/network.rs index 3eb2250..62145a9 100644 --- a/examples/chat/src/network.rs +++ b/examples/chat/src/network.rs @@ -246,7 +246,7 @@ impl EventLoop { let _ = sender.send(Ok(None)); } hash_map::Entry::Vacant(entry) => { - match self.swarm.dial(peer_addr.clone()) { + match self.swarm.dial(peer_addr) { Ok(_) => { entry.insert(sender); } @@ -392,12 +392,13 @@ impl TryFrom<&Multiaddr> for MultiaddrMeta { } } - match peer_ids.len() { - 0 => Err("expected at least one p2p proto"), - _ => Ok(Self { - peer_id: peer_ids[peer_ids.len() - 1], - relay_peer_ids: peer_ids[0..peer_ids.len() - 1].to_vec(), - }), + if let Some(peer_id) = peer_ids.pop() { + Ok(Self { + peer_id, + relay_peer_ids: peer_ids, + }) + } else { + Err("expected at least one p2p proto") } } } diff --git a/examples/chat/src/network/events.rs b/examples/chat/src/network/events.rs index 178f78d..89cc8e8 100644 --- a/examples/chat/src/network/events.rs +++ b/examples/chat/src/network/events.rs @@ -44,7 +44,7 @@ impl EventLoop { SwarmEvent::ConnectionEstablished { peer_id, endpoint, .. } => { - debug!(peer=%peer_id, ?endpoint, "Connection established"); + debug!(%peer_id, ?endpoint, "Connection established"); match endpoint { libp2p::core::ConnectedPoint::Dialer { address, .. } => { let addr_meta = match MultiaddrMeta::try_from(&address) { @@ -56,7 +56,7 @@ impl EventLoop { }; if addr_meta.is_relayed() { - return; + debug!("Connection established via relay"); } if let Some(sender) = self.pending_dial.remove(&peer_id) {