diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-02-06 16:22:58 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-02-12 14:29:14 +0000 |
| commit | b8d05f36748ab101fe52da035d7ecd23d7d6543b (patch) | |
| tree | 543012c1087b866e03e302bf6f088f57fceafb43 | |
| parent | 8a297950fe060cc97d3ccb8fa8a2c505ecc0bc8c (diff) | |
| download | mullvadvpn-b8d05f36748ab101fe52da035d7ecd23d7d6543b.tar.xz mullvadvpn-b8d05f36748ab101fe52da035d7ecd23d7d6543b.zip | |
Avoid blocking inside `onStartCommand`
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt | 22 |
1 files changed, 18 insertions, 4 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 84cd6419a6..b903d35045 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt @@ -8,7 +8,6 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.Job import kotlinx.coroutines.launch -import kotlinx.coroutines.runBlocking import net.mullvad.mullvadvpn.dataproxy.ConnectionProxy import net.mullvad.talpid.TalpidVpnService import net.mullvad.talpid.util.EventNotifier @@ -25,6 +24,18 @@ class MullvadVpnService : TalpidVpnService() { private lateinit var notificationManager: ForegroundNotificationManager + var shouldConnect = false + set(value) { + field = value + + if (value == true) { + daemon?.apply { + connect() + field = false + } + } + } + private var bindCount = 0 set(value) { field = value @@ -87,8 +98,7 @@ class MullvadVpnService : TalpidVpnService() { val startResult = super.onStartCommand(intent, flags, startId) if (intent?.getAction() == VpnService.SERVICE_INTERFACE) { - runBlocking { startDaemonJob?.join() } - connectionProxy?.connect() + shouldConnect = true } return startResult @@ -117,7 +127,11 @@ class MullvadVpnService : TalpidVpnService() { } } - val newConnectionProxy = ConnectionProxy(this@MullvadVpnService, newDaemon) + val newConnectionProxy = ConnectionProxy(this@MullvadVpnService, newDaemon).apply { + if (shouldConnect) { + connect() + } + } daemon = newDaemon connectionProxy = newConnectionProxy |
