summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-02-06 16:22:58 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-02-12 14:29:14 +0000
commitb8d05f36748ab101fe52da035d7ecd23d7d6543b (patch)
tree543012c1087b866e03e302bf6f088f57fceafb43
parent8a297950fe060cc97d3ccb8fa8a2c505ecc0bc8c (diff)
downloadmullvadvpn-b8d05f36748ab101fe52da035d7ecd23d7d6543b.tar.xz
mullvadvpn-b8d05f36748ab101fe52da035d7ecd23d7d6543b.zip
Avoid blocking inside `onStartCommand`
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt22
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