Skip to content

Commit

Permalink
Don't filter new external addresses
Browse files Browse the repository at this point in the history
  • Loading branch information
StemCll committed Jan 1, 2024
1 parent 691ec04 commit d3b7dc6
Showing 1 changed file with 9 additions and 68 deletions.
77 changes: 9 additions & 68 deletions protocols/identify/src/behaviour.rs
Original file line number Diff line number Diff line change
Expand Up @@ -278,14 +278,15 @@ impl NetworkBehaviour for Behaviour {
info: info.clone(),
}));

for address in filter_new_external_addrs(
&self.discovered_peers.get(&peer_id),
&info.listen_addrs,
) {
self.events.push_back(ToSwarm::NewExternalAddrOfPeer {
peer_id,
addr: address.clone(),
});
if let Some(ref mut discovered_peers) = self.discovered_peers.0 {
for address in &info.listen_addrs {
if discovered_peers.add(peer_id, address.clone()) {
self.events.push_back(ToSwarm::NewExternalAddrOfPeer {
peer_id,
addr: address.clone(),
});
}
}
}

match self.our_observed_addresses.entry(id) {
Expand Down Expand Up @@ -457,20 +458,6 @@ fn multiaddr_matches_peer_id(addr: &Multiaddr, peer_id: &PeerId) -> bool {
true
}

fn filter_new_external_addrs(
cached_addrs: &[Multiaddr],
listen_addrs: &Vec<Multiaddr>,
) -> Vec<Multiaddr> {
let mut new_addresses = Vec::<Multiaddr>::new();

for address in listen_addrs {
if !cached_addrs.contains(address) {
new_addresses.push(address.clone());
}
}
new_addresses
}

struct PeerCache(Option<PeerAddresses>);

impl PeerCache {
Expand Down Expand Up @@ -524,50 +511,4 @@ mod tests {
));
assert!(multiaddr_matches_peer_id(&addr_without_peer_id, &peer_id));
}

#[test]
fn filter_new_external_addrs_leaves_new_addrs() {
let addr: Multiaddr = "/ip4/147.75.69.143/tcp/4001"
.parse()
.expect("failed to parse multiaddr");

let addr1: Multiaddr = "/ip4/147.75.69.143/tcp/4002"
.parse()
.expect("failed to parse multiaddr");

let old_addr: Multiaddr = "/memory/1234".parse().unwrap();
let old_addr1: Multiaddr = "/memory/1233".parse().unwrap();
let old_addr2: Multiaddr = "/memory/1235".parse().unwrap();

let old_addrs: Vec<Multiaddr> = [old_addr, old_addr1, old_addr2].to_vec();

let new_addrs = Vec::from([addr, addr1]);

assert_eq!(
filter_new_external_addrs(&old_addrs, &new_addrs),
new_addrs.clone(),
);
}

#[test]
fn filter_new_external_addrs_filter_duplicates() {
let addr: Multiaddr = "/ip4/147.75.69.143/tcp/4001"
.parse()
.expect("failed to parse multiaddr");

let addr1: Multiaddr = "/ip4/147.75.69.143/tcp/4002"
.parse()
.expect("failed to parse multiaddr");

let old_addr: Multiaddr = "/memory/1234".parse().unwrap();
let old_addr1: Multiaddr = "/memory/1233".parse().unwrap();
let old_addr2: Multiaddr = "/memory/1235".parse().unwrap();

let mut old_addrs: Vec<Multiaddr> = [old_addr, old_addr1, old_addr2].to_vec();

let new_addrs = Vec::from([addr.clone(), addr1.clone()]);
old_addrs.append(&mut new_addrs.clone());

assert_eq!(filter_new_external_addrs(&old_addrs, &new_addrs), [])
}
}

0 comments on commit d3b7dc6

Please sign in to comment.