From cc241e6325dc55a8dbc8d545d4045cef87795cdb Mon Sep 17 00:00:00 2001 From: Crypto137 Date: Mon, 23 Mar 2026 18:30:37 +0300 Subject: [PATCH] Cache SessionEncryptionChanged message in LoginQueueManager --- .../Players/LoginQueueManager.cs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/MHServerEmu.PlayerManagement/Players/LoginQueueManager.cs b/src/MHServerEmu.PlayerManagement/Players/LoginQueueManager.cs index 278cada4..edfe0988 100644 --- a/src/MHServerEmu.PlayerManagement/Players/LoginQueueManager.cs +++ b/src/MHServerEmu.PlayerManagement/Players/LoginQueueManager.cs @@ -20,6 +20,11 @@ namespace MHServerEmu.PlayerManagement.Players private static readonly TimeSpan StatusUpdateInterval = TimeSpan.FromSeconds(10); private static readonly TimeSpan ReconnectPermissionDuration = TimeSpan.FromMinutes(10); + private static readonly SessionEncryptionChanged SessionEncryptionChangedMessage = SessionEncryptionChanged.CreateBuilder() + .SetRandomNumberIndex(0) + .SetEncryptedRandomNumber(ByteString.Empty) + .Build(); + private readonly DoubleBufferQueue _newClientQueue = new(); private readonly LinkedList _defaultQueue = new(); @@ -246,10 +251,8 @@ namespace MHServerEmu.PlayerManagement.Players // However, if a malicious user modifies their client, it may try to skip ahead, so we need to verify this. _pendingClients.Add(client, Clock.UnixTime); - client.SendMessage(MuxChannel, SessionEncryptionChanged.CreateBuilder() - .SetRandomNumberIndex(0) - .SetEncryptedRandomNumber(ByteString.Empty) - .Build()); + // Gazillion never finished implementing encryption, so the SessionEncryptionChanged message is just a dummy we can cache and reuse. + client.SendMessage(MuxChannel, SessionEncryptionChangedMessage); Logger.Info($"Client [{client}] passed the login queue");