aboutsummaryrefslogtreecommitdiffstats
path: root/src/transport/libp2p/mod.rs
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2026-11-01 13:27:28 +0100
committertv <tv@krebsco.de>2026-11-01 13:27:28 +0100
commit12fbf8bf78408abbfde0ec1802f39307def4a0ee (patch)
treec3251256b854f20d1c31d6024fd937c8b2d5491b /src/transport/libp2p/mod.rs
parentc945e63f619bca888f203ab8eafce6b10cb59a3c (diff)
libp2p: relays use address ignore/route filter
Diffstat (limited to 'src/transport/libp2p/mod.rs')
-rw-r--r--src/transport/libp2p/mod.rs5
1 files changed, 3 insertions, 2 deletions
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/<peer ID>`): reached where it's known, or through the
// relays we know.
if let [Protocol::P2p(peer)] = address.iter().collect::<Vec<_>>()[..] {
- 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()
{