summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2022-03-28 16:39:08 +0200
committerDavid Lönnhager <david.l@mullvad.net>2022-03-28 16:39:08 +0200
commit0ff72eec37d0435749b981650685b556a8bcbc29 (patch)
tree8abd01ddb4501ef305ec58580d85320c4a16f5cc
parent2d3494f3ee886f4c2ec13025833e05e05bd1feac (diff)
parent95d2a66f3b4303407c333ef2abc92effddd2f546 (diff)
downloadmullvadvpn-0ff72eec37d0435749b981650685b556a8bcbc29.tar.xz
mullvadvpn-0ff72eec37d0435749b981650685b556a8bcbc29.zip
Merge branch 'fix-endpoint-update'
-rw-r--r--mullvad-daemon/src/api.rs11
-rw-r--r--talpid-core/src/tunnel_state_machine/connected_state.rs4
-rw-r--r--talpid-core/src/tunnel_state_machine/connecting_state.rs11
-rw-r--r--talpid-core/src/tunnel_state_machine/disconnected_state.rs4
-rw-r--r--talpid-core/src/tunnel_state_machine/disconnecting_state.rs12
-rw-r--r--talpid-core/src/tunnel_state_machine/error_state.rs5
-rw-r--r--talpid-core/src/tunnel_state_machine/mod.rs5
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>>),