diff options
| author | David Lönnhager <david.l@mullvad.net> | 2022-04-29 09:43:30 +0200 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2022-04-29 09:43:30 +0200 |
| commit | 3e9516b93fe16f63c83abdf886c186c6dc230e93 (patch) | |
| tree | 4078fb4e0182d8943a26b89b526b6fe4e9a4caba | |
| parent | 9ef673ea6d26c32734a670147ad52a28408fa14a (diff) | |
| parent | 3e41d12a710d7396d3e359a52ae76384d9844279 (diff) | |
| download | mullvadvpn-3e9516b93fe16f63c83abdf886c186c6dc230e93.tar.xz mullvadvpn-3e9516b93fe16f63c83abdf886c186c6dc230e93.zip | |
Merge branch 'fix-minor-dev-inconsistency'
| -rw-r--r-- | mullvad-daemon/src/device/mod.rs | 13 |
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; |
