From 285e9349b672ce937f7afb16242baadf1b01d9a7 Mon Sep 17 00:00:00 2001 From: Pieter-Jan Briers Date: Tue, 24 Dec 2024 01:18:31 +0100 Subject: [PATCH] Fix race condition causing disconnected admins to appear in adminwho (#34033) --- .../Administration/Managers/AdminManager.cs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Content.Server/Administration/Managers/AdminManager.cs b/Content.Server/Administration/Managers/AdminManager.cs index 4e271009f7..2e2ebd31ba 100644 --- a/Content.Server/Administration/Managers/AdminManager.cs +++ b/Content.Server/Administration/Managers/AdminManager.cs @@ -408,6 +408,17 @@ namespace Content.Server.Administration.Managers } private async Task<(AdminData dat, int? rankId, bool specialLogin)?> LoadAdminData(ICommonSession session) + { + var result = await LoadAdminDataCore(session); + + // Make sure admin didn't disconnect while data was loading. + if (session.Status != SessionStatus.InGame) + return null; + + return result; + } + + private async Task<(AdminData dat, int? rankId, bool specialLogin)?> LoadAdminDataCore(ICommonSession session) { var promoteHost = IsLocal(session) && _cfg.GetCVar(CCVars.ConsoleLoginLocal) || _promotedPlayers.Contains(session.UserId)