diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-11-21 20:54:26 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-12-16 12:36:00 +0000 |
| commit | fb5d6a7fcb0df75554431eba1720378e7b434d3f (patch) | |
| tree | 5fcb4b6ce9c3bc22a01479f59cd682d03c477bf1 | |
| parent | 4be0d0eaaf23ce277972470a610fa7f3ec4bfbf9 (diff) | |
| download | mullvadvpn-fb5d6a7fcb0df75554431eba1720378e7b434d3f.tar.xz mullvadvpn-fb5d6a7fcb0df75554431eba1720378e7b434d3f.zip | |
Add `CreateTunResult.InvalidDnsServers` variant
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/talpid/CreateTunResult.kt | 10 | ||||
| -rw-r--r-- | mullvad-jni/src/classes.rs | 1 | ||||
| -rw-r--r-- | talpid-core/src/tunnel/tun_provider/android/mod.rs | 10 |
3 files changed, 21 insertions, 0 deletions
diff --git a/android/src/main/kotlin/net/mullvad/talpid/CreateTunResult.kt b/android/src/main/kotlin/net/mullvad/talpid/CreateTunResult.kt index 276ed81521..dfa82852f1 100644 --- a/android/src/main/kotlin/net/mullvad/talpid/CreateTunResult.kt +++ b/android/src/main/kotlin/net/mullvad/talpid/CreateTunResult.kt @@ -1,5 +1,7 @@ package net.mullvad.talpid +import java.net.InetAddress + sealed class CreateTunResult { open val isOpen get() = false @@ -9,6 +11,14 @@ sealed class CreateTunResult { get() = true } + class InvalidDnsServers( + val addresses: ArrayList<InetAddress>, + val tunFd: Int + ) : CreateTunResult() { + override val isOpen + get() = true + } + class PermissionDenied : CreateTunResult() class TunnelDeviceError : CreateTunResult() } diff --git a/mullvad-jni/src/classes.rs b/mullvad-jni/src/classes.rs index a77d6df832..837585246d 100644 --- a/mullvad-jni/src/classes.rs +++ b/mullvad-jni/src/classes.rs @@ -60,6 +60,7 @@ pub const CLASSES: &[&str] = &[ "net/mullvad/talpid/tunnel/ParameterGenerationError", "net/mullvad/talpid/ConnectivityListener", "net/mullvad/talpid/CreateTunResult$Success", + "net/mullvad/talpid/CreateTunResult$InvalidDnsServers", "net/mullvad/talpid/CreateTunResult$PermissionDenied", "net/mullvad/talpid/CreateTunResult$TunnelDeviceError", "net/mullvad/talpid/TalpidVpnService", diff --git a/talpid-core/src/tunnel/tun_provider/android/mod.rs b/talpid-core/src/tunnel/tun_provider/android/mod.rs index 762f5e4382..b9385f13a7 100644 --- a/talpid-core/src/tunnel/tun_provider/android/mod.rs +++ b/talpid-core/src/tunnel/tun_provider/android/mod.rs @@ -40,6 +40,12 @@ pub enum Error { FindMethod(&'static str, #[error(source)] jnix::jni::errors::Error), #[error( + display = "Attempt to configure the tunnel with an invalid DNS server address(es): {:?}", + _0 + )] + InvalidDnsServers(Vec<IpAddr>), + + #[error( display = "Received an invalid result from TalpidVpnService.{}: {}", _0, _1 @@ -379,6 +385,7 @@ impl Default for TunConfig { #[jnix(package = "net.mullvad.talpid")] enum CreateTunResult { Success { tun_fd: i32 }, + InvalidDnsServers { addresses: Vec<IpAddr> }, PermissionDenied, TunnelDeviceError, } @@ -387,6 +394,9 @@ impl From<CreateTunResult> for Result<RawFd, Error> { fn from(result: CreateTunResult) -> Self { match result { CreateTunResult::Success { tun_fd } => Ok(tun_fd), + CreateTunResult::InvalidDnsServers { addresses } => { + Err(Error::InvalidDnsServers(addresses)) + } CreateTunResult::PermissionDenied => Err(Error::PermissionDenied), CreateTunResult::TunnelDeviceError => Err(Error::TunnelDeviceError), } |
