diff options
| -rw-r--r-- | mullvad-daemon/src/lib.rs | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/mullvad-daemon/src/lib.rs b/mullvad-daemon/src/lib.rs index 5a1901e941..076ef3341c 100644 --- a/mullvad-daemon/src/lib.rs +++ b/mullvad-daemon/src/lib.rs @@ -238,6 +238,7 @@ pub struct Daemon<L: EventListener = ManagementInterfaceEventBroadcaster> { last_generated_relay: Option<Relay>, last_generated_bridge_relay: Option<Relay>, version: String, + shutdown_callbacks: Vec<Box<dyn FnOnce()>>, } impl Daemon<ManagementInterfaceEventBroadcaster> { @@ -416,6 +417,7 @@ where last_generated_bridge_relay: None, version, wireguard_key_manager, + shutdown_callbacks: vec![], }; daemon.ensure_wireguard_keys_for_current_account(); @@ -442,6 +444,9 @@ where break; } } + for cb in self.shutdown_callbacks.into_iter() { + cb(); + } Ok(()) } @@ -970,9 +975,11 @@ where // Shut the daemon down. self.trigger_shutdown_event(); - if !failed { - Self::oneshot_send(tx, (), "factory_reset response"); - } + self.shutdown_callbacks.push(Box::new(move || { + if !failed { + Self::oneshot_send(tx, (), "factory_reset response"); + } + })); } fn on_update_relay_settings(&mut self, tx: oneshot::Sender<()>, update: RelaySettingsUpdate) { |
