@@ -39,7 +39,7 @@ use mullvad_types::{
39
39
OpenVpnConstraints , RelayConstraints , RelayOverride , RelaySettings , ResolvedBridgeSettings ,
40
40
WireguardConstraints ,
41
41
} ,
42
- relay_list:: { Relay , RelayEndpointData , RelayList , ShadowsocksBridgeProvider } ,
42
+ relay_list:: { Relay , RelayEndpointData , RelayList } ,
43
43
settings:: Settings ,
44
44
wireguard:: QuantumResistantState ,
45
45
CustomTunnelEndpoint , Intersection ,
@@ -432,47 +432,6 @@ impl<'a> TryFrom<NormalSelectorConfig<'a>> for RelayQuery {
432
432
}
433
433
}
434
434
435
- impl ShadowsocksBridgeProvider for RelaySelector {
436
- /// Returns a non-custom bridge based on the relay and bridge constraints, ignoring the bridge
437
- /// state.
438
- fn get_bridge_forced ( & self ) -> Option < Shadowsocks > {
439
- let parsed_relays = & self . parsed_relays . lock ( ) . unwrap ( ) . parsed_list ( ) . clone ( ) ;
440
- let config = self . config . lock ( ) . unwrap ( ) ;
441
- let specialized_config = SpecializedSelectorConfig :: from ( & * config) ;
442
-
443
- let near_location = match specialized_config {
444
- SpecializedSelectorConfig :: Normal ( config) => RelayQuery :: try_from ( config. clone ( ) )
445
- . ok ( )
446
- . and_then ( |user_preferences| {
447
- Self :: get_relay_midpoint ( & user_preferences, parsed_relays, config. custom_lists )
448
- } ) ,
449
- SpecializedSelectorConfig :: Custom ( _) => None ,
450
- } ;
451
-
452
- let bridge_settings = & config. bridge_settings ;
453
- let constraints = match bridge_settings. resolve ( ) {
454
- Ok ( ResolvedBridgeSettings :: Normal ( settings) ) => InternalBridgeConstraints {
455
- location : settings. location . clone ( ) ,
456
- providers : settings. providers . clone ( ) ,
457
- ownership : settings. ownership ,
458
- transport_protocol : Constraint :: Only ( TransportProtocol :: Tcp ) ,
459
- } ,
460
- _ => InternalBridgeConstraints {
461
- location : Constraint :: Any ,
462
- providers : Constraint :: Any ,
463
- ownership : Constraint :: Any ,
464
- transport_protocol : Constraint :: Only ( TransportProtocol :: Tcp ) ,
465
- } ,
466
- } ;
467
-
468
- let custom_lists = & config. custom_lists ;
469
- Self :: get_proxy_settings ( parsed_relays, & constraints, near_location, custom_lists)
470
- . map ( |( settings, _relay) | settings)
471
- . inspect_err ( |error| log:: error!( "Failed to get bridge: {error}" ) )
472
- . ok ( )
473
- }
474
- }
475
-
476
435
impl RelaySelector {
477
436
/// Returns a new `RelaySelector` backed by relays cached on disk.
478
437
pub fn new (
@@ -545,6 +504,45 @@ impl RelaySelector {
545
504
self . parsed_relays . lock ( ) . unwrap ( ) . last_updated ( )
546
505
}
547
506
507
+ /// Returns a non-custom bridge based on the relay and bridge constraints, ignoring the bridge
508
+ /// state.
509
+ pub fn get_bridge_forced ( & self ) -> Option < Shadowsocks > {
510
+ let parsed_relays = & self . parsed_relays . lock ( ) . unwrap ( ) . parsed_list ( ) . clone ( ) ;
511
+ let config = self . config . lock ( ) . unwrap ( ) ;
512
+ let specialized_config = SpecializedSelectorConfig :: from ( & * config) ;
513
+
514
+ let near_location = match specialized_config {
515
+ SpecializedSelectorConfig :: Normal ( config) => RelayQuery :: try_from ( config. clone ( ) )
516
+ . ok ( )
517
+ . and_then ( |user_preferences| {
518
+ Self :: get_relay_midpoint ( & user_preferences, parsed_relays, config. custom_lists )
519
+ } ) ,
520
+ SpecializedSelectorConfig :: Custom ( _) => None ,
521
+ } ;
522
+
523
+ let bridge_settings = & config. bridge_settings ;
524
+ let constraints = match bridge_settings. resolve ( ) {
525
+ Ok ( ResolvedBridgeSettings :: Normal ( settings) ) => InternalBridgeConstraints {
526
+ location : settings. location . clone ( ) ,
527
+ providers : settings. providers . clone ( ) ,
528
+ ownership : settings. ownership ,
529
+ transport_protocol : Constraint :: Only ( TransportProtocol :: Tcp ) ,
530
+ } ,
531
+ _ => InternalBridgeConstraints {
532
+ location : Constraint :: Any ,
533
+ providers : Constraint :: Any ,
534
+ ownership : Constraint :: Any ,
535
+ transport_protocol : Constraint :: Only ( TransportProtocol :: Tcp ) ,
536
+ } ,
537
+ } ;
538
+
539
+ let custom_lists = & config. custom_lists ;
540
+ Self :: get_proxy_settings ( parsed_relays, & constraints, near_location, custom_lists)
541
+ . map ( |( settings, _relay) | settings)
542
+ . inspect_err ( |error| log:: error!( "Failed to get bridge: {error}" ) )
543
+ . ok ( )
544
+ }
545
+
548
546
/// Returns random relay and relay endpoint matching `query`.
549
547
pub fn get_relay_by_query ( & self , query : RelayQuery ) -> Result < GetRelay , Error > {
550
548
let config_guard = self . config . lock ( ) . unwrap ( ) ;
0 commit comments