aboutsummaryrefslogtreecommitdiffstats
path: root/src/transport/libp2p/tests.rs
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2026-10-31 20:51:53 +0100
committertv <tv@krebsco.de>2026-10-31 20:51:53 +0100
commit491b24d27c2e70d2197c5cd16397967232f087fe (patch)
tree0dd860c27c83bfd2e8de6a07d4b7abdd2382a385 /src/transport/libp2p/tests.rs
parent468112d27b272214e0dbec08c662c39826eb684a (diff)
libp2p: identify replaces addresses
Diffstat (limited to 'src/transport/libp2p/tests.rs')
-rw-r--r--src/transport/libp2p/tests.rs29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/transport/libp2p/tests.rs b/src/transport/libp2p/tests.rs
index f02668a..12e4fce 100644
--- a/src/transport/libp2p/tests.rs
+++ b/src/transport/libp2p/tests.rs
@@ -572,6 +572,35 @@ fn known_addresses() {
assert!(!book.knows(us, &["/ip6/fd00::3/tcp/9661".parse().unwrap()]));
}
+/// A connected peer's identify says where it is: older direct addresses go, and others
+/// aren't taken while it stays connected; those through relays and by name stay.
+#[test]
+fn identify_replaces_direct_addresses() {
+ let mut book = Book::default();
+ let (relay, them) = (peer(), peer());
+ let old: Multiaddr = "/ip4/10.244.0.7/tcp/9661".parse().unwrap();
+ let lan: Multiaddr = "/ip4/192.168.1.7/tcp/9661".parse().unwrap();
+ let named: Multiaddr = "/dns4/node.example/tcp/9661".parse().unwrap();
+ let relayed: Multiaddr = format!("/ip4/192.0.2.1/tcp/9661/p2p/{relay}/p2p-circuit")
+ .parse()
+ .unwrap();
+ book.remember(them, old.clone());
+ book.remember(them, named.clone());
+ book.remember(them, relayed.clone());
+
+ book.identified(them, vec![lan.clone().with_p2p(them).unwrap()]);
+ assert!(book.knows(them, &[lan.clone(), named.clone(), relayed.clone()]));
+ assert!(!book.knows(them, &[old.clone()]));
+ // The member list, say, still has the old one.
+ book.remember(them, old.clone());
+ assert!(!book.knows(them, &[old.clone()]));
+
+ // Disconnected (`driver`): taken again, it may have moved there.
+ book.identified.remove(&them);
+ book.remember(them, old.clone());
+ assert!(book.knows(them, &[old]));
+}
+
/// Peers nobody mentions any more are forgotten, but connected ones.
#[test]
fn stale_peers_are_forgotten() {