diff options
| author | Sebastian Holmin <sebastian.holmin@mullvad.net> | 2024-06-19 13:05:11 +0200 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2024-06-20 16:34:12 +0200 |
| commit | 4d5787999103e354eab0c75e5603db945c44a73f (patch) | |
| tree | 086fdc42942546c39e4cab68417a158a5f8ebb7b | |
| parent | 1031eebe433f3b928bff5df77c4cb4d1c04b8a6a (diff) | |
| download | mullvadvpn-4d5787999103e354eab0c75e5603db945c44a73f.tar.xz mullvadvpn-4d5787999103e354eab0c75e5603db945c44a73f.zip | |
Remove `DaemonExecutionState` and replace with bool
| -rw-r--r-- | mullvad-daemon/src/lib.rs | 57 |
1 files changed, 6 insertions, 51 deletions
diff --git a/mullvad-daemon/src/lib.rs b/mullvad-daemon/src/lib.rs index 3affb7915d..33b15bd6eb 100644 --- a/mullvad-daemon/src/lib.rs +++ b/mullvad-daemon/src/lib.rs @@ -70,7 +70,6 @@ use std::collections::HashSet; use std::os::unix::io::RawFd; use std::{ marker::PhantomData, - mem, path::PathBuf, pin::Pin, sync::{Arc, Weak}, @@ -433,49 +432,6 @@ impl From<(AccessMethodEvent, oneshot::Sender<()>)> for InternalDaemonEvent { } } -#[derive(Clone, Debug, Eq, PartialEq)] -enum DaemonExecutionState { - Running, - Exiting, - Finished, -} - -impl DaemonExecutionState { - pub fn shutdown(&mut self, tunnel_state: &TunnelState) { - use self::DaemonExecutionState::*; - - match self { - Running => { - match tunnel_state { - TunnelState::Disconnected { .. } => mem::replace(self, Finished), - _ => mem::replace(self, Exiting), - }; - } - Exiting | Finished => {} - }; - } - - pub fn disconnected(&mut self) { - use self::DaemonExecutionState::*; - - match self { - Exiting => { - let _ = mem::replace(self, Finished); - } - Running | Finished => {} - }; - } - - pub fn is_running(&self) -> bool { - use self::DaemonExecutionState::*; - - match self { - Running => true, - Exiting | Finished => false, - } - } -} - pub struct DaemonCommandChannel { sender: DaemonCommandSender, receiver: mpsc::UnboundedReceiver<InternalDaemonEvent>, @@ -611,7 +567,7 @@ pub trait EventListener { pub struct Daemon<L: EventListener> { tunnel_state: TunnelState, target_state: PersistentTargetState, - state: DaemonExecutionState, + shutting_down: bool, #[cfg(target_os = "linux")] exclude_pids: split_tunnel::PidManager, rx: mpsc::UnboundedReceiver<InternalDaemonEvent>, @@ -867,7 +823,7 @@ where locked_down: settings.block_when_disconnected, }, target_state, - state: DaemonExecutionState::Running, + shutting_down: false, #[cfg(target_os = "linux")] exclude_pids: split_tunnel::PidManager::new().map_err(Error::InitSplitTunneling)?, rx: internal_event_rx, @@ -915,7 +871,7 @@ where while let Some(event) = self.rx.next().await { self.handle_event(event).await; - if self.state == DaemonExecutionState::Finished { + if self.shutting_down && self.tunnel_state.is_disconnected() { break; } } @@ -1038,7 +994,6 @@ where } match &tunnel_state { - TunnelState::Disconnected { .. } => self.state.disconnected(), TunnelState::Connecting { .. } => { log::debug!("Settings: {}", self.settings.summary()); } @@ -1175,7 +1130,7 @@ where async fn handle_command(&mut self, command: DaemonCommand) { use self::DaemonCommand::*; - if !self.state.is_running() { + if self.shutting_down { log::trace!("Dropping daemon command because the daemon is shutting down",); return; } @@ -1454,7 +1409,7 @@ where tx: oneshot::Sender<bool>, new_target_state: TargetState, ) { - if self.state.is_running() { + if !self.shutting_down { let state_change_initated = self.set_target_state(new_target_state).await; Self::oneshot_send(tx, state_change_initated, "state change initiated"); } else { @@ -2684,7 +2639,7 @@ where self.send_tunnel_command(TunnelCommand::BlockWhenDisconnected(true, tx)); } - self.state.shutdown(&self.tunnel_state); + self.shutting_down = true; self.disconnect_tunnel(); } |
