summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-07-15 12:45:42 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-07-20 12:43:14 +0000
commitefbc10342f34c7fb75a2afd48ca7d6a280496bc7 (patch)
treef3c8e304b0204c8638805d6b55af0c81fc7f05ac /android
parenta14568efec236948c533f2f2a61effce367ee3df (diff)
downloadmullvadvpn-efbc10342f34c7fb75a2afd48ca7d6a280496bc7.tar.xz
mullvadvpn-efbc10342f34c7fb75a2afd48ca7d6a280496bc7.zip
Move wait for tun up event into `TalpidVpnService`
Diffstat (limited to 'android')
-rw-r--r--android/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt10
1 files changed, 9 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 f960f0c13f..24bcd16b30 100644
--- a/android/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt
+++ b/android/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt
@@ -41,8 +41,14 @@ open class TalpidVpnService : VpnService() {
}
val vpnInterface = builder.establish()
+ val tunFd = vpnInterface?.detachFd()
- return vpnInterface?.detachFd() ?: 0
+ if (tunFd != null) {
+ waitForTunnelUp(tunFd, config.routes.any { route -> route.isIpv6 })
+ return tunFd
+ } else {
+ return 0
+ }
}
fun bypass(socket: Int): Boolean {
@@ -56,4 +62,6 @@ open class TalpidVpnService : VpnService() {
else -> throw RuntimeException("Invalid IP address (not IPv4 nor IPv6)")
}
}
+
+ private external fun waitForTunnelUp(tunFd: Int, isIpv6Enabled: Boolean)
}