summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--android/app/src/main/AndroidManifest.xml3
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt10
2 files changed, 12 insertions, 1 deletions
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index e309f71016..5216de46d2 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -51,7 +51,8 @@
</activity>
<service android:name="net.mullvad.mullvadvpn.service.MullvadVpnService"
android:permission="android.permission.BIND_VPN_SERVICE"
- android:process=":mullvadvpn_daemon">
+ android:process=":mullvadvpn_daemon"
+ android:stopWithTask="false">
<intent-filter>
<action android:name="android.net.VpnService" />
</intent-filter>
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
index 71067c44d7..d09472fa3d 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt
@@ -13,6 +13,7 @@ import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.Job
import kotlinx.coroutines.launch
import net.mullvad.mullvadvpn.model.Settings
+import net.mullvad.mullvadvpn.model.TunnelState
import net.mullvad.mullvadvpn.service.endpoint.ServiceEndpoint
import net.mullvad.mullvadvpn.service.notifications.AccountExpiryNotification
import net.mullvad.mullvadvpn.ui.MainActivity
@@ -169,6 +170,15 @@ class MullvadVpnService : TalpidVpnService() {
super.onDestroy()
}
+ override fun onTaskRemoved(rootIntent: Intent?) {
+ connectionProxy.onStateChange.latestEvent.let { tunnelState ->
+ Log.d(TAG, "Task removed (tunnelState=$tunnelState)")
+ if (tunnelState == TunnelState.Disconnected) {
+ stop()
+ }
+ }
+ }
+
private fun handleDaemonInstance(daemon: MullvadDaemon?) {
setUpDaemonJob?.cancel()