From 4ae7612284a216b1b6ce0ecdcccef8439dfa7fe4 Mon Sep 17 00:00:00 2001 From: HimbeerserverDE Date: Tue, 5 Dec 2023 00:36:46 +0100 Subject: remove closed sessions from hashmap --- src/main.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/main.rs b/src/main.rs index 86eb117..851adef 100644 --- a/src/main.rs +++ b/src/main.rs @@ -122,6 +122,24 @@ impl russh::server::Handler for Server { async fn channel_close(self, channel: ChannelId, session: Session) -> Result<(Self, Session)> { println!("[info] [{}] close session", channel); + + { + let mut clients = self.clients.lock().await; + + let mut del_id = None; + for ((id, ch), _) in clients.iter() { + if *ch == channel { + del_id = Some(*id); + } + } + + if let Some(id) = del_id { + clients.remove(&(id, channel)); + } else { + println!("[warn] [{}] no session", channel); + } + } + Ok((self, session)) } } -- cgit v1.2.3