summaryrefslogtreecommitdiffhomepage
path: root/android/service/src
diff options
context:
space:
mode:
authorJonatan Rhodin <jonatan.rhodin@mullvad.net>2023-11-13 13:09:03 +0100
committerAlbin <albin@mullvad.net>2023-11-17 16:37:07 +0100
commitb441a66572238dee87a8fcf7698524a8d75b416d (patch)
tree127033a92e871ced25f06c7683f1ccf8c07811ed /android/service/src
parentd5fe71a19e58d340c01a713d99393a1389724c4a (diff)
downloadmullvadvpn-b441a66572238dee87a8fcf7698524a8d75b416d.tar.xz
mullvadvpn-b441a66572238dee87a8fcf7698524a8d75b416d.zip
Fix race condition when updating provider and ownership at the same time
Diffstat (limited to 'android/service/src')
-rw-r--r--android/service/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/RelayListListener.kt25
1 files changed, 10 insertions, 15 deletions
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 186ac21092..2f18c09064 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
@@ -67,25 +67,20 @@ class RelayListListener(
}
scope.launch {
- endpoint.dispatcher.parsedMessages.filterIsInstance<Request.SetOwnership>().collect {
- request ->
- val update = getCurrentRelayConstraints().copy(ownership = request.ownership)
- daemon.await().setRelaySettings(RelaySettings.Normal(update))
- }
- }
-
- scope.launch {
- endpoint.dispatcher.parsedMessages.filterIsInstance<Request.SetProviders>().collect {
- request ->
- val update = getCurrentRelayConstraints().copy(providers = request.providers)
- daemon.await().setRelaySettings(RelaySettings.Normal(update))
+ endpoint.dispatcher.parsedMessages.filterIsInstance<Request.FetchRelayList>().collect {
+ relayList = daemon.await().getRelayLocations()
}
}
scope.launch {
- endpoint.dispatcher.parsedMessages.filterIsInstance<Request.FetchRelayList>().collect {
- relayList = daemon.await().getRelayLocations()
- }
+ endpoint.dispatcher.parsedMessages
+ .filterIsInstance<Request.SetOwnershipAndProviders>()
+ .collect { request ->
+ val update =
+ getCurrentRelayConstraints()
+ .copy(ownership = request.ownership, providers = request.providers)
+ daemon.await().setRelaySettings(RelaySettings.Normal(update))
+ }
}
}