diff options
Diffstat (limited to 'android/src')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadVpnService.kt | 7 |
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) |
