Просмотр исходного кода

net/acceptor: Add Tor hidden service address to external_addrs if available

parazyd 2 лет назад
Родитель
Сommit
3d60035238
1 измененных файлов с 22 добавлено и 3 удалено
  1. 22 3
      src/net/acceptor.rs

+ 22 - 3
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(())
     }