diff options
| author | Jonatan Rhodin <jonatan.rhodin@mullvad.net> | 2023-10-27 15:12:35 +0200 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2023-10-31 00:45:17 +0100 |
| commit | 5c491337ba76b999137fa4c0071ed5b6e0079eb4 (patch) | |
| tree | 8a39c6083bf1831d519bd5b121ab5e7ad5f50017 /android/service/src | |
| parent | 6394e37f888b4e1c91cbf34e388daf80764f6ca0 (diff) | |
| download | mullvadvpn-5c491337ba76b999137fa4c0071ed5b6e0079eb4.tar.xz mullvadvpn-5c491337ba76b999137fa4c0071ed5b6e0079eb4.zip | |
Fix bug that would reset location constraint
Diffstat (limited to 'android/service/src')
| -rw-r--r-- | android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt | 2 | ||||
| -rw-r--r-- | android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/RelayListListener.kt | 19 |
2 files changed, 17 insertions, 4 deletions
diff --git a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt index 9110ac08ab..0b9e15774a 100644 --- a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt +++ b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt @@ -289,7 +289,7 @@ class MullvadDaemon( playPurchase: PlayPurchase, ): PlayPurchaseVerifyResult - private external fun updateRelaySettings( + private external fun setRelaySettings( daemonInterfaceAddress: Long, update: RelaySettings ) diff --git a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/RelayListListener.kt b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/RelayListListener.kt index 1884b98737..2fc1e4115a 100644 --- a/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/RelayListListener.kt +++ b/android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/RelayListListener.kt @@ -87,12 +87,13 @@ class RelayListListener(endpoint: ServiceEndpoint) { } private suspend fun updateRelayConstraints() { + val currentRelayConstraints = getCurrentRelayConstraints() val location: Constraint<LocationConstraint> = selectedRelayLocation?.let { location -> Constraint.Only(LocationConstraint.Location(location)) - } - ?: Constraint.Any() - val wireguardConstraints: WireguardConstraints? = selectedWireguardConstraints + } ?: currentRelayConstraints.location + val wireguardConstraints: WireguardConstraints = + selectedWireguardConstraints ?: currentRelayConstraints.wireguardConstraints val update = RelaySettings.Normal( @@ -107,6 +108,18 @@ class RelayListListener(endpoint: ServiceEndpoint) { daemon.await().setRelaySettings(update) } + private suspend fun getCurrentRelayConstraints(): RelayConstraints = + when (val relaySettings = daemon.await().getSettings()?.relaySettings) { + is RelaySettings.Normal -> relaySettings.relayConstraints + else -> + RelayConstraints( + location = Constraint.Any(), + providers = Constraint.Any(), + ownership = Constraint.Any(), + wireguardConstraints = WireguardConstraints(Constraint.Any()) + ) + } + companion object { private enum class Command { SetRelayLocation, |
