diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-03-11 22:56:27 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-03-23 19:14:16 +0000 |
| commit | 4c1d06e6f891f5559e525e00f927723515bd6427 (patch) | |
| tree | d0bc25644730b36359c1e65caff754bce49fc638 /android/src | |
| parent | 6614c093c6dec127a5c6c3aeaab34454017847cd (diff) | |
| download | mullvadvpn-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.kt | 26 |
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 |
