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