summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorSebastian Holmin <sebastian.holmin@mullvad.net>2024-10-07 11:36:50 +0200
committerSebastian Holmin <sebastian.holmin@mullvad.net>2024-10-07 15:40:40 +0200
commit8ace1c33558a97cfdf3f683f63e3534a0e10560f (patch)
treeebdae568f778eca41ff0daed8c2a65f602f0b73f
parentbf109a9e85a6cf71679595b5b3ff053e805a30a4 (diff)
downloadmullvadvpn-8ace1c33558a97cfdf3f683f63e3534a0e10560f.tar.xz
mullvadvpn-8ace1c33558a97cfdf3f683f63e3534a0e10560f.zip
Set "Direct only" to `false` as default
For android, it is set to true, as multihop is not supported. Note that in the daemon, the setting is called `use_multihop_if_necessary` and has the inverse meaning.
-rw-r--r--android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/ManagementService.kt12
-rw-r--r--mullvad-types/src/wireguard.rs26
2 files changed, 32 insertions, 6 deletions
diff --git a/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/ManagementService.kt b/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/ManagementService.kt
index 7961b5460c..851c92dad4 100644
--- a/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/ManagementService.kt
+++ b/android/lib/daemon-grpc/src/main/kotlin/net/mullvad/mullvadvpn/lib/daemon/grpc/ManagementService.kt
@@ -510,10 +510,14 @@ class ManagementService(
suspend fun setDaitaEnabled(enabled: Boolean): Either<SetDaitaSettingsError, Unit> =
Either.catch {
- val daitaSettings =
- ManagementInterface.DaitaSettings.newBuilder().setEnabled(enabled).build()
- grpc.setDaitaSettings(daitaSettings)
- }
+ val daitaSettings =
+ ManagementInterface.DaitaSettings.newBuilder().setEnabled(enabled)
+ // TODO: Before Multihop is supported on Android, calling `setDirectOnly` with false
+ // will cause undefined behaviour.
+ .setDirectOnly(true)
+ .build()
+ grpc.setDaitaSettings(daitaSettings)
+ }
.mapLeft(SetDaitaSettingsError::Unknown)
.mapEmpty()
diff --git a/mullvad-types/src/wireguard.rs b/mullvad-types/src/wireguard.rs
index 77ed60e1b2..12f68566bd 100644
--- a/mullvad-types/src/wireguard.rs
+++ b/mullvad-types/src/wireguard.rs
@@ -81,14 +81,36 @@ impl FromStr for QuantumResistantState {
pub struct QuantumResistantStateParseError;
#[cfg(daita)]
-#[derive(Debug, Default, Clone, Serialize, Deserialize, PartialEq)]
+#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct DaitaSettings {
pub enabled: bool,
- #[serde(default)]
+ #[cfg_attr(target_os = "android", serde(skip))]
+ #[serde(default = "DaitaSettings::default_use_multihop_if_necessary")]
+ /// Whether to use multihop if the selected relay is not DAITA-compatible. Note that this is
+ /// the inverse of of "Direct only" in the GUI.
pub use_multihop_if_necessary: bool,
}
+#[cfg(daita)]
+impl DaitaSettings {
+ /// This setting should be enabled by default, expect on Android where multihop is not
+ /// supported.
+ const fn default_use_multihop_if_necessary() -> bool {
+ cfg!(not(target_os = "android"))
+ }
+}
+
+#[cfg(daita)]
+impl Default for DaitaSettings {
+ fn default() -> Self {
+ Self {
+ enabled: false,
+ use_multihop_if_necessary: Self::default_use_multihop_if_necessary(),
+ }
+ }
+}
+
/// Contains account specific wireguard data
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)]
pub struct WireguardData {