From 3d60035238fd1a2eec534509950b3cbdace837ea Mon Sep 17 00:00:00 2001 From: parazyd Date: Tue, 9 Jul 2024 15:09:30 +0200 Subject: [PATCH] net/acceptor: Add Tor hidden service address to external_addrs if available --- src/net/acceptor.rs | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/src/net/acceptor.rs b/src/net/acceptor.rs index d339427c6..9aaac5b58 100644 --- a/src/net/acceptor.rs +++ b/src/net/acceptor.rs @@ -24,7 +24,7 @@ use std::{ }, }; -use log::{error, warn}; +use log::{error, info, warn}; use smol::Executor; use url::Url; @@ -66,9 +66,28 @@ impl Acceptor { let datastore = self.session.upgrade().unwrap().p2p().settings().read().await.datastore.clone(); - let listener = Listener::new(endpoint, datastore).await?.listen().await?; + // Initialize listener + let listener = Listener::new(endpoint.clone(), datastore).await?; - self.accept(listener, ex); + // Open socket + let ptlistener = listener.listen().await?; + + #[cfg(feature = "p2p-tor")] + if endpoint.scheme() == "tor" { + let onion_addr = listener.endpoint().await; + info!("[P2P] Adding {} to external_addrs", onion_addr); + self.session + .upgrade() + .unwrap() + .p2p() + .settings() + .write() + .await + .external_addrs + .push(onion_addr); + } + + self.accept(ptlistener, ex); Ok(()) }