@@ -36,7 +36,6 @@ use tokio::net::TcpListener;
36
36
37
37
use std:: pin:: Pin ;
38
38
use std:: sync:: { Arc , Mutex , MutexGuard } ;
39
- use std:: borrow:: Cow ;
40
39
use std:: net:: SocketAddr ;
41
40
use std:: task:: { Context , Poll } ;
42
41
use thiserror:: Error ;
@@ -134,9 +133,17 @@ impl<T: TorProvider> TorInterfaceTransport<T> {
134
133
private_key : & Ed25519PrivateKey ,
135
134
virt_port : u16 ,
136
135
authorised_clients : Option < & [ X25519PublicKey ] > ,
136
+ socket_addr : Option < SocketAddr > ,
137
137
) -> anyhow:: Result < Multiaddr > {
138
- let ol = self . listener_or_bootstrap ( |p| p. listener ( private_key, virt_port, authorised_clients) ) ?;
139
- self . add_onion_service_impl ( private_key, virt_port, ol)
138
+ let ol = self . listener_or_bootstrap ( |p| p. listener ( private_key, virt_port, authorised_clients, socket_addr) ) ?;
139
+ ol. set_nonblocking ( true ) ?;
140
+
141
+ self . services . push ( ( ol, None ) ) ;
142
+
143
+ let svid = V3OnionServiceId :: from_private_key ( & private_key) ;
144
+ let multiaddr = svid. to_multiaddr ( virt_port) ;
145
+
146
+ Ok ( multiaddr)
140
147
}
141
148
142
149
fn listener_or_bootstrap < R , F : FnMut ( & mut T ) -> Result < R , tor_provider:: Error > > ( & mut self , mut f : F ) -> Result < R , tor_provider:: Error > {
@@ -151,32 +158,6 @@ impl<T: TorProvider> TorInterfaceTransport<T> {
151
158
}
152
159
}
153
160
}
154
-
155
- fn add_onion_service_impl ( & mut self , private_key : & Ed25519PrivateKey , virt_port : u16 , ol : OnionListener ) -> anyhow:: Result < Multiaddr > {
156
- ol. set_nonblocking ( true ) ?;
157
-
158
- self . services . push ( ( ol, None ) ) ;
159
-
160
- let svid = V3OnionServiceId :: from_private_key ( & private_key) ;
161
- let multiaddr = svid. to_multiaddr ( virt_port) ;
162
-
163
- Ok ( multiaddr)
164
- }
165
- }
166
-
167
- impl TorInterfaceTransport < tor_interface:: legacy_tor_client:: LegacyTorClient > {
168
- /// The generic [`add_onion_service()`] implementation uses the default configuration (known key, listening on `127.0.0.1:0`)
169
- pub fn add_customised_onion_service < ' pk > (
170
- & mut self ,
171
- private_key : Option < & ' pk Ed25519PrivateKey > ,
172
- virt_port : u16 ,
173
- authorised_clients : Option < & [ X25519PublicKey ] > ,
174
- socket_addr : SocketAddr ,
175
- ) -> anyhow:: Result < ( Multiaddr , Cow < ' pk , Ed25519PrivateKey > ) > {
176
- let ( genpk, ol) = self . listener_or_bootstrap ( |p| p. customised_listener ( private_key, virt_port, authorised_clients, socket_addr) ) ?;
177
- let private_key = private_key. map ( Cow :: Borrowed ) . or ( genpk. map ( Cow :: Owned ) ) . unwrap_or_else ( || unreachable ! ( ) ) ;
178
- self . add_onion_service_impl ( & private_key, virt_port, ol) . map ( |ma| ( ma, private_key) )
179
- }
180
161
}
181
162
182
163
trait HsIdExt {
0 commit comments