summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-11-21 21:14:08 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-12-16 12:36:00 +0000
commit3d73129f24362ee277391af1dd11fa9a4d66ff6b (patch)
tree799c8bb4fb0d429b457468d487be69c25e27e800 /android/src
parentf860d098dd2b096640c905424f01a0eb5d64c399 (diff)
downloadmullvadvpn-3d73129f24362ee277391af1dd11fa9a4d66ff6b.tar.xz
mullvadvpn-3d73129f24362ee277391af1dd11fa9a4d66ff6b.zip
Return error when Android rejects DNS server
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)
}