summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-03-11 22:56:27 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-03-23 19:14:16 +0000
commit4c1d06e6f891f5559e525e00f927723515bd6427 (patch)
treed0bc25644730b36359c1e65caff754bce49fc638 /android/src
parent6614c093c6dec127a5c6c3aeaab34454017847cd (diff)
downloadmullvadvpn-4c1d06e6f891f5559e525e00f927723515bd6427.tar.xz
mullvadvpn-4c1d06e6f891f5559e525e00f927723515bd6427.zip
Replace `shouldConnect` with `pendingAction`
Allow both `connect` and `disconnect` actions to be queued.
Diffstat (limited to 'android/src')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt26
1 files changed, 19 insertions, 7 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
index e11f21bb4e..70ee146590 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
@@ -20,6 +20,11 @@ private const val RELAYS_FILE = "relays.json"
private const val RELAYS_PATH = "/data/data/net.mullvad.mullvadvpn/relays.json"
class MullvadVpnService : TalpidVpnService() {
+ private enum class PendingAction {
+ Connect,
+ Disconnect,
+ }
+
private val binder = LocalBinder()
private val serviceNotifier = EventNotifier<ServiceInstance?>(null)
@@ -32,15 +37,18 @@ class MullvadVpnService : TalpidVpnService() {
private lateinit var notificationManager: ForegroundNotificationManager
private lateinit var tunnelStateUpdater: TunnelStateUpdater
- var shouldConnect = false
+ private var pendingAction: PendingAction? = null
set(value) {
field = value
- if (value == true) {
- daemon?.apply {
- connect()
- field = false
+ connectionProxy?.let { activeConnectionProxy ->
+ when (value) {
+ PendingAction.Connect -> activeConnectionProxy.connect()
+ PendingAction.Disconnect -> activeConnectionProxy.disconnect()
+ null -> {}
}
+
+ field = null
}
}
@@ -143,9 +151,13 @@ class MullvadVpnService : TalpidVpnService() {
}
val newConnectionProxy = ConnectionProxy(this@MullvadVpnService, newDaemon).apply {
- if (shouldConnect) {
- connect()
+ when (pendingAction) {
+ PendingAction.Connect -> connect()
+ PendingAction.Disconnect -> disconnect()
+ null -> {}
}
+
+ pendingAction = null
}
daemon = newDaemon