diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2021-01-25 08:39:42 -0300 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2021-01-25 08:39:42 -0300 |
| commit | 1b25cbcb959595c479ec2371799e27f80418dd45 (patch) | |
| tree | 6cdfc499bf805df43629919eb538dbd7af5cb410 | |
| parent | ca739e5738c53eef48adbd4b5a9fb3078a9a76ca (diff) | |
| parent | 073214b48526d78b5cee1389e974541ec5d373cb (diff) | |
| download | mullvadvpn-1b25cbcb959595c479ec2371799e27f80418dd45.tar.xz mullvadvpn-1b25cbcb959595c479ec2371799e27f80418dd45.zip | |
Merge branch 'fix-daemon-cleanup-on-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() - } } |
