summaryrefslogtreecommitdiffhomepage
path: root/android/service/src
diff options
context:
space:
mode:
authorJonatan Rhodin <jonatan.rhodin@mullvad.net>2023-10-27 15:12:35 +0200
committerDavid Lönnhager <david.l@mullvad.net>2023-10-31 00:45:17 +0100
commit5c491337ba76b999137fa4c0071ed5b6e0079eb4 (patch)
tree8a39c6083bf1831d519bd5b121ab5e7ad5f50017 /android/service/src
parent6394e37f888b4e1c91cbf34e388daf80764f6ca0 (diff)
downloadmullvadvpn-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.kt2
-rw-r--r--android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/RelayListListener.kt19
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,