diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-06-14 09:44:19 -0300 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-06-14 09:44:19 -0300 |
| commit | 2de3cbdaacfde3940b40aff94ee4760bc6223840 (patch) | |
| tree | 62a726d300c03c0ac4d9002e96638bdd0b5c9891 | |
| parent | a5626795e89c18f3b7e4ab30f401fb9b0d4a00c9 (diff) | |
| parent | b2ebd898135209517de65d70f102c6f849726066 (diff) | |
| download | mullvadvpn-2de3cbdaacfde3940b40aff94ee4760bc6223840.tar.xz mullvadvpn-2de3cbdaacfde3940b40aff94ee4760bc6223840.zip | |
Merge branch 'wireguard-only-relays-on-android'
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/model/Relay.kt | 2 | ||||
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayList.kt | 22 | ||||
| -rw-r--r-- | mullvad-daemon/src/relays.rs | 5 | ||||
| -rw-r--r-- | mullvad-jni/src/into_java.rs | 10 |
4 files changed, 26 insertions, 13 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/model/Relay.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/model/Relay.kt index 85c062c4c6..4173af782b 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/model/Relay.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/model/Relay.kt @@ -1,4 +1,4 @@ package net.mullvad.mullvadvpn.model -data class Relay(val hostname: String) { +data class Relay(val hostname: String, val hasWireguardTunnels: Boolean) { } diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayList.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayList.kt index 809fa1265f..e6bd7728b0 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayList.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayList.kt @@ -7,17 +7,21 @@ class RelayList { val countries: List<RelayCountry> constructor(model: net.mullvad.mullvadvpn.model.RelayList) { - countries = model.countries.map { country -> - val cities = country.cities.map { city -> - val relays = city.relays.map { relay -> - Relay(country.code, city.code, relay.hostname) - } + countries = model.countries + .map { country -> + val cities = country.cities + .map { city -> + val relays = city.relays + .filter { relay -> relay.hasWireguardTunnels } + .map { relay -> Relay(country.code, city.code, relay.hostname) } - RelayCity(city.name, country.code, city.code, false, relays) - } + RelayCity(city.name, country.code, city.code, false, relays) + } + .filter { city -> city.relays.isNotEmpty() } - RelayCountry(country.name, country.code, false, cities) - } + RelayCountry(country.name, country.code, false, cities) + } + .filter { country -> country.cities.isNotEmpty() } } fun findItemForLocation( diff --git a/mullvad-daemon/src/relays.rs b/mullvad-daemon/src/relays.rs index fceaf45ffb..7112ca101a 100644 --- a/mullvad-daemon/src/relays.rs +++ b/mullvad-daemon/src/relays.rs @@ -248,10 +248,15 @@ impl RelaySelector { // any constraints that are explicitly specified. let tunnel_constraints = match original_constraints.tunnel { // No constraints, we use our preferred ones. + #[cfg(not(target_os = "android"))] Constraint::Any => TunnelConstraints::OpenVpn(OpenVpnConstraints { port: preferred_port, protocol: Constraint::Only(preferred_protocol), }), + #[cfg(target_os = "android")] + Constraint::Any => TunnelConstraints::Wireguard(WireguardConstraints { + port: Constraint::Any, + }), Constraint::Only(TunnelConstraints::OpenVpn(ref openvpn_constraints)) => { match openvpn_constraints { // Constrained to OpenVpn, but port/protocol not constrained. Use our preferred. diff --git a/mullvad-jni/src/into_java.rs b/mullvad-jni/src/into_java.rs index c49ec4a2c8..470424edc0 100644 --- a/mullvad-jni/src/into_java.rs +++ b/mullvad-jni/src/into_java.rs @@ -3,7 +3,7 @@ use ipnetwork::IpNetwork; use jni::{ objects::{JList, JObject, JString, JValue}, signature::JavaType, - sys::{jint, jshort, jsize}, + sys::{jboolean, jint, jshort, jsize}, JNIEnv, }; use mullvad_types::{ @@ -304,9 +304,13 @@ impl<'env> IntoJava<'env> for Relay { fn into_java(self, env: &JNIEnv<'env>) -> Self::JavaType { let class = get_class("net/mullvad/mullvadvpn/model/Relay"); let hostname = env.auto_local(JObject::from(self.hostname.into_java(env))); - let parameters = [JValue::Object(hostname.as_obj())]; + let has_wireguard_tunnels = (!self.tunnels.wireguard.is_empty()) as jboolean; + let parameters = [ + JValue::Object(hostname.as_obj()), + JValue::Bool(has_wireguard_tunnels), + ]; - env.new_object(&class, "(Ljava/lang/String;)V", ¶meters) + env.new_object(&class, "(Ljava/lang/String;Z)V", ¶meters) .expect("Failed to create Relay Java object") } } |
