summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
Diffstat (limited to 'android/src')
-rw-r--r--android/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt12
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)
}