summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
Diffstat (limited to 'android')
-rw-r--r--android/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt10
1 files changed, 9 insertions, 1 deletions
diff --git a/android/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt b/android/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt
index 2e391f5cb7..3ad9809928 100644
--- a/android/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt
+++ b/android/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt
@@ -16,6 +16,7 @@ open class TalpidVpnService : VpnService() {
}
private var currentTunConfig = defaultTunConfig()
+ private var tunIsStale = false
protected var disallowedApps: List<String>? = null
@@ -33,13 +34,14 @@ open class TalpidVpnService : VpnService() {
synchronized(this) {
val tunDevice = activeTunDevice
- if (config == currentTunConfig && tunDevice != null) {
+ if (config == currentTunConfig && tunDevice != null && !tunIsStale) {
return tunDevice
} else {
val newTunDevice = createTun(config)
currentTunConfig = config
activeTunDevice = newTunDevice
+ tunIsStale = false
return newTunDevice
}
@@ -75,6 +77,12 @@ open class TalpidVpnService : VpnService() {
}
}
+ fun markTunAsStale() {
+ synchronized(this) {
+ tunIsStale = true
+ }
+ }
+
private fun createTun(config: TunConfig): Int {
if (VpnService.prepare(this) != null) {
// VPN permission wasn't granted