From dd8cc6f243b8daa22c76daf568656ffededc02a4 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 4e271009f71..2e2ebd31baa 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)