summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2021-09-24 17:40:01 +0200
committerDavid Lönnhager <david.l@mullvad.net>2021-09-28 12:56:15 +0200
commit0b2031d22d655fe0936b9d50e54910b9f3ec3dbc (patch)
tree1e82fed8e964fe350ed0e029dc118da1003a9178
parent827d95c831f9ef8de4b419a6f7913377a20e8cf9 (diff)
downloadmullvadvpn-0b2031d22d655fe0936b9d50e54910b9f3ec3dbc.tar.xz
mullvadvpn-0b2031d22d655fe0936b9d50e54910b9f3ec3dbc.zip
Prevent multiple reconnects from being scheduled
-rw-r--r--mullvad-daemon/src/lib.rs6
1 files changed, 5 insertions, 1 deletions
diff --git a/mullvad-daemon/src/lib.rs b/mullvad-daemon/src/lib.rs
index bde37e85fb..a7493f1d82 100644
--- a/mullvad-daemon/src/lib.rs
+++ b/mullvad-daemon/src/lib.rs
@@ -1151,12 +1151,16 @@ where
}
async fn schedule_reconnect(&mut self, delay: Duration) {
+ self.unschedule_reconnect();
+
let tunnel_command_tx = self.tx.to_specialized_sender();
let (future, abort_handle) = abortable(Box::pin(async move {
tokio::time::sleep(delay).await;
log::debug!("Attempting to reconnect");
- let (tx, _) = oneshot::channel();
+ let (tx, rx) = oneshot::channel();
let _ = tunnel_command_tx.send(DaemonCommand::Reconnect(tx));
+ // suppress "unable to send" warning:
+ let _ = rx.await;
}));
tokio::spawn(future);