@@ -19,7 +19,7 @@ use mullvad_relay_selector::RelaySelector;
19
19
use mullvad_types:: access_method:: {
20
20
AccessMethod , AccessMethodSetting , BuiltInAccessMethod , Id , Settings ,
21
21
} ;
22
- use std:: { net:: SocketAddr , path:: PathBuf } ;
22
+ use std:: { marker :: PhantomData , net:: SocketAddr , path:: PathBuf } ;
23
23
use talpid_types:: net:: { proxy:: CustomProxy , AllowedEndpoint , Endpoint , TransportProtocol } ;
24
24
25
25
pub enum Message {
@@ -261,7 +261,7 @@ pub struct AccessModeSelector<P> {
261
261
current : ResolvedConnectionMode ,
262
262
/// `index` is used to keep track of the [`AccessMethodSetting`] to use.
263
263
index : usize ,
264
- provider : P ,
264
+ provider : PhantomData < P > ,
265
265
}
266
266
267
267
impl < P > AccessModeSelector < P >
@@ -276,7 +276,6 @@ where
276
276
#[ cfg( feature = "api-override" ) ] api_endpoint : ApiEndpoint ,
277
277
access_method_event_sender : mpsc:: UnboundedSender < ( AccessMethodEvent , oneshot:: Sender < ( ) > ) > ,
278
278
address_cache : AddressCache ,
279
- provider : P ,
280
279
) -> Result < ( AccessModeSelectorHandle , AccessModeConnectionModeProvider ) > {
281
280
let ( cmd_tx, cmd_rx) = mpsc:: unbounded ( ) ;
282
281
@@ -298,15 +297,14 @@ where
298
297
& relay_selector,
299
298
& mut encrypted_dns_proxy_cache,
300
299
& address_cache,
301
- & provider,
302
300
)
303
301
. await ;
304
302
305
303
let ( change_tx, change_rx) = mpsc:: unbounded ( ) ;
306
304
307
305
let api_connection_mode = initial_connection_mode. connection_mode . clone ( ) ;
308
306
309
- let selector = AccessModeSelector {
307
+ let selector: AccessModeSelector < P > = AccessModeSelector {
310
308
#[ cfg( feature = "api-override" ) ]
311
309
api_endpoint,
312
310
cmd_rx,
@@ -319,7 +317,7 @@ where
319
317
connection_mode_provider_sender : change_tx,
320
318
current : initial_connection_mode,
321
319
index,
322
- provider,
320
+ provider : PhantomData ,
323
321
} ;
324
322
325
323
tokio:: spawn ( selector. into_future ( ) ) ;
@@ -542,7 +540,6 @@ where
542
540
& self . relay_selector ,
543
541
& mut self . encrypted_dns_proxy_cache ,
544
542
& self . address_cache ,
545
- & self . provider ,
546
543
)
547
544
. await
548
545
}
@@ -552,16 +549,12 @@ where
552
549
relay_selector : & RelaySelector ,
553
550
encrypted_dns_proxy_cache : & mut EncryptedDnsProxyState ,
554
551
address_cache : & AddressCache ,
555
- provider : & P ,
556
552
) -> Option < ResolvedConnectionMode > {
557
553
let connection_mode =
558
554
Self :: resolve_connection_mode ( access_method, relay_selector, encrypted_dns_proxy_cache)
559
555
. await ?;
560
- let endpoint = resolve_allowed_endpoint (
561
- & connection_mode,
562
- address_cache. get_address ( ) . await ,
563
- provider,
564
- ) ;
556
+ let endpoint =
557
+ resolve_allowed_endpoint :: < P > ( & connection_mode, address_cache. get_address ( ) . await ) ;
565
558
Some ( ResolvedConnectionMode {
566
559
connection_mode,
567
560
endpoint,
@@ -580,7 +573,6 @@ where
580
573
& self . relay_selector ,
581
574
& mut self . encrypted_dns_proxy_cache ,
582
575
& self . address_cache ,
583
- & self . provider ,
584
576
)
585
577
. await
586
578
}
@@ -590,27 +582,25 @@ where
590
582
relay_selector : & RelaySelector ,
591
583
encrypted_dns_proxy_cache : & mut EncryptedDnsProxyState ,
592
584
address_cache : & AddressCache ,
593
- provider : & P ,
594
585
) -> ResolvedConnectionMode {
595
586
match Self :: resolve_inner (
596
587
access_method,
597
588
relay_selector,
598
589
encrypted_dns_proxy_cache,
599
590
address_cache,
600
- provider,
601
591
)
602
592
. await
603
593
{
604
594
Some ( resolved) => resolved,
605
595
None => {
606
596
log:: trace!( "Defaulting to direct API connection" ) ;
597
+ let endpoint = resolve_allowed_endpoint :: < P > (
598
+ & ApiConnectionMode :: Direct ,
599
+ address_cache. get_address ( ) . await ,
600
+ ) ;
607
601
ResolvedConnectionMode {
608
602
connection_mode : ApiConnectionMode :: Direct ,
609
- endpoint : resolve_allowed_endpoint (
610
- & ApiConnectionMode :: Direct ,
611
- address_cache. get_address ( ) . await ,
612
- provider,
613
- ) ,
603
+ endpoint,
614
604
setting : access_method. clone ( ) ,
615
605
}
616
606
}
@@ -657,7 +647,6 @@ where
657
647
pub fn resolve_allowed_endpoint < P > (
658
648
connection_mode : & ApiConnectionMode ,
659
649
fallback : SocketAddr ,
660
- provider : & P ,
661
650
) -> AllowedEndpoint
662
651
where
663
652
P : AllowedClientsProvider ,
@@ -666,6 +655,6 @@ where
666
655
Some ( endpoint) => endpoint,
667
656
None => Endpoint :: from_socket_address ( fallback, TransportProtocol :: Tcp ) ,
668
657
} ;
669
- let clients = provider . allowed_clients ( connection_mode) ;
658
+ let clients = P :: allowed_clients ( connection_mode) ;
670
659
AllowedEndpoint { endpoint, clients }
671
660
}
0 commit comments