summaryrefslogtreecommitdiffhomepage
path: root/mullvad-daemon/src/lib.rs
diff options
context:
space:
mode:
authorEmīls <emils@mullvad.net>2022-04-14 14:38:55 +0100
committerEmīls <emils@mullvad.net>2022-04-19 13:52:30 +0100
commit86fd4f33fa2aa0a2e77aa846479c11cf282279bb (patch)
tree5ee196b702a93e3a275752dc804b6b338cae248a /mullvad-daemon/src/lib.rs
parent96f33fdfd818906545e7129297bd70428083e2ba (diff)
downloadmullvadvpn-86fd4f33fa2aa0a2e77aa846479c11cf282279bb.tar.xz
mullvadvpn-86fd4f33fa2aa0a2e77aa846479c11cf282279bb.zip
Block on login when requesting account data
Diffstat (limited to 'mullvad-daemon/src/lib.rs')
-rw-r--r--mullvad-daemon/src/lib.rs31
1 files changed, 17 insertions, 14 deletions
diff --git a/mullvad-daemon/src/lib.rs b/mullvad-daemon/src/lib.rs
index b4e1763b6e..e2e18cc6a1 100644
--- a/mullvad-daemon/src/lib.rs
+++ b/mullvad-daemon/src/lib.rs
@@ -1463,22 +1463,25 @@ where
}
async fn handle_device_migration_event(&mut self, result: Result<DeviceData, device::Error>) {
- if let Ok(Some(_)) = self.account_manager.data().await {
- // Discard stale device
- return;
- }
+ let account_manager = self.account_manager.clone();
+ let event_listener = self.event_listener.clone();
+ tokio::spawn(async move {
+ if let Ok(Some(_)) = account_manager.data_after_login().await {
+ // Discard stale device
+ return;
+ }
- let result = async { self.account_manager.set(result?).await }.await;
+ let result = async { account_manager.set(result?).await }.await;
- if let Err(error) = result {
- log::error!(
- "{}",
- error.display_chain_with_msg("Failed to move over account from old settings")
- );
- // Synthesize a logout event.
- self.event_listener
- .notify_device_event(DeviceEvent::revoke(false));
- }
+ if let Err(error) = result {
+ log::error!(
+ "{}",
+ error.display_chain_with_msg("Failed to move over account from old settings")
+ );
+ // Synthesize a logout event.
+ event_listener.notify_device_event(DeviceEvent::revoke(false));
+ }
+ });
}
#[cfg(windows)]