aboutsummaryrefslogtreecommitdiffstats
path: root/mumd
diff options
context:
space:
mode:
authorGustav Sörnäs <gustav@sornas.net>2020-10-23 02:33:12 +0200
committerGustav Sörnäs <gustav@sornas.net>2020-10-23 02:33:12 +0200
commitcccc98aa9c6962ba8908ff0854241fbeea8ed3b6 (patch)
tree3d37cf354774403dc2ba47a091833714488e7c1a /mumd
parent8e35c18e2aac958837b2c8fcb782950f86e5f214 (diff)
downloadmum-cccc98aa9c6962ba8908ff0854241fbeea8ed3b6.tar.gz
remove user from users on disconnect
Diffstat (limited to 'mumd')
-rw-r--r--mumd/src/network/tcp.rs13
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
+}