From d9a3470fcb4c8c63dd5fb76dd7f2f7eb977d8b0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Sun, 18 Oct 2020 02:30:39 +0200 Subject: implement remove_client --- mumd/src/network/tcp.rs | 3 +-- mumd/src/state.rs | 10 ++++++++-- 2 files changed, 9 insertions(+), 4 deletions(-) (limited to 'mumd/src') diff --git a/mumd/src/network/tcp.rs b/mumd/src/network/tcp.rs index c4804f8..6471771 100644 --- a/mumd/src/network/tcp.rs +++ b/mumd/src/network/tcp.rs @@ -295,8 +295,7 @@ async fn listen( info!("User {} connected to {}", user.name(), user.channel()); } ControlPacket::UserRemove(msg) => { - info!("User {} left", msg.get_session()); - state.lock().unwrap().remove_client(msg.get_session()); + state.lock().unwrap().remove_client(*msg); } ControlPacket::ChannelState(msg) => { debug!("Channel state received"); diff --git a/mumd/src/state.rs b/mumd/src/state.rs index 494f61f..8dc3d68 100644 --- a/mumd/src/state.rs +++ b/mumd/src/state.rs @@ -204,8 +204,14 @@ impl State { } } - pub fn remove_client(&mut self, session: u32) { - + pub fn remove_client(&mut self, msg: msgs::UserRemove) { + if !msg.has_session() { + warn!("Tried to remove user state without session"); + return; + } + self.audio().remove_client(msg.get_session()); + self.server_mut().unwrap().users_mut().remove(&msg.get_session()); + info!("User {} disconnected", msg.get_session()); } pub fn reload_config(&mut self) { -- cgit v1.2.1