From cccc98aa9c6962ba8908ff0854241fbeea8ed3b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Fri, 23 Oct 2020 02:33:12 +0200 Subject: remove user from users on disconnect --- mumd/src/network/tcp.rs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'mumd/src/network/tcp.rs') diff --git a/mumd/src/network/tcp.rs b/mumd/src/network/tcp.rs index c2cb234..9a7b786 100644 --- a/mumd/src/network/tcp.rs +++ b/mumd/src/network/tcp.rs @@ -16,6 +16,7 @@ use tokio::time::{self, Duration}; use tokio_tls::{TlsConnector, TlsStream}; use tokio_util::codec::{Decoder, Framed}; use std::collections::HashMap; +use std::collections::hash_map::Entry; use std::future::Future; use std::rc::Rc; use std::cell::RefCell; @@ -268,6 +269,16 @@ async fn listen( .unwrap() .audio_mut() .remove_client(msg.get_session()); + match state.lock().unwrap().server_mut().unwrap().users_mut().entry(msg.get_session()) { + Entry::Occupied(o) => { + o.remove_entry(); + info!("Removed entry"); + }, + Entry::Vacant(_) => { + warn!("Tried to disconnect unknown user {}", msg.get_session()); + } + } + info!("{}", state.lock().unwrap().server().unwrap().users().contains_key(&msg.get_session())); } ControlPacket::ChannelState(msg) => { debug!("Channel state received"); @@ -367,4 +378,4 @@ async fn run_until_disconnection( }; join!(main_block, phase_transition_block); -} \ No newline at end of file +} -- cgit v1.2.1