diff options
| author | David Lönnhager <david.l@mullvad.net> | 2024-04-03 07:43:46 +0200 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2024-04-03 07:58:45 +0200 |
| commit | 26ff47b9bf9557aa9d2d69c1ab2ce980496777b1 (patch) | |
| tree | 5e89f00e6daeacff036757b4554d324369fcd752 | |
| parent | e4b2ada13d586bd9011d55c3fb3c6231bb9dc90f (diff) | |
| download | mullvadvpn-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.rs | 6 |
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, ) |
