Skip to content

Commit 2e1f4c6

Browse files
committedMar 21, 2025
More fixes
1 parent b1bd8be commit 2e1f4c6

File tree

10 files changed

+42
-58
lines changed

10 files changed

+42
-58
lines changed
 

‎android/lib/talpid/src/main/kotlin/net/mullvad/talpid/ConnectivityListener.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ class ConnectivityListener(
6666
_isConnected =
6767
connectivityManager
6868
.hasInternetConnectivity(resolver)
69-
.onEach { notifyConnectivityChange(it.hasIpV4(), it.hasIpV6()) }
69+
.onEach { notifyConnectivityChange(it) }
7070
.stateIn(
7171
scope + Dispatchers.IO,
7272
SharingStarted.Eagerly,
@@ -99,7 +99,7 @@ class ConnectivityListener(
9999
linkProperties?.dnsServersWithoutFallback(),
100100
)
101101

102-
private external fun notifyConnectivityChange(isIPv4: Boolean, isIPv6: Boolean)
102+
private external fun notifyConnectivityChange(connectivity: Connectivity)
103103

104104
private external fun notifyDefaultNetworkChange(networkState: NetworkState?)
105105
}

‎android/lib/talpid/src/main/kotlin/net/mullvad/talpid/model/Connectivity.kt

+3-17
Original file line numberDiff line numberDiff line change
@@ -12,26 +12,12 @@ sealed class Connectivity {
1212
// Required by jni
1313
data object PresumeOnline : Connectivity()
1414

15-
fun hasIpV4() =
16-
when (this) {
17-
is Online ->
18-
ipAvailability == IpAvailability.Ipv4 || ipAvailability == IpAvailability.All
19-
else -> false
20-
}
21-
22-
fun hasIpV6() =
23-
when (this) {
24-
is Online ->
25-
ipAvailability == IpAvailability.Ipv6 || ipAvailability == IpAvailability.All
26-
else -> false
27-
}
28-
2915
companion object {
3016
fun fromIpAvailability(ipv4: Boolean, ipv6: Boolean) =
3117
when {
32-
ipv4 && ipv6 -> Online(IpAvailability.All)
33-
ipv4 -> Online(IpAvailability.Ipv4)
34-
ipv6 -> Online(IpAvailability.Ipv6)
18+
ipv4 && ipv6 -> Online(IpAvailability.IpV4AndIpV6)
19+
ipv4 -> Online(IpAvailability.IpV4)
20+
ipv6 -> Online(IpAvailability.IpV6)
3521
else -> Offline
3622
}
3723

Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package net.mullvad.talpid.model
22

33
enum class IpAvailability {
4-
Ipv4,
5-
Ipv6,
6-
All,
4+
IpV4,
5+
IpV6,
6+
IpV4AndIpV6,
77
}

‎mullvad-daemon/src/tunnel.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ use talpid_types::net::{
2323
#[cfg(target_os = "android")]
2424
use talpid_types::net::{obfuscation::ObfuscatorConfig, wireguard, TunnelParameters};
2525

26-
use talpid_types::{net::IpAvailbility, tunnel::ParameterGenerationError, ErrorExt};
26+
use talpid_types::{net::IpAvailability, tunnel::ParameterGenerationError, ErrorExt};
2727

2828
use crate::device::{AccountManagerHandle, Error as DeviceError, PrivateAccountAndDevice};
2929

@@ -160,7 +160,7 @@ impl InnerParametersGenerator {
160160
async fn generate(
161161
&mut self,
162162
retry_attempt: u32,
163-
ip_availability: IpAvailbility,
163+
ip_availability: IpAvailability,
164164
) -> Result<TunnelParameters, Error> {
165165
let data = self.device().await?;
166166
let selected_relay = self
@@ -299,7 +299,7 @@ impl TunnelParametersGenerator for ParametersGenerator {
299299
fn generate(
300300
&mut self,
301301
retry_attempt: u32,
302-
ip_availbility: IpAvailbility,
302+
ip_availbility: IpAvailability,
303303
) -> Pin<Box<dyn Future<Output = Result<TunnelParameters, ParameterGenerationError>>>> {
304304
let generator = self.0.clone();
305305
Box::pin(async move {

‎mullvad-relay-selector/src/relay_selector/mod.rs

+8-8
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ use talpid_types::{
4747
net::{
4848
obfuscation::ObfuscatorConfig,
4949
proxy::{CustomProxy, Shadowsocks},
50-
Endpoint, IpAvailbility, IpVersion, TransportProtocol, TunnelType,
50+
Endpoint, IpAvailability, IpVersion, TransportProtocol, TunnelType,
5151
},
5252
ErrorExt,
5353
};
@@ -527,7 +527,7 @@ impl RelaySelector {
527527
pub fn get_relay(
528528
&self,
529529
retry_attempt: usize,
530-
runtime_ip_availability: IpAvailbility,
530+
runtime_ip_availability: IpAvailability,
531531
) -> Result<GetRelay, Error> {
532532
let config_guard = self.config.lock().unwrap();
533533
let config = SpecializedSelectorConfig::from(&*config_guard);
@@ -561,7 +561,7 @@ impl RelaySelector {
561561
&self,
562562
retry_attempt: usize,
563563
retry_order: &[RelayQuery],
564-
runtime_ip_availability: IpAvailbility,
564+
runtime_ip_availability: IpAvailability,
565565
) -> Result<GetRelay, Error> {
566566
let config_guard = self.config.lock().unwrap();
567567
let config = SpecializedSelectorConfig::from(&*config_guard);
@@ -604,7 +604,7 @@ impl RelaySelector {
604604
fn pick_and_merge_query(
605605
retry_attempt: usize,
606606
retry_order: &[RelayQuery],
607-
runtime_ip_availability: IpAvailbility,
607+
runtime_ip_availability: IpAvailability,
608608
user_config: &NormalSelectorConfig<'_>,
609609
parsed_relays: &RelayList,
610610
) -> Result<RelayQuery, Error> {
@@ -1146,13 +1146,13 @@ impl RelaySelector {
11461146
}
11471147

11481148
fn apply_ip_availability(
1149-
runtime_ip_availability: IpAvailbility,
1149+
runtime_ip_availability: IpAvailability,
11501150
user_query: &mut RelayQuery,
11511151
) -> Result<(), Error> {
11521152
let ip_version = match runtime_ip_availability {
1153-
IpAvailbility::IpV4 => Constraint::Only(IpVersion::V4),
1154-
IpAvailbility::IpV6 => Constraint::Only(IpVersion::V6),
1155-
IpAvailbility::IpV4AndIpV6 => Constraint::Any,
1153+
IpAvailability::IpV4 => Constraint::Only(IpVersion::V4),
1154+
IpAvailability::IpV6 => Constraint::Only(IpVersion::V6),
1155+
IpAvailability::IpV4AndIpV6 => Constraint::Any,
11561156
};
11571157
let wireguard_constraints = user_query
11581158
.wireguard_constraints()

‎mullvad-relay-selector/tests/relay_selector.rs

+8-8
Original file line numberDiff line numberDiff line change
@@ -391,7 +391,7 @@ fn test_wireguard_retry_order() {
391391
let relay_selector = default_relay_selector();
392392
for (retry_attempt, query) in WIREGUARD_RETRY_ORDER.iter().enumerate() {
393393
let relay = relay_selector
394-
.get_relay(retry_attempt, talpid_types::net::IpAvailbility::IpV6)
394+
.get_relay(retry_attempt, talpid_types::net::IpAvailability::IpV6)
395395
.unwrap_or_else(|_| panic!("Retry attempt {retry_attempt} did not yield any relay"));
396396
// For each relay, cross-check that the it has the expected tunnel protocol
397397
let tunnel_type = tunnel_type(&unwrap_relay(relay.clone()));
@@ -450,7 +450,7 @@ fn test_openvpn_retry_order() {
450450

451451
for (retry_attempt, query) in OPENVPN_RETRY_ORDER.iter().enumerate() {
452452
let relay = relay_selector
453-
.get_relay(retry_attempt, talpid_types::net::IpAvailbility::IpV6)
453+
.get_relay(retry_attempt, talpid_types::net::IpAvailability::IpV6)
454454
.unwrap_or_else(|_| panic!("Retry attempt {retry_attempt} did not yield any relay"));
455455
// For each relay, cross-check that the it has the expected tunnel protocol
456456
let tunnel_type = tunnel_type(&unwrap_relay(relay.clone()));
@@ -1159,7 +1159,7 @@ fn test_openvpn_auto_bridge() {
11591159
.get_relay_with_custom_params(
11601160
retry_attempt,
11611161
&retry_order,
1162-
talpid_types::net::IpAvailbility::IpV4,
1162+
talpid_types::net::IpAvailability::IpV4,
11631163
)
11641164
.unwrap();
11651165
match relay {
@@ -1269,7 +1269,7 @@ fn test_include_in_country() {
12691269
// If include_in_country is false for all relays, a relay must be selected anyway.
12701270
let relay_selector = RelaySelector::from_list(SelectorConfig::default(), relay_list.clone());
12711271
assert!(relay_selector
1272-
.get_relay(0, talpid_types::net::IpAvailbility::IpV4)
1272+
.get_relay(0, talpid_types::net::IpAvailability::IpV4)
12731273
.is_ok());
12741274

12751275
// If include_in_country is true for some relay, it must always be selected.
@@ -1278,7 +1278,7 @@ fn test_include_in_country() {
12781278
let relay_selector = RelaySelector::from_list(SelectorConfig::default(), relay_list);
12791279
let relay = unwrap_relay(
12801280
relay_selector
1281-
.get_relay(0, talpid_types::net::IpAvailbility::IpV4)
1281+
.get_relay(0, talpid_types::net::IpAvailability::IpV4)
12821282
.expect("expected match"),
12831283
);
12841284

@@ -1615,7 +1615,7 @@ fn valid_user_setting_should_yield_relay() {
16151615
let user_result = relay_selector.get_relay_by_query(user_query.clone());
16161616
for retry_attempt in 0..WIREGUARD_RETRY_ORDER.len() {
16171617
let post_unification_result =
1618-
relay_selector.get_relay(retry_attempt, talpid_types::net::IpAvailbility::IpV4);
1618+
relay_selector.get_relay(retry_attempt, talpid_types::net::IpAvailability::IpV4);
16191619
if user_result.is_ok() {
16201620
assert!(post_unification_result.is_ok(), "Expected Post-unification query to be valid because original query {:#?} yielded a connection configuration", user_query)
16211621
}
@@ -1638,7 +1638,7 @@ fn test_shadowsocks_runtime_ipv4_unavailable() {
16381638
..SelectorConfig::default()
16391639
};
16401640
let relay_selector = RelaySelector::from_list(config, RELAYS.clone());
1641-
let runtime_parameters = talpid_types::net::IpAvailbility::IpV6;
1641+
let runtime_parameters = talpid_types::net::IpAvailability::IpV6;
16421642
let user_result = relay_selector.get_relay(0, runtime_parameters).unwrap();
16431643
assert!(
16441644
matches!(user_result, GetRelay::Wireguard {
@@ -1666,7 +1666,7 @@ fn test_runtime_ipv4_unavailable() {
16661666
..SelectorConfig::default()
16671667
};
16681668
let relay_selector = RelaySelector::from_list(config, RELAYS.clone());
1669-
let runtime_parameters = talpid_types::net::IpAvailbility::IpV6;
1669+
let runtime_parameters = talpid_types::net::IpAvailability::IpV6;
16701670
let relay = relay_selector.get_relay(0, runtime_parameters).unwrap();
16711671
match relay {
16721672
GetRelay::Wireguard { endpoint, .. } => {

‎talpid-core/src/connectivity_listener.rs

+5-7
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ use jnix::{
55
jni::{
66
self,
77
objects::{GlobalRef, JObject, JValue},
8-
sys::{jboolean, JNI_TRUE},
98
JNIEnv, JavaVM,
109
},
1110
FromJava, JnixEnv,
@@ -165,22 +164,21 @@ impl ConnectivityListener {
165164
#[unsafe(no_mangle)]
166165
#[allow(non_snake_case)]
167166
pub extern "system" fn Java_net_mullvad_talpid_ConnectivityListener_notifyConnectivityChange(
168-
_env: JNIEnv<'_>,
167+
env: JNIEnv<'_>,
169168
_obj: JObject<'_>,
170-
is_ipv4: jboolean,
171-
is_ipv6: jboolean,
169+
connectivity: JObject<'_>,
172170
) {
173171
let Some(tx) = &*CONNECTIVITY_TX.lock().unwrap() else {
174172
// No sender has been registered
175173
log::trace!("Received connectivity notification wíth no channel");
176174
return;
177175
};
178176

179-
let is_ipv4 = JNI_TRUE == is_ipv4;
180-
let is_ipv6 = JNI_TRUE == is_ipv6;
177+
let env = JnixEnv::from(env);
178+
let connectivity: Connectivity = FromJava::from_java(&env, connectivity);
181179

182180
if tx
183-
.unbounded_send(Connectivity::new(is_ipv4, is_ipv6))
181+
.unbounded_send(connectivity)
184182
.is_err()
185183
{
186184
log::warn!("Failed to send offline change event");

‎talpid-core/src/tunnel_state_machine/connecting_state.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use talpid_routing::RouteManagerHandle;
1010
use talpid_tunnel::tun_provider::TunProvider;
1111
use talpid_tunnel::{EventHook, TunnelArgs, TunnelEvent, TunnelMetadata};
1212
use talpid_types::net::{
13-
AllowedClients, AllowedEndpoint, AllowedTunnelTraffic, IpAvailbility, TunnelParameters,
13+
AllowedClients, AllowedEndpoint, AllowedTunnelTraffic, IpAvailability, TunnelParameters,
1414
};
1515
use talpid_types::tunnel::{ErrorStateCause, FirewallPolicyError};
1616
use talpid_types::ErrorExt;
@@ -85,7 +85,7 @@ impl ConnectingState {
8585
}
8686
return ErrorState::enter(shared_values, ErrorStateCause::IsOffline);
8787
}
88-
talpid_types::net::Connectivity::PresumeOnline => IpAvailbility::IpV4,
88+
talpid_types::net::Connectivity::PresumeOnline => IpAvailability::IpV4,
8989
talpid_types::net::Connectivity::Online(ip_availbility) => ip_availbility,
9090
};
9191

‎talpid-core/src/tunnel_state_machine/mod.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ use std::{
4646
#[cfg(target_os = "android")]
4747
use talpid_types::{android::AndroidContext, ErrorExt};
4848
use talpid_types::{
49-
net::{AllowedEndpoint, Connectivity, IpAvailbility, TunnelParameters},
49+
net::{AllowedEndpoint, Connectivity, IpAvailability, TunnelParameters},
5050
tunnel::{ErrorStateCause, ParameterGenerationError, TunnelStateTransition},
5151
};
5252

@@ -452,7 +452,7 @@ pub trait TunnelParametersGenerator: Send + 'static {
452452
fn generate(
453453
&mut self,
454454
retry_attempt: u32,
455-
ip_availbility: IpAvailbility,
455+
ip_availbility: IpAvailability,
456456
) -> Pin<Box<dyn Future<Output = Result<TunnelParameters, ParameterGenerationError>>>>;
457457
}
458458

‎talpid-types/src/net/mod.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -575,14 +575,14 @@ pub enum Connectivity {
575575
/// The connectivity status is unknown, but persumed to be online
576576
PresumeOnline,
577577
/// Host is online with the given IP versions available
578-
Online(IpAvailbility),
578+
Online(IpAvailability),
579579
}
580580

581581
#[derive(Debug, Clone, Copy, PartialEq)]
582582
#[cfg_attr(target_os = "android", derive(FromJava))]
583583
#[cfg_attr(target_os = "android", jnix(package = "net.mullvad.talpid.model"))]
584584
/// Available IP versions
585-
pub enum IpAvailbility {
585+
pub enum IpAvailability {
586586
IpV4,
587587
IpV6,
588588
IpV4AndIpV6,
@@ -607,8 +607,8 @@ impl Connectivity {
607607
matches!(
608608
self,
609609
Connectivity::PresumeOnline
610-
| Connectivity::Online(IpAvailbility::IpV4)
611-
| Connectivity::Online(IpAvailbility::IpV4AndIpV6)
610+
| Connectivity::Online(IpAvailability::IpV4)
611+
| Connectivity::Online(IpAvailability::IpV4AndIpV6)
612612
)
613613
}
614614

@@ -618,8 +618,8 @@ impl Connectivity {
618618
pub fn has_ipv6(&self) -> bool {
619619
matches!(
620620
self,
621-
Connectivity::Online(IpAvailbility::IpV6)
622-
| Connectivity::Online(IpAvailbility::IpV4AndIpV6)
621+
Connectivity::Online(IpAvailability::IpV6)
622+
| Connectivity::Online(IpAvailability::IpV4AndIpV6)
623623
)
624624
}
625625
}

0 commit comments

Comments
 (0)