summaryrefslogtreecommitdiffhomepage
path: root/android/lib
diff options
context:
space:
mode:
Diffstat (limited to 'android/lib')
-rw-r--r--android/lib/talpid/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt17
1 files changed, 14 insertions, 3 deletions
diff --git a/android/lib/talpid/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt b/android/lib/talpid/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt
index eabb8c49fd..cf8a775e13 100644
--- a/android/lib/talpid/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt
+++ b/android/lib/talpid/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt
@@ -117,13 +117,24 @@ open class TalpidVpnService : LifecycleVpnService() {
setMeteredIfSupported(false)
}
- val vpnInterface = builder.establish()
- val tunFd = vpnInterface?.detachFd()
+ val vpnInterfaceFd =
+ try {
+ builder.establish()
+ } catch (e: IllegalStateException) {
+ Logger.e("Failed to establish, a parameter could not be applied", e)
+ return CreateTunResult.TunnelDeviceError
+ } catch (e: IllegalArgumentException) {
+ Logger.e("Failed to establish a parameter was not accepted", e)
+ return CreateTunResult.TunnelDeviceError
+ }
- if (tunFd == null) {
+ if (vpnInterfaceFd == null) {
+ Logger.e("VpnInterface returned null")
return CreateTunResult.TunnelDeviceError
}
+ val tunFd = vpnInterfaceFd.detachFd()
+
waitForTunnelUp(tunFd, config.routes.any { route -> route.isIpv6 })
if (invalidDnsServerAddresses.isNotEmpty()) {