Skip to content

Commit 2a3dccf

Browse files
committed
Remove "Any" tunnel protocol from query builder
1 parent 66e2c86 commit 2a3dccf

File tree

8 files changed

+105
-187
lines changed

8 files changed

+105
-187
lines changed

mullvad-relay-selector/src/relay_selector/mod.rs

+9-13
Original file line numberDiff line numberDiff line change
@@ -62,21 +62,19 @@ pub static WIREGUARD_RETRY_ORDER: LazyLock<Vec<RelayQuery>> = LazyLock::new(|| {
6262
use query::builder::{IpVersion, RelayQueryBuilder};
6363
vec![
6464
// 1 This works with any wireguard relay
65-
RelayQueryBuilder::new().wireguard().build(),
65+
RelayQueryBuilder::wireguard().build(),
6666
// 2
67-
RelayQueryBuilder::new().wireguard().port(443).build(),
67+
RelayQueryBuilder::wireguard().port(443).build(),
6868
// 3
69-
RelayQueryBuilder::new()
70-
.wireguard()
69+
RelayQueryBuilder::wireguard()
7170
.ip_version(IpVersion::V6)
7271
.build(),
7372
// 4
74-
RelayQueryBuilder::new().wireguard().shadowsocks().build(),
73+
RelayQueryBuilder::wireguard().shadowsocks().build(),
7574
// 5
76-
RelayQueryBuilder::new().wireguard().udp2tcp().build(),
75+
RelayQueryBuilder::wireguard().udp2tcp().build(),
7776
// 6
78-
RelayQueryBuilder::new()
79-
.wireguard()
77+
RelayQueryBuilder::wireguard()
8078
.udp2tcp()
8179
.ip_version(IpVersion::V6)
8280
.build(),
@@ -92,16 +90,14 @@ pub static OPENVPN_RETRY_ORDER: LazyLock<Vec<RelayQuery>> = LazyLock::new(|| {
9290
use query::builder::RelayQueryBuilder;
9391
vec![
9492
// 1 (openvpn) This works with any openvpn relay
95-
RelayQueryBuilder::new().openvpn().build(),
93+
RelayQueryBuilder::openvpn().build(),
9694
// 2
97-
RelayQueryBuilder::new()
98-
.openvpn()
95+
RelayQueryBuilder::openvpn()
9996
.transport_protocol(TransportProtocol::Tcp)
10097
.port(443)
10198
.build(),
10299
// 3
103-
RelayQueryBuilder::new()
104-
.openvpn()
100+
RelayQueryBuilder::openvpn()
105101
.transport_protocol(TransportProtocol::Tcp)
106102
.bridge()
107103
.build(),

mullvad-relay-selector/src/relay_selector/query.rs

+23-35
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,7 @@ use talpid_types::net::{proxy::CustomProxy, IpVersion, TunnelType};
6363
/// use mullvad_relay_selector::query::builder::RelayQueryBuilder;
6464
/// use mullvad_relay_selector::query::builder::{Ownership, GeographicLocationConstraint};
6565
///
66-
/// let query: RelayQuery = RelayQueryBuilder::new()
67-
/// .wireguard() // Specify the tunnel protocol
66+
/// let query: RelayQuery = RelayQueryBuilder::wireguard() // Specify the tunnel protocol
6867
/// .location(GeographicLocationConstraint::country("no")) // Specify the country as Norway
6968
/// .ownership(Ownership::MullvadOwned) // Specify that the relay must be owned by Mullvad
7069
/// .port(443) // Specify the port to use when connecting to the relay
@@ -570,52 +569,44 @@ pub mod builder {
570569
}
571570

572571
impl RelayQueryBuilder<Any> {
573-
/// Create a new [`RelayQueryBuilder`] with unopinionated defaults.
572+
/// Create a new [`RelayQueryBuilder`] for Wireguard.
574573
///
575574
/// Call [`Self::build`] to convert the builder into a [`RelayQuery`],
576575
/// which is used to guide the [`RelaySelector`]
577576
///
578577
/// [`RelaySelector`]: crate::RelaySelector
579-
pub fn new() -> RelayQueryBuilder<Any> {
580-
RelayQueryBuilder {
581-
query: RelayQuery::default(),
582-
protocol: Any,
583-
}
584-
}
585-
/// Set the VPN protocol for this [`RelayQueryBuilder`] to Wireguard.
586-
pub fn wireguard(mut self) -> RelayQueryBuilder<Wireguard<Any, Any, Any, Any>> {
578+
pub fn wireguard() -> RelayQueryBuilder<Wireguard<Any, Any, Any, Any>> {
587579
let protocol = Wireguard {
588580
multihop: Any,
589581
obfuscation: Any,
590582
daita: Any,
591583
quantum_resistant: Any,
592584
};
593-
self.query.tunnel_protocol = TunnelType::Wireguard;
585+
let query = RelayQuery {
586+
tunnel_protocol: TunnelType::Wireguard,
587+
..Default::default()
588+
};
594589
// Update the type state
595-
RelayQueryBuilder {
596-
query: self.query,
597-
protocol,
598-
}
590+
RelayQueryBuilder { query, protocol }
599591
}
600592

601-
/// Set the VPN protocol for this [`RelayQueryBuilder`] to OpenVPN.
602-
pub fn openvpn(mut self) -> RelayQueryBuilder<OpenVPN<Any, Any>> {
593+
/// Create a new [`RelayQueryBuilder`] for OpenVPN.
594+
///
595+
/// Call [`Self::build`] to convert the builder into a [`RelayQuery`],
596+
/// which is used to guide the [`RelaySelector`]
597+
///
598+
/// [`RelaySelector`]: crate::RelaySelector
599+
pub fn openvpn() -> RelayQueryBuilder<OpenVPN<Any, Any>> {
603600
let protocol = OpenVPN {
604601
transport_port: Any,
605602
bridge_settings: Any,
606603
};
607-
self.query.tunnel_protocol = TunnelType::OpenVpn;
604+
let query = RelayQuery {
605+
tunnel_protocol: TunnelType::OpenVpn,
606+
..Default::default()
607+
};
608608
// Update the type state
609-
RelayQueryBuilder {
610-
query: self.query,
611-
protocol,
612-
}
613-
}
614-
}
615-
616-
impl Default for RelayQueryBuilder<Any> {
617-
fn default() -> Self {
618-
Self::new()
609+
RelayQueryBuilder { query, protocol }
619610
}
620611
}
621612

@@ -1061,7 +1052,7 @@ mod test {
10611052
/// DAITA is a core privacy feature.
10621053
#[test]
10631054
fn test_relay_query_daita_openvpn() {
1064-
let mut query = RelayQueryBuilder::new().wireguard().daita().build();
1055+
let mut query = RelayQueryBuilder::wireguard().daita().build();
10651056
query
10661057
.set_tunnel_protocol(TunnelType::OpenVpn)
10671058
.expect_err("expected query to be invalid for OpenVPN");
@@ -1071,7 +1062,7 @@ mod test {
10711062
/// Multihop is a core privacy feature.
10721063
#[test]
10731064
fn test_relay_query_multihop_openvpn() {
1074-
let mut query = RelayQueryBuilder::new().wireguard().multihop().build();
1065+
let mut query = RelayQueryBuilder::wireguard().multihop().build();
10751066
query
10761067
.set_tunnel_protocol(TunnelType::OpenVpn)
10771068
.expect_err("expected query to be invalid for OpenVPN");
@@ -1081,10 +1072,7 @@ mod test {
10811072
/// PQ is a core privacy feature.
10821073
#[test]
10831074
fn test_relay_query_quantum_resistant_openvpn() {
1084-
let mut query = RelayQueryBuilder::new()
1085-
.wireguard()
1086-
.quantum_resistant()
1087-
.build();
1075+
let mut query = RelayQueryBuilder::wireguard().quantum_resistant().build();
10881076
query
10891077
.set_tunnel_protocol(TunnelType::OpenVpn)
10901078
.expect_err("expected query to be invalid for OpenVPN");

0 commit comments

Comments
 (0)