diff options
author | 2025-04-11 10:38:01 +0100 | |
---|---|---|
committer | 2025-04-11 10:38:01 +0100 | |
commit | d40983acf6db024067f7ecf5b15bae77a4fd1e8f (patch) | |
tree | 1fe5af3448bd66738ac0c937db1c0b83493360d3 | |
parent | 509187a1c5abc333e93660deb6dacef208a515bc (diff) | |
download | luz-d40983acf6db024067f7ecf5b15bae77a4fd1e8f.tar.gz luz-d40983acf6db024067f7ecf5b15bae77a4fd1e8f.tar.bz2 luz-d40983acf6db024067f7ecf5b15bae77a4fd1e8f.zip |
fix(lampada): FUSE the disconnect timeout oneshot
Diffstat (limited to '')
-rw-r--r-- | lampada/src/connection/read.rs | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/lampada/src/connection/read.rs b/lampada/src/connection/read.rs index 640ca8e..2c7eb58 100644 --- a/lampada/src/connection/read.rs +++ b/lampada/src/connection/read.rs @@ -7,6 +7,7 @@ use std::{ time::Duration, }; +use futures::{future::Fuse, FutureExt}; use luz::{connection::Tls, jabber_stream::bound_stream::BoundJabberReader}; use stanza::client::Stanza; use stanza::stream::Error as StreamErrorStanza; @@ -25,7 +26,7 @@ use super::{write::WriteHandle, SupervisorCommand, SupervisorSender}; pub struct Read<Lgc> { stream: BoundJabberReader<Tls>, disconnecting: bool, - disconnect_timedout: oneshot::Receiver<()>, + disconnect_timedout: Fuse<oneshot::Receiver<()>>, // all the threads spawned by the current connection session tasks: JoinSet<()>, @@ -62,7 +63,7 @@ impl<Lgc> Read<Lgc> { Self { stream, disconnecting: false, - disconnect_timedout: recv, + disconnect_timedout: recv.fuse(), tasks, connected, logic, @@ -91,7 +92,7 @@ impl<Lgc: Clone + Logic + Send + 'static> Read<Lgc> { // when disconnect received, ReadControl::Disconnect => { let (send, recv) = oneshot::channel(); - self.disconnect_timedout = recv; + self.disconnect_timedout = recv.fuse(); self.disconnecting = true; tokio::spawn(async { tokio::time::sleep(Duration::from_secs(10)).await; |