diff options
| -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), |
