diff options
| author | David Lönnhager <david.l@mullvad.net> | 2022-03-28 16:39:08 +0200 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2022-03-28 16:39:08 +0200 |
| commit | 0ff72eec37d0435749b981650685b556a8bcbc29 (patch) | |
| tree | 8abd01ddb4501ef305ec58580d85320c4a16f5cc | |
| parent | 2d3494f3ee886f4c2ec13025833e05e05bd1feac (diff) | |
| parent | 95d2a66f3b4303407c333ef2abc92effddd2f546 (diff) | |
| download | mullvadvpn-0ff72eec37d0435749b981650685b556a8bcbc29.tar.xz mullvadvpn-0ff72eec37d0435749b981650685b556a8bcbc29.zip | |
Merge branch 'fix-endpoint-update'
7 files changed, 17 insertions, 35 deletions
diff --git a/mullvad-daemon/src/api.rs b/mullvad-daemon/src/api.rs index 21aa7c6232..99d614a741 100644 --- a/mullvad-daemon/src/api.rs +++ b/mullvad-daemon/src/api.rs @@ -99,13 +99,10 @@ impl ApiEndpointUpdaterHandle { get_allowed_endpoint(address.clone()), result_tx, )); - if result_rx.await.is_ok() { - log::debug!("API endpoint: {}", address); - true - } else { - log::error!("Failed to update allowed endpoint"); - false - } + // Wait for the firewall policy to be updated. + let _ = result_rx.await; + log::debug!("API endpoint: {}", address); + true } } } diff --git a/talpid-core/src/tunnel_state_machine/connected_state.rs b/talpid-core/src/tunnel_state_machine/connected_state.rs index d1224056fd..80b6de8772 100644 --- a/talpid-core/src/tunnel_state_machine/connected_state.rs +++ b/talpid-core/src/tunnel_state_machine/connected_state.rs @@ -212,9 +212,7 @@ impl ConnectedState { } Some(TunnelCommand::AllowEndpoint(endpoint, tx)) => { shared_values.allowed_endpoint = endpoint; - if let Err(_) = tx.send(()) { - log::error!("The AllowEndpoint receiver was dropped"); - } + let _ = tx.send(()); SameState(self.into()) } Some(TunnelCommand::Dns(servers)) => match shared_values.set_dns_servers(servers) { diff --git a/talpid-core/src/tunnel_state_machine/connecting_state.rs b/talpid-core/src/tunnel_state_machine/connecting_state.rs index 88319a737e..f79c6ab35d 100644 --- a/talpid-core/src/tunnel_state_machine/connecting_state.rs +++ b/talpid-core/src/tunnel_state_machine/connecting_state.rs @@ -323,8 +323,7 @@ impl ConnectingState { if let Err(error_cause) = shared_values.set_allow_lan(allow_lan) { self.disconnect(shared_values, AfterDisconnect::Block(error_cause)) } else { - let next_state = self.reset_firewall(shared_values); - return next_state; + self.reset_firewall(shared_values) } } Some(TunnelCommand::AllowEndpoint(endpoint, tx)) => { @@ -335,18 +334,14 @@ impl ConnectingState { &self.tunnel_parameters, &self.tunnel_metadata, ) { + let _ = tx.send(()); return self.disconnect( shared_values, AfterDisconnect::Block(ErrorStateCause::SetFirewallPolicyError(error)), ); } - let next_state = self.reset_firewall(shared_values); - let _ = tx.send(()); - return next_state; - } - if let Err(_) = tx.send(()) { - log::error!("The AllowEndpoint receiver was dropped"); } + let _ = tx.send(()); SameState(self.into()) } Some(TunnelCommand::Dns(servers)) => match shared_values.set_dns_servers(servers) { diff --git a/talpid-core/src/tunnel_state_machine/disconnected_state.rs b/talpid-core/src/tunnel_state_machine/disconnected_state.rs index d2578b5b8c..5fc10f7319 100644 --- a/talpid-core/src/tunnel_state_machine/disconnected_state.rs +++ b/talpid-core/src/tunnel_state_machine/disconnected_state.rs @@ -154,9 +154,7 @@ impl TunnelState for DisconnectedState { shared_values.allowed_endpoint = endpoint; Self::set_firewall_policy(shared_values, true); } - if let Err(_) = tx.send(()) { - log::error!("The AllowEndpoint receiver was dropped"); - } + let _ = tx.send(()); SameState(self.into()) } Some(TunnelCommand::Dns(servers)) => { diff --git a/talpid-core/src/tunnel_state_machine/disconnecting_state.rs b/talpid-core/src/tunnel_state_machine/disconnecting_state.rs index d81c315c1a..2a14d881d6 100644 --- a/talpid-core/src/tunnel_state_machine/disconnecting_state.rs +++ b/talpid-core/src/tunnel_state_machine/disconnecting_state.rs @@ -29,9 +29,7 @@ impl DisconnectingState { } Some(TunnelCommand::AllowEndpoint(endpoint, tx)) => { shared_values.allowed_endpoint = endpoint; - if let Err(_) = tx.send(()) { - log::error!("The AllowEndpoint receiver was dropped"); - } + let _ = tx.send(()); AfterDisconnect::Nothing } Some(TunnelCommand::Dns(servers)) => { @@ -67,9 +65,7 @@ impl DisconnectingState { } Some(TunnelCommand::AllowEndpoint(endpoint, tx)) => { shared_values.allowed_endpoint = endpoint; - if let Err(_) = tx.send(()) { - log::error!("The AllowEndpoint receiver was dropped"); - } + let _ = tx.send(()); AfterDisconnect::Block(reason) } Some(TunnelCommand::Dns(servers)) => { @@ -110,9 +106,7 @@ impl DisconnectingState { } Some(TunnelCommand::AllowEndpoint(endpoint, tx)) => { shared_values.allowed_endpoint = endpoint; - if let Err(_) = tx.send(()) { - log::error!("The AllowEndpoint receiver was dropped"); - } + let _ = tx.send(()); AfterDisconnect::Reconnect(retry_attempt) } Some(TunnelCommand::Dns(servers)) => { diff --git a/talpid-core/src/tunnel_state_machine/error_state.rs b/talpid-core/src/tunnel_state_machine/error_state.rs index 63558aeb93..a11e49d859 100644 --- a/talpid-core/src/tunnel_state_machine/error_state.rs +++ b/talpid-core/src/tunnel_state_machine/error_state.rs @@ -155,15 +155,14 @@ impl TunnelState for ErrorState { #[cfg(target_os = "android")] if !Self::create_blocking_tun(shared_values) { + let _ = tx.send(()); return NewState(Self::enter( shared_values, ErrorStateCause::SetFirewallPolicyError(FirewallPolicyError::Generic), )); } } - if let Err(_) = tx.send(()) { - log::error!("The AllowEndpoint receiver was dropped"); - } + let _ = tx.send(()); SameState(self.into()) } Some(TunnelCommand::Dns(servers)) => { diff --git a/talpid-core/src/tunnel_state_machine/mod.rs b/talpid-core/src/tunnel_state_machine/mod.rs index 7296195672..7cd190edcf 100644 --- a/talpid-core/src/tunnel_state_machine/mod.rs +++ b/talpid-core/src/tunnel_state_machine/mod.rs @@ -162,8 +162,9 @@ pub async fn spawn( pub enum TunnelCommand { /// Enable or disable LAN access in the firewall. AllowLan(bool), - /// Endpoint that should never be blocked. - /// If an error occurs, the sender is dropped. + /// Endpoint that should never be blocked. `()` is sent to the + /// channel after attempting to set the firewall policy, regardless + /// of whether it succeeded. AllowEndpoint(AllowedEndpoint, oneshot::Sender<()>), /// Set DNS servers to use. Dns(Option<Vec<IpAddr>>), |
