diff options
7 files changed, 11 insertions, 52 deletions
diff --git a/talpid-core/src/tunnel/tun_provider/android/mod.rs b/talpid-core/src/tunnel/tun_provider/android/mod.rs index 1772e26c23..12dfda6895 100644 --- a/talpid-core/src/tunnel/tun_provider/android/mod.rs +++ b/talpid-core/src/tunnel/tun_provider/android/mod.rs @@ -65,7 +65,6 @@ pub struct AndroidTunProvider { object: GlobalRef, last_tun_config: TunConfig, allow_lan: bool, - allowed_endpoint: IpAddr, custom_dns_servers: Option<Vec<IpAddr>>, } @@ -74,7 +73,6 @@ impl AndroidTunProvider { pub fn new( context: AndroidContext, allow_lan: bool, - allowed_endpoint: IpAddr, custom_dns_servers: Option<Vec<IpAddr>>, ) -> Self { let env = JnixEnv::from( @@ -91,7 +89,6 @@ impl AndroidTunProvider { object: context.vpn_service, last_tun_config: TunConfig::default(), allow_lan, - allowed_endpoint, custom_dns_servers, } } @@ -105,10 +102,6 @@ impl AndroidTunProvider { Ok(()) } - pub fn set_allowed_endpoint(&mut self, endpoint: IpAddr) { - self.allowed_endpoint = endpoint; - } - pub fn set_dns_servers(&mut self, servers: Option<Vec<IpAddr>>) -> Result<(), Error> { if self.custom_dns_servers != servers { self.custom_dns_servers = servers; @@ -135,7 +128,7 @@ impl AndroidTunProvider { }) } - /// Open a tunnel device that routes everything but `allowed_endpoint`, custom DNS, and + /// Open a tunnel device that routes everything but custom DNS, and /// (potentially) LAN routes via the tunnel device. /// /// Will open a new tunnel if there is already an active tunnel. The previous tunnel will be @@ -143,7 +136,6 @@ impl AndroidTunProvider { pub fn create_blocking_tun(&mut self) -> Result<(), Error> { let mut config = TunConfig::default(); self.prepare_tun_config(&mut config); - self.prepare_tun_config_for_allowed_endpoint(&mut config); let _ = self.get_tun(config)?; Ok(()) } @@ -250,24 +242,6 @@ impl AndroidTunProvider { } } - fn prepare_tun_config_for_allowed_endpoint(&self, config: &mut TunConfig) { - let endpoint_net = IpNetwork::from(self.allowed_endpoint); - let routes = config - .routes - .iter() - .flat_map(|&route| { - if route.is_ipv4() && endpoint_net.is_ipv4() { - route.sub(endpoint_net).collect() - } else if route.is_ipv6() && endpoint_net.is_ipv6() { - route.sub(endpoint_net).collect() - } else { - vec![route] - } - }) - .collect(); - config.routes = routes; - } - fn prepare_tun_config(&self, config: &mut TunConfig) { self.prepare_tun_config_for_allow_lan(config); self.prepare_tun_config_for_custom_dns(config); diff --git a/talpid-core/src/tunnel_state_machine/connected_state.rs b/talpid-core/src/tunnel_state_machine/connected_state.rs index 52c410fdf6..d1224056fd 100644 --- a/talpid-core/src/tunnel_state_machine/connected_state.rs +++ b/talpid-core/src/tunnel_state_machine/connected_state.rs @@ -211,7 +211,7 @@ impl ConnectedState { } } Some(TunnelCommand::AllowEndpoint(endpoint, tx)) => { - let _ = shared_values.set_allowed_endpoint(endpoint); + shared_values.allowed_endpoint = endpoint; if let Err(_) = tx.send(()) { log::error!("The AllowEndpoint receiver was dropped"); } diff --git a/talpid-core/src/tunnel_state_machine/connecting_state.rs b/talpid-core/src/tunnel_state_machine/connecting_state.rs index 3c3be4c7f1..950ee1a43f 100644 --- a/talpid-core/src/tunnel_state_machine/connecting_state.rs +++ b/talpid-core/src/tunnel_state_machine/connecting_state.rs @@ -328,7 +328,8 @@ impl ConnectingState { } } Some(TunnelCommand::AllowEndpoint(endpoint, tx)) => { - if shared_values.set_allowed_endpoint(endpoint) { + if shared_values.allowed_endpoint != endpoint { + shared_values.allowed_endpoint = endpoint; if let Err(error) = Self::set_firewall_policy( shared_values, &self.tunnel_parameters, diff --git a/talpid-core/src/tunnel_state_machine/disconnected_state.rs b/talpid-core/src/tunnel_state_machine/disconnected_state.rs index 6d0af09aee..d2578b5b8c 100644 --- a/talpid-core/src/tunnel_state_machine/disconnected_state.rs +++ b/talpid-core/src/tunnel_state_machine/disconnected_state.rs @@ -150,7 +150,8 @@ impl TunnelState for DisconnectedState { SameState(self.into()) } Some(TunnelCommand::AllowEndpoint(endpoint, tx)) => { - if shared_values.set_allowed_endpoint(endpoint) { + if shared_values.allowed_endpoint != endpoint { + shared_values.allowed_endpoint = endpoint; Self::set_firewall_policy(shared_values, true); } if let Err(_) = tx.send(()) { diff --git a/talpid-core/src/tunnel_state_machine/disconnecting_state.rs b/talpid-core/src/tunnel_state_machine/disconnecting_state.rs index 2d3444f44a..d81c315c1a 100644 --- a/talpid-core/src/tunnel_state_machine/disconnecting_state.rs +++ b/talpid-core/src/tunnel_state_machine/disconnecting_state.rs @@ -28,7 +28,7 @@ impl DisconnectingState { AfterDisconnect::Nothing } Some(TunnelCommand::AllowEndpoint(endpoint, tx)) => { - let _ = shared_values.set_allowed_endpoint(endpoint); + shared_values.allowed_endpoint = endpoint; if let Err(_) = tx.send(()) { log::error!("The AllowEndpoint receiver was dropped"); } @@ -66,7 +66,7 @@ impl DisconnectingState { AfterDisconnect::Block(reason) } Some(TunnelCommand::AllowEndpoint(endpoint, tx)) => { - let _ = shared_values.set_allowed_endpoint(endpoint); + shared_values.allowed_endpoint = endpoint; if let Err(_) = tx.send(()) { log::error!("The AllowEndpoint receiver was dropped"); } @@ -109,7 +109,7 @@ impl DisconnectingState { AfterDisconnect::Reconnect(retry_attempt) } Some(TunnelCommand::AllowEndpoint(endpoint, tx)) => { - let _ = shared_values.set_allowed_endpoint(endpoint); + shared_values.allowed_endpoint = endpoint; if let Err(_) = tx.send(()) { log::error!("The AllowEndpoint receiver was dropped"); } diff --git a/talpid-core/src/tunnel_state_machine/error_state.rs b/talpid-core/src/tunnel_state_machine/error_state.rs index 5464acac12..63558aeb93 100644 --- a/talpid-core/src/tunnel_state_machine/error_state.rs +++ b/talpid-core/src/tunnel_state_machine/error_state.rs @@ -149,7 +149,8 @@ impl TunnelState for ErrorState { } } Some(TunnelCommand::AllowEndpoint(endpoint, tx)) => { - if shared_values.set_allowed_endpoint(endpoint) { + if shared_values.allowed_endpoint != endpoint { + shared_values.allowed_endpoint = endpoint; let _ = Self::set_firewall_policy(shared_values); #[cfg(target_os = "android")] diff --git a/talpid-core/src/tunnel_state_machine/mod.rs b/talpid-core/src/tunnel_state_machine/mod.rs index 7fdaf18a83..cd8fba4091 100644 --- a/talpid-core/src/tunnel_state_machine/mod.rs +++ b/talpid-core/src/tunnel_state_machine/mod.rs @@ -122,8 +122,6 @@ pub async fn spawn( #[cfg(target_os = "android")] initial_settings.allow_lan, #[cfg(target_os = "android")] - initial_settings.allowed_endpoint.endpoint.address.ip(), - #[cfg(target_os = "android")] initial_settings.dns_servers.clone(), ); @@ -431,22 +429,6 @@ impl SharedTunnelStateValues { Ok(()) } - pub fn set_allowed_endpoint(&mut self, endpoint: AllowedEndpoint) -> bool { - if self.allowed_endpoint != endpoint { - #[cfg(target_os = "android")] - self.tun_provider - .lock() - .unwrap() - .set_allowed_endpoint(endpoint.endpoint.address.ip()); - - self.allowed_endpoint = endpoint; - - true - } else { - false - } - } - pub fn set_dns_servers( &mut self, dns_servers: Option<Vec<IpAddr>>, |
