diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-01-13 12:00:24 -0300 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-01-13 12:00:24 -0300 |
| commit | 8dabfcfc8950e9b249a10cf4ebd964f8685dc5dc (patch) | |
| tree | d5ec667e71457bd2934584db5bbe26b0074d4877 /android | |
| parent | b73ab60bb5bf94409a0b49f91b355de43c62c06c (diff) | |
| parent | 4ba5fcde44e30f2c59edb9457fdd4aa571a1feb0 (diff) | |
| download | mullvadvpn-8dabfcfc8950e9b249a10cf4ebd964f8685dc5dc.tar.xz mullvadvpn-8dabfcfc8950e9b249a10cf4ebd964f8685dc5dc.zip | |
Merge branch 'restart-service-on-daemon-crash'
Diffstat (limited to 'android')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt | 5 | ||||
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt | 26 |
2 files changed, 24 insertions, 7 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt index c3b1661907..a175efc5ca 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt @@ -20,6 +20,7 @@ class MullvadDaemon(val vpnService: MullvadVpnService) { var onKeygenEvent: ((KeygenEvent) -> Unit)? = null var onRelayListChange: ((RelayList) -> Unit)? = null var onTunnelStateChange: ((TunnelState) -> Unit)? = null + var onDaemonStopped: (() -> Unit)? = null init { System.loadLibrary("mullvad_jni") @@ -138,6 +139,10 @@ class MullvadDaemon(val vpnService: MullvadVpnService) { onTunnelStateChange?.invoke(event) } + private fun notifyDaemonStopped() { + onDaemonStopped?.invoke() + } + private fun finalize() { deinitialize() } 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 f22094dfe9..6d8747f915 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt @@ -34,8 +34,7 @@ class MullvadVpnService : TalpidVpnService() { override fun onRebind(intent: Intent) { if (isStopping) { - tearDown() - setUp() + restart() isStopping = false } } @@ -46,7 +45,6 @@ class MullvadVpnService : TalpidVpnService() { override fun onDestroy() { tearDown() - daemon.cancel() super.onDestroy() } @@ -72,6 +70,12 @@ class MullvadVpnService : TalpidVpnService() { onSettingsChange.subscribe { settings -> notificationManager.loggedIn = settings?.accountToken != null } + + onDaemonStopped = { + if (!isStopping) { + restart() + } + } } serviceNotifier.notify(ServiceInstance(daemon, connectionProxy, connectivityListener)) @@ -88,20 +92,28 @@ class MullvadVpnService : TalpidVpnService() { private fun stop() { isStopping = true + stopDaemon() + stopSelf() + } - serviceNotifier.notify(null) - + private fun stopDaemon() { if (daemon.isCompleted) { runBlocking { daemon.await().shutdown() } } else { daemon.cancel() } - - stopSelf() } private fun tearDown() { + serviceNotifier.notify(null) + stopDaemon() + connectionProxy.onDestroy() notificationManager.onDestroy() } + + private fun restart() { + tearDown() + setUp() + } } |
