summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2024-04-03 07:43:46 +0200
committerDavid Lönnhager <david.l@mullvad.net>2024-04-03 07:58:45 +0200
commit26ff47b9bf9557aa9d2d69c1ab2ce980496777b1 (patch)
tree5e89f00e6daeacff036757b4554d324369fcd752
parente4b2ada13d586bd9011d55c3fb3c6231bb9dc90f (diff)
downloadmullvadvpn-26ff47b9bf9557aa9d2d69c1ab2ce980496777b1.tar.xz
mullvadvpn-26ff47b9bf9557aa9d2d69c1ab2ce980496777b1.zip
Wrap AbortableStream abort receiver in Fuse
The contract of FusedFuture says that a future may not be polled when resolved, not that it is safe to poll it afterwards
-rw-r--r--mullvad-api/src/abortable_stream.rs6
1 files changed, 4 insertions, 2 deletions
diff --git a/mullvad-api/src/abortable_stream.rs b/mullvad-api/src/abortable_stream.rs
index a1426f07f1..c848bd9f92 100644
--- a/mullvad-api/src/abortable_stream.rs
+++ b/mullvad-api/src/abortable_stream.rs
@@ -2,6 +2,8 @@
//! immediately instead of after the socket times out.
use futures::channel::oneshot;
+use futures::future::Fuse;
+use futures::FutureExt;
use hyper::client::connect::{Connected, Connection};
use std::{
future::Future,
@@ -41,7 +43,7 @@ impl AbortableStreamHandle {
pub struct AbortableStream<S: Unpin> {
stream: S,
- shutdown_rx: oneshot::Receiver<()>,
+ shutdown_rx: Fuse<oneshot::Receiver<()>>,
}
impl<S> AbortableStream<S>
@@ -56,7 +58,7 @@ where
(
Self {
stream,
- shutdown_rx: rx,
+ shutdown_rx: rx.fuse(),
},
stream_handle,
)