diff options
Diffstat (limited to 'android')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/service/DaemonInstance.kt | 3 | ||||
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt | 16 |
2 files changed, 14 insertions, 5 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/DaemonInstance.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/DaemonInstance.kt index f3323e1aa3..0e81b87276 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/DaemonInstance.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/DaemonInstance.kt @@ -21,7 +21,8 @@ class DaemonInstance(val vpnService: MullvadVpnService, val listener: (MullvadDa private val commandChannel = spawnActor() - private var daemon by observable<MullvadDaemon?>(null) { _, _, newInstance -> + private var daemon by observable<MullvadDaemon?>(null) { _, oldInstance, newInstance -> + oldInstance?.onDestroy() listener(newInstance) } 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 083568f726..3f85bd58e0 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt @@ -131,6 +131,18 @@ class MullvadDaemon(val vpnService: MullvadVpnService) { return verifyWireguardKey(daemonInterfaceAddress) } + fun onDestroy() { + onSettingsChange.unsubscribeAll() + + onAppVersionInfoChange = null + onKeygenEvent = null + onRelayListChange = null + onTunnelStateChange = null + onDaemonStopped = null + + deinitialize() + } + private external fun initialize( vpnService: MullvadVpnService, cacheDirectory: String, @@ -199,8 +211,4 @@ class MullvadDaemon(val vpnService: MullvadVpnService) { private fun notifyDaemonStopped() { onDaemonStopped?.invoke() } - - private fun finalize() { - deinitialize() - } } |
