diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-07-15 12:45:42 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-07-20 12:43:14 +0000 |
| commit | efbc10342f34c7fb75a2afd48ca7d6a280496bc7 (patch) | |
| tree | f3c8e304b0204c8638805d6b55af0c81fc7f05ac /android | |
| parent | a14568efec236948c533f2f2a61effce367ee3df (diff) | |
| download | mullvadvpn-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.kt | 10 |
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) } |
