sc-network: Ensure private addresses are disabled if requested (#13185)

When running with `--no-private-ipv4` the node should not trying to connect to any private ip
addresses. With the switch to libp2p this behavior was broken. Part of this version upgrade was the
following pr: https://github.com/libp2p/rust-libp2p/pull/2995. This pr changed the default cache
size of `libp2p-identity` from `0` aka disabled to `100`. Together with our implementation that was
calling into `identity` to request addresses for a given peer. Before the switch to libp2p 0.50.0
this was returning zero addresses, but now with the cache enabled it started to return addresses.
This pr fixes this by only letting discovery return addresses for a peer. It also ensures that we
filter private addresses if requested. The cache is also disabled to restore the previous caching
behavior, but it will actually not be called anymore.
This commit is contained in:
Bastian Köcher
2023-01-20 16:59:16 +01:00
committed by GitHub
parent e8288005f7
commit b98138d121
2 changed files with 11 additions and 7 deletions
+4 -2
View File
@@ -965,8 +965,10 @@ where
self.behaviour.new_handler()
}
fn addresses_of_peer(&mut self, peer_id: &PeerId) -> Vec<Multiaddr> {
self.behaviour.addresses_of_peer(peer_id)
fn addresses_of_peer(&mut self, _: &PeerId) -> Vec<Multiaddr> {
// Only `Discovery::addresses_of_peer` must be returning addresses to ensure that we
// don't return unwanted addresses.
Vec::new()
}
fn on_swarm_event(&mut self, event: FromSwarm<Self::ConnectionHandler>) {