diff options
Diffstat (limited to 'android/src/main')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt | 10 |
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 |
