diff options
| author | Gustav Sörnäs <gustav@sornas.net> | 2020-10-23 02:33:12 +0200 |
|---|---|---|
| committer | Gustav Sörnäs <gustav@sornas.net> | 2020-10-23 02:33:12 +0200 |
| commit | cccc98aa9c6962ba8908ff0854241fbeea8ed3b6 (patch) | |
| tree | 3d37cf354774403dc2ba47a091833714488e7c1a /mumd | |
| parent | 8e35c18e2aac958837b2c8fcb782950f86e5f214 (diff) | |
| download | mum-cccc98aa9c6962ba8908ff0854241fbeea8ed3b6.tar.gz | |
remove user from users on disconnect
Diffstat (limited to 'mumd')
| -rw-r--r-- | mumd/src/network/tcp.rs | 13 |
1 files changed, 12 insertions, 1 deletions
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<T, F, G, H>( }; join!(main_block, phase_transition_block); -}
\ No newline at end of file +} |
