summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-01-25 08:39:42 -0300
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-01-25 08:39:42 -0300
commit1b25cbcb959595c479ec2371799e27f80418dd45 (patch)
tree6cdfc499bf805df43629919eb538dbd7af5cb410
parentca739e5738c53eef48adbd4b5a9fb3078a9a76ca (diff)
parent073214b48526d78b5cee1389e974541ec5d373cb (diff)
downloadmullvadvpn-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.kt3
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt16
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()
- }
}