diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-11-21 22:55:05 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-11-23 13:05:40 +0000 |
| commit | 66631ae9cfdaa8e6faba3abb3f3a40a18310fe04 (patch) | |
| tree | 9371d4e6948e8aa8ca5a442f6e0147163056c961 | |
| parent | 1e514b22e961f8f29941fdd8188e0874cc9b8e11 (diff) | |
| download | mullvadvpn-66631ae9cfdaa8e6faba3abb3f3a40a18310fe04.tar.xz mullvadvpn-66631ae9cfdaa8e6faba3abb3f3a40a18310fe04.zip | |
Return boolean to indicate if tunnel is up
Allows the tunnel state machine to determine if it is blocking
connections when entering the error state.
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt | 4 | ||||
| -rw-r--r-- | talpid-core/src/tunnel/tun_provider/android/mod.rs | 8 |
2 files changed, 8 insertions, 4 deletions
diff --git a/android/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt b/android/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt index 93c7f32c36..a0dfd029f2 100644 --- a/android/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt +++ b/android/src/main/kotlin/net/mullvad/talpid/TalpidVpnService.kt @@ -55,11 +55,13 @@ open class TalpidVpnService : VpnService() { } } - fun createTunIfClosed() { + fun createTunIfClosed(): Boolean { synchronized(this) { if (activeTunDevice == null) { activeTunDevice = createTun(currentTunConfig) } + + return activeTunDevice?.let { tunFd -> tunFd > 0 } ?: false } } diff --git a/talpid-core/src/tunnel/tun_provider/android/mod.rs b/talpid-core/src/tunnel/tun_provider/android/mod.rs index e4e8f4fbac..c744ca96fa 100644 --- a/talpid-core/src/tunnel/tun_provider/android/mod.rs +++ b/talpid-core/src/tunnel/tun_provider/android/mod.rs @@ -7,6 +7,7 @@ use jnix::{ jni::{ objects::{GlobalRef, JValue}, signature::{JavaType, Primitive}, + sys::JNI_FALSE, JavaVM, }, IntoJava, JnixEnv, @@ -133,13 +134,14 @@ impl AndroidTunProvider { pub fn create_tun_if_closed(&mut self) -> Result<(), Error> { let result = self.call_method( "createTunIfClosed", - "()V", - JavaType::Primitive(Primitive::Void), + "()Z", + JavaType::Primitive(Primitive::Boolean), &[], )?; match result { - JValue::Void => Ok(()), + JValue::Bool(JNI_FALSE) => Err(Error::TunnelDeviceError), + JValue::Bool(_) => Ok(()), value => Err(Error::InvalidMethodResult( "createTunIfClosed", format!("{:?}", value), |
