summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-06-17 19:42:03 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-06-18 17:25:16 +0000
commitf67fc9f071ad27c0729d027c6cfd0133c4f842ba (patch)
treed1524815ab4f13aef8062e5fa045be87a9a21e1b /android/src
parentbb0e2faedc2cec86c34aa6d0552c683a05941c32 (diff)
downloadmullvadvpn-f67fc9f071ad27c0729d027c6cfd0133c4f842ba.tar.xz
mullvadvpn-f67fc9f071ad27c0729d027c6cfd0133c4f842ba.zip
Wait for previous VPN connection to finish
Diffstat (limited to 'android/src')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadVpnService.kt7
1 files changed, 7 insertions, 0 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadVpnService.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadVpnService.kt
index 8785c94230..e728752461 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadVpnService.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadVpnService.kt
@@ -18,6 +18,7 @@ import android.os.IBinder
import net.mullvad.mullvadvpn.model.TunConfig
class MullvadVpnService : VpnService() {
+ private val connectivityListener = ConnectivityListener()
private val created = CompletableDeferred<Unit>()
private val binder = LocalBinder()
@@ -27,6 +28,7 @@ class MullvadVpnService : VpnService() {
override fun onCreate() {
created.complete(Unit)
+ connectivityListener.register(this)
}
override fun onBind(intent: Intent): IBinder {
@@ -34,11 +36,16 @@ class MullvadVpnService : VpnService() {
}
override fun onDestroy() {
+ connectivityListener.unregister(this)
asyncDaemon.cancel()
created.cancel()
}
fun createTun(config: TunConfig): Int {
+ runBlocking {
+ connectivityListener.vpnDisconnected.await()
+ }
+
val builder = Builder().apply {
for (address in config.addresses) {
addAddress(address, 32)