@@ -10,7 +10,7 @@ use std::sync::{atomic, Arc};
1010use std:: time:: Duration ;
1111
1212// extern crates
13- use socks:: Socks5Stream ;
13+ use socks:: { SocketAddrOrUnixSocketAddr , Socks5Stream } ;
1414
1515// internal crates
1616use crate :: censorship_circumvention:: * ;
@@ -166,8 +166,8 @@ pub enum LegacyTorClientConfig {
166166 bridge_lines : Option < Vec < BridgeLine > > ,
167167 } ,
168168 SystemTor {
169- tor_socks_addr : SocketAddr ,
170- tor_control_addr : SocketAddr ,
169+ tor_socks_addr : SocketAddrOrUnixSocketAddr ,
170+ tor_control_addr : SocketAddrOrUnixSocketAddr ,
171171 tor_control_auth : Option < TorAuth > ,
172172 } ,
173173}
@@ -193,7 +193,7 @@ pub struct LegacyTorClient {
193193 version : LegacyTorVersion ,
194194 controller : LegacyTorController ,
195195 bootstrapped : bool ,
196- socks_listener : Option < SocketAddr > ,
196+ socks_listener : Option < SocketAddrOrUnixSocketAddr > ,
197197 // list of open onion services and their is_active flag
198198 onion_services : Vec < ( V3OnionServiceId , Arc < atomic:: AtomicBool > ) > ,
199199 // our list of circuit tokens for the tor daemon
@@ -232,9 +232,8 @@ impl LegacyTorClient {
232232 tor_control_auth,
233233 } => {
234234 // open a control stream
235- let control_stream =
236- LegacyControlStream :: new ( & tor_control_addr, Duration :: from_millis ( 16 ) )
237- . map_err ( Error :: LegacyControlStreamCreationFailed ) ?;
235+ let control_stream = LegacyControlStream :: new ( tor_control_addr, Duration :: from_millis ( 16 ) )
236+ . map_err ( Error :: LegacyControlStreamCreationFailed ) ?;
238237
239238 // create a controler
240239 let controller = LegacyTorController :: new ( control_stream)
@@ -244,7 +243,7 @@ impl LegacyTorClient {
244243 None ,
245244 controller,
246245 tor_control_auth. take ( ) ,
247- Some ( tor_socks_addr. clone ( ) ) ,
246+ Some ( tor_socks_addr. clone ( ) . into ( ) ) ,
248247 )
249248 }
250249 } ;
@@ -469,7 +468,7 @@ impl LegacyTorClient {
469468}
470469
471470impl TorProvider for LegacyTorClient {
472- type Stream = TcpOnionStream ;
471+ type Stream = TcpOrUnixOnionStream ;
473472 type Listener = TcpOnionListener ;
474473
475474 fn update ( & mut self ) -> Result < Vec < TorEvent > , tor_provider:: Error > {
@@ -603,10 +602,10 @@ impl TorProvider for LegacyTorClient {
603602 if listeners. is_empty ( ) {
604603 return Err ( Error :: NoSocksListenersFound ( ) ) ?;
605604 }
606- self . socks_listener = Some ( listeners. swap_remove ( 0 ) ) ;
605+ self . socks_listener = Some ( listeners. swap_remove ( 0 ) . into ( ) ) ;
607606 }
608607
609- let socks_listener = match self . socks_listener {
608+ let socks_listener = match self . socks_listener . as_ref ( ) {
610609 Some ( socks_listener) => socks_listener,
611610 None => unreachable ! ( ) ,
612611 } ;
@@ -625,10 +624,10 @@ impl TorProvider for LegacyTorClient {
625624
626625 // readwrite stream
627626 let stream = match & circuit {
628- None => Socks5Stream :: connect ( socks_listener, socks_target) ,
627+ None => Socks5Stream :: connect_either ( socks_listener, socks_target) ,
629628 Some ( circuit) => {
630629 if let Some ( circuit) = self . circuit_tokens . get ( circuit) {
631- Socks5Stream :: connect_with_password (
630+ Socks5Stream :: connect_either_with_password (
632631 socks_listener,
633632 socks_target,
634633 & circuit. username ,
@@ -641,7 +640,7 @@ impl TorProvider for LegacyTorClient {
641640 }
642641 . map_err ( Error :: Socks5ConnectionFailed ) ?;
643642
644- Ok ( TcpOnionStream {
643+ Ok ( TcpOrUnixOnionStream {
645644 stream : stream. into_inner ( ) ,
646645 local_addr : None ,
647646 peer_addr : Some ( target) ,
0 commit comments