From 497eab7136b9d35101f4a5ffa81797efb85da390 Mon Sep 17 00:00:00 2001 From: tv Date: Sun, 1 Nov 2026 13:27:28 +0100 Subject: libp2p: relays use address ignore/route filter --- src/transport/libp2p/mod.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/transport/libp2p/mod.rs') diff --git a/src/transport/libp2p/mod.rs b/src/transport/libp2p/mod.rs index 2ad07e5..0d26625 100644 --- a/src/transport/libp2p/mod.rs +++ b/src/transport/libp2p/mod.rs @@ -415,7 +415,8 @@ impl Transport for Libp2pTransport { if relay != self.peer_id { let new = { let mut book = lock(&self.book); - let new = book.relays.get(&relay) != Some(&address); + // One in a range left out is no use (`Book::left_out`). + let new = book.relays.get(&relay) != Some(&address) && !book.left_out(&address); if new && (book.relays.len() < MAX_PEERS || book.relays.contains_key(&relay)) { book.relays.insert(relay, address.clone()); } @@ -521,7 +522,7 @@ impl Transport for Libp2pTransport { // A peer ID only (`/p2p/`): reached where it's known, or through the // relays we know. if let [Protocol::P2p(peer)] = address.iter().collect::>()[..] { - let book = lock(&self.book); + let mut book = lock(&self.book); if book.addresses.contains_key(&peer) || !book.through_relays(peer, self.peer_id).is_empty() { -- cgit v1.3.1