summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorSebastian Holmin <sebastian.holmin@mullvad.net>2024-06-19 13:05:11 +0200
committerDavid Lönnhager <david.l@mullvad.net>2024-06-20 16:34:12 +0200
commit4d5787999103e354eab0c75e5603db945c44a73f (patch)
tree086fdc42942546c39e4cab68417a158a5f8ebb7b
parent1031eebe433f3b928bff5df77c4cb4d1c04b8a6a (diff)
downloadmullvadvpn-4d5787999103e354eab0c75e5603db945c44a73f.tar.xz
mullvadvpn-4d5787999103e354eab0c75e5603db945c44a73f.zip
Remove `DaemonExecutionState` and replace with bool
-rw-r--r--mullvad-daemon/src/lib.rs57
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();
}