summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2022-04-29 09:43:30 +0200
committerDavid Lönnhager <david.l@mullvad.net>2022-04-29 09:43:30 +0200
commit3e9516b93fe16f63c83abdf886c186c6dc230e93 (patch)
tree4078fb4e0182d8943a26b89b526b6fe4e9a4caba
parent9ef673ea6d26c32734a670147ad52a28408fa14a (diff)
parent3e41d12a710d7396d3e359a52ae76384d9844279 (diff)
downloadmullvadvpn-3e9516b93fe16f63c83abdf886c186c6dc230e93.tar.xz
mullvadvpn-3e9516b93fe16f63c83abdf886c186c6dc230e93.zip
Merge branch 'fix-minor-dev-inconsistency'
-rw-r--r--mullvad-daemon/src/device/mod.rs13
1 files changed, 8 insertions, 5 deletions
diff --git a/mullvad-daemon/src/device/mod.rs b/mullvad-daemon/src/device/mod.rs
index 1321fb3e69..ae27e10438 100644
--- a/mullvad-daemon/src/device/mod.rs
+++ b/mullvad-daemon/src/device/mod.rs
@@ -549,19 +549,22 @@ impl AccountManager {
async fn logout(&mut self, tx: ResponseTx<()>) {
Self::drain_requests(&mut self.data_requests, || Err(Error::AccountChange));
- let data = match self.data.take() {
- Some(it) => it,
- _ => return,
- };
+ if self.data.is_none() {
+ let _ = tx.send(Ok(()));
+ return;
+ }
if let Err(err) = self.cacher.write(None).await {
let _ = tx.send(Err(err));
return;
}
+ // Cannot panic: `data.is_none() == false`.
+ let old_data = self.data.take().unwrap();
+
self.listeners
.retain(|listener| listener.send(InnerDeviceEvent::Logout).is_ok());
- let logout_call = tokio::spawn(Box::pin(self.logout_api_call(data)));
+ let logout_call = tokio::spawn(Box::pin(self.logout_api_call(old_data)));
tokio::spawn(async move {
let _response = tokio::time::timeout(LOGOUT_TIMEOUT, logout_call).await;