diff options
| author | Sebastian Holmin <sebastian.holmin@mullvad.net> | 2024-10-07 11:36:50 +0200 |
|---|---|---|
| committer | Sebastian Holmin <sebastian.holmin@mullvad.net> | 2024-10-07 15:40:40 +0200 |
| commit | 8ace1c33558a97cfdf3f683f63e3534a0e10560f (patch) | |
| tree | ebdae568f778eca41ff0daed8c2a65f602f0b73f | |
| parent | bf109a9e85a6cf71679595b5b3ff053e805a30a4 (diff) | |
| download | mullvadvpn-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.kt | 12 | ||||
| -rw-r--r-- | mullvad-types/src/wireguard.rs | 26 |
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 { |
