From 80dafebac535f57c296a679a6cb94c63136b891a Mon Sep 17 00:00:00 2001 From: Songtronix Date: Mon, 9 Mar 2020 20:52:04 +0100 Subject: [PATCH] fix: #517 --- server/src/events/player.rs | 12 +++++++++++- server/src/sys/message.rs | 1 - 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/server/src/events/player.rs b/server/src/events/player.rs index 33ea7e7b63..3237ee57dd 100644 --- a/server/src/events/player.rs +++ b/server/src/events/player.rs @@ -1,7 +1,8 @@ use super::Event; -use crate::{client::Client, Server, StateExt}; +use crate::{auth_provider::AuthProvider, client::Client, Server, StateExt}; use common::{ comp, + comp::Player, msg::{ClientState, PlayerListUpdate, ServerMsg}, sync::{Uid, UidAllocator}, }; @@ -51,6 +52,15 @@ pub fn handle_client_disconnect(server: &mut Server, entity: EcsEntity) -> Event ))) } + // Make sure to remove the player from the logged in list. (See AuthProvider) + { + let players = state.ecs().read_storage::(); + let mut accounts = state.ecs().write_resource::(); + + if let Some(player) = players.get(entity) { + accounts.logout(player.uuid()); + } + } // Delete client entity if let Err(err) = state.delete_entity_recorded(entity) { error!("Failed to delete disconnected client: {:?}", err); diff --git a/server/src/sys/message.rs b/server/src/sys/message.rs index 47d02d23c3..b524c22fbc 100644 --- a/server/src/sys/message.rs +++ b/server/src/sys/message.rs @@ -300,7 +300,6 @@ impl<'a> System<'a> for Sys { None, ServerMsg::broadcast(format!("{} went offline.", &player.alias)), )); - accounts.logout(player.uuid()); } server_emitter.emit(ServerEvent::ClientDisconnect(entity)); client.postbox.send_message(ServerMsg::Disconnect);