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 From 83e144ef7ce0e922be14cd2ef2abc938ab971c65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Fri, 23 Oct 2020 02:40:07 +0200 Subject: send notif when someone disconnects --- mumd/src/network/tcp.rs | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) (limited to 'mumd/src/network/tcp.rs') diff --git a/mumd/src/network/tcp.rs b/mumd/src/network/tcp.rs index 9a7b786..0432be1 100644 --- a/mumd/src/network/tcp.rs +++ b/mumd/src/network/tcp.rs @@ -263,22 +263,7 @@ async fn listen( info!("User {} connected to {}", user.name(), user.channel()); } ControlPacket::UserRemove(msg) => { - info!("User {} left", msg.get_session()); - state - .lock() - .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())); + state.lock().unwrap().remove_client(*msg); } ControlPacket::ChannelState(msg) => { debug!("Channel state received"); -- cgit v1.2.1 From 61d578ad3e6fd1f59cb46436b45374c8fe3936c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Fri, 23 Oct 2020 03:31:59 +0200 Subject: minor cleanup --- mumd/src/network/tcp.rs | 5 ----- 1 file changed, 5 deletions(-) (limited to 'mumd/src/network/tcp.rs') diff --git a/mumd/src/network/tcp.rs b/mumd/src/network/tcp.rs index 0432be1..630f46a 100644 --- a/mumd/src/network/tcp.rs +++ b/mumd/src/network/tcp.rs @@ -16,7 +16,6 @@ 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; @@ -251,16 +250,12 @@ async fn listen( } ControlPacket::UserState(msg) => { let mut state = state.lock().unwrap(); - let session = msg.get_session(); if *state.phase_receiver().borrow() == StatePhase::Connecting { state.audio_mut().add_client(msg.get_session()); state.parse_user_state(*msg); } else { state.parse_user_state(*msg); } - let server = state.server_mut().unwrap(); - let user = server.users().get(&session).unwrap(); - info!("User {} connected to {}", user.name(), user.channel()); } ControlPacket::UserRemove(msg) => { state.lock().unwrap().remove_client(*msg); -- cgit v1.2.1