node: Only consider onion addresses if configured

There is an unfortunate lack of single-responsibility with handling the
addresses to connect to.

This is a band-aid fix until the point in time where this can better improved.
This commit is contained in:
Fintan Halpenny 2025-11-26 10:38:44 +00:00 committed by Lorenz Leutgeb
parent 93d2ed8c61
commit 45abb881a3
2 changed files with 9 additions and 0 deletions

View File

@ -2490,6 +2490,7 @@ where
.filter(|entry| !self.sessions.contains_key(&entry.node))
.filter(|entry| !self.config.external_addresses.contains(&entry.address.addr))
.filter(|entry| &entry.node != self.nid())
.filter(|entry| !entry.address.addr.is_onion() || self.config.onion.is_some())
.fold(HashMap::new(), |mut acc, entry| {
acc.entry(entry.node)
.and_modify(|e: &mut Peer| e.addresses.push(entry.address.clone()))

View File

@ -484,6 +484,14 @@ impl Address {
&self.0.host
}
/// Returns `true` if the [`HostName`] is a Tor onion address.
pub fn is_onion(&self) -> bool {
match self.0.host {
HostName::Tor(_) => true,
_ => false,
}
}
/// Return the port number of the [`Address`].
pub fn port(&self) -> u16 {
self.0.port