summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-06-14 09:44:19 -0300
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-06-14 09:44:19 -0300
commit2de3cbdaacfde3940b40aff94ee4760bc6223840 (patch)
tree62a726d300c03c0ac4d9002e96638bdd0b5c9891
parenta5626795e89c18f3b7e4ab30f401fb9b0d4a00c9 (diff)
parentb2ebd898135209517de65d70f102c6f849726066 (diff)
downloadmullvadvpn-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.kt2
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayList.kt22
-rw-r--r--mullvad-daemon/src/relays.rs5
-rw-r--r--mullvad-jni/src/into_java.rs10
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", &parameters)
+ env.new_object(&class, "(Ljava/lang/String;Z)V", &parameters)
.expect("Failed to create Relay Java object")
}
}