From 1954496f73f0a22ff173e2869ed187b6f74d8777 Mon Sep 17 00:00:00 2001 From: Lizzy Fleckenstein Date: Sat, 25 Feb 2023 19:19:05 +0100 Subject: [PATCH] Properly close on rudp disco --- src/worker.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/worker.rs b/src/worker.rs index 72bf2b5..8210e63 100644 --- a/src/worker.rs +++ b/src/worker.rs @@ -45,6 +45,7 @@ pub struct Worker { cleanup: Interval, timeout: Pin>, output: mpsc::UnboundedSender>>, + closed: bool, } impl Worker { @@ -63,6 +64,7 @@ impl Worker { ping: interval(Duration::from_secs(PING_TIMEOUT)), cleanup: interval(Duration::from_secs(TIMEOUT)), timeout: Box::pin(sleep(Duration::from_secs(TIMEOUT))), + closed: false, chans: std::array::from_fn(|_| RecvChan { packets: (0..REL_BUFFER).map(|_| None).collect(), seqnum: INIT_SEQNUM, @@ -74,7 +76,7 @@ impl Worker { pub async fn run(mut self) { use Error::*; - loop { + while !self.closed { tokio::select! { _ = self.close.changed() => { self.sender @@ -190,6 +192,7 @@ impl Worker { } CtlType::Ping => {} CtlType::Disco => { + self.closed = true; return Err(RemoteDisco(false)); } }, -- 2.44.0