diff options
| author | Emīls <emils@mullvad.net> | 2022-04-14 14:38:55 +0100 |
|---|---|---|
| committer | Emīls <emils@mullvad.net> | 2022-04-19 13:52:30 +0100 |
| commit | 86fd4f33fa2aa0a2e77aa846479c11cf282279bb (patch) | |
| tree | 5ee196b702a93e3a275752dc804b6b338cae248a /mullvad-daemon/src/lib.rs | |
| parent | 96f33fdfd818906545e7129297bd70428083e2ba (diff) | |
| download | mullvadvpn-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.rs | 31 |
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)] |
