diff --git a/server/src/manager/data.rs b/server/src/manager/data.rs index 4b348eb..56f10e0 100644 --- a/server/src/manager/data.rs +++ b/server/src/manager/data.rs @@ -492,8 +492,8 @@ pub async fn thread_system(mut app:App, bus:Bus) // Verify that session exists. if let Some(session_token) = session_id { if let Some(session) = app.sessions.get_mut(&session_token) { - if user_id == session.p_dawn.user { session.remove_connection(0, qr.id); } - else if user_id == session.p_dusk.user { session.remove_connection(1, qr.id); } + if user_id.is_some() && user_id == session.p_dawn.user { session.remove_connection(0, qr.id); } + else if user_id.is_some() && user_id == session.p_dusk.user { session.remove_connection(1, qr.id); } else { session.remove_connection(2, qr.id); } } } diff --git a/www/js/interface.js b/www/js/interface.js index dfa6f18..3dfb1e0 100644 --- a/www/js/interface.js +++ b/www/js/interface.js @@ -704,6 +704,10 @@ const INTERFACE = { }, uninit() { + MESSAGE_COMPOSE([ + PACK.u16(OpCode.SessionLeave), + ]); + if(INTERFACE_DATA !== null) { MAIN.removeChild(INTERFACE_DATA.canvas); INTERFACE_DATA = null; diff --git a/www/js/scene.js b/www/js/scene.js index a1e6807..19acb7e 100644 --- a/www/js/scene.js +++ b/www/js/scene.js @@ -493,9 +493,6 @@ const SCENES = { return true; }, unload() { - MESSAGE_COMPOSE([ - PACK.u16(OpCode.SessionLeave), - ]); INTERFACE.uninit(); }, message(code, data) {