diff options
| author | David Lönnhager <david.l@mullvad.net> | 2022-05-06 16:33:04 +0200 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2022-05-10 13:28:30 +0200 |
| commit | d1a6df20734da7af43351c96d83de941e3b7b034 (patch) | |
| tree | 090bdb508fb94149bb3f7ad954bc73c2d44aeeb2 | |
| parent | d921be4159af452b9ae82eea7f4f8f3357a6d492 (diff) | |
| download | mullvadvpn-d1a6df20734da7af43351c96d83de941e3b7b034.tar.xz mullvadvpn-d1a6df20734da7af43351c96d83de941e3b7b034.zip | |
Initialize account manager event listener in constructor
| -rw-r--r-- | mullvad-daemon/src/device/mod.rs | 21 | ||||
| -rw-r--r-- | mullvad-daemon/src/lib.rs | 6 |
2 files changed, 5 insertions, 22 deletions
diff --git a/mullvad-daemon/src/device/mod.rs b/mullvad-daemon/src/device/mod.rs index 30638e3569..62d161740a 100644 --- a/mullvad-daemon/src/device/mod.rs +++ b/mullvad-daemon/src/device/mod.rs @@ -4,7 +4,7 @@ use futures::{ stream::StreamExt, }; -use mullvad_api::{availability::ApiAvailabilityHandle, rest}; +use mullvad_api::rest; use mullvad_types::{ account::AccountToken, device::{AccountAndDevice, Device, DeviceEvent, DeviceId, DeviceName, DevicePort}, @@ -201,7 +201,6 @@ enum AccountManagerCommand { RotateKey(ResponseTx<()>), SetRotationInterval(RotationInterval, ResponseTx<()>), ValidateDevice(ResponseTx<()>), - ReceiveEvents(Box<dyn Sender<PrivateDeviceEvent> + Send>, ResponseTx<()>), Shutdown(oneshot::Sender<()>), } @@ -253,16 +252,6 @@ impl AccountManagerHandle { .await } - pub async fn receive_events( - &self, - events_tx: impl Sender<PrivateDeviceEvent> + Send + 'static, - ) -> Result<(), Error> { - self.send_command(|tx| { - AccountManagerCommand::ReceiveEvents(Box::new(events_tx) as Box<_>, tx) - }) - .await - } - pub async fn shutdown(self) { let (tx, rx) = oneshot::channel(); let _ = self @@ -298,12 +287,13 @@ pub(crate) struct AccountManager { impl AccountManager { pub async fn spawn( rest_handle: rest::MullvadRestHandle, - api_availability: ApiAvailabilityHandle, settings_dir: &Path, initial_rotation_interval: RotationInterval, + listener_tx: impl Sender<PrivateDeviceEvent> + Send + 'static, ) -> Result<AccountManagerHandle, Error> { let (cacher, data) = DeviceCacher::new(settings_dir).await?; let token = data.as_ref().map(|state| state.account_token.clone()); + let api_availability = rest_handle.availability.clone(); let account_service = service::spawn_account_service(rest_handle.clone(), token, api_availability.clone()); @@ -315,7 +305,7 @@ impl AccountManager { device_service: device_service.clone(), data, rotation_interval: initial_rotation_interval, - listeners: vec![], + listeners: vec![Box::new(listener_tx)], last_validation: None, validation_requests: vec![], rotation_requests: vec![], @@ -397,9 +387,6 @@ impl AccountManager { } Some(AccountManagerCommand::ValidateDevice(tx)) => { self.handle_validation_request(tx, &mut current_api_call); - } - Some(AccountManagerCommand::ReceiveEvents(events_tx, tx)) => { - let _ = tx.send(Ok(self.listeners.push(events_tx))); }, None => { diff --git a/mullvad-daemon/src/lib.rs b/mullvad-daemon/src/lib.rs index 7b33048391..1e65374d64 100644 --- a/mullvad-daemon/src/lib.rs +++ b/mullvad-daemon/src/lib.rs @@ -599,20 +599,16 @@ where let account_manager = device::AccountManager::spawn( api_handle.clone(), - api_availability.clone(), &settings_dir, settings .tunnel_options .wireguard .rotation_interval .unwrap_or_default(), + internal_event_tx.to_specialized_sender(), ) .await .map_err(Error::LoadAccountManager)?; - account_manager - .receive_events(internal_event_tx.to_specialized_sender()) - .await - .map_err(Error::LoadAccountManager)?; let data = account_manager .data() .await |
