diff options
Diffstat (limited to 'android/src')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt | 12 |
1 files changed, 11 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 419c8a0e68..7da32ad71b 100644 --- a/android/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt +++ b/android/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt @@ -101,13 +101,19 @@ open class TalpidVpnService : VpnService() { return CreateTunResult.PermissionDenied() } + var invalidDnsServerAddresses = ArrayList<InetAddress>() + val builder = Builder().apply { for (address in config.addresses) { addAddress(address, prefixForAddress(address)) } for (dnsServer in config.dnsServers) { - addDnsServer(dnsServer) + try { + addDnsServer(dnsServer) + } catch (exception: IllegalArgumentException) { + invalidDnsServerAddresses.add(dnsServer) + } } for (route in config.routes) { @@ -137,6 +143,10 @@ open class TalpidVpnService : VpnService() { waitForTunnelUp(tunFd, config.routes.any { route -> route.isIpv6 }) + if (!invalidDnsServerAddresses.isEmpty()) { + return CreateTunResult.InvalidDnsServers(invalidDnsServerAddresses, tunFd) + } + return CreateTunResult.Success(tunFd) } |
