From 01f69f3b6f6ecb832c436a53c514efe270a13e6e Mon Sep 17 00:00:00 2001 From: Stevan Freeborn <65925598+StevanFreeborn@users.noreply.github.com> Date: Sat, 24 May 2025 12:59:07 -0500 Subject: [PATCH] fix: catch json exceptions and log them --- .../Discord/Gateway/DiscordGatewayClient.cs | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/StevesBot.Worker/Discord/Gateway/DiscordGatewayClient.cs b/src/StevesBot.Worker/Discord/Gateway/DiscordGatewayClient.cs index 5a39d6a..9984b63 100644 --- a/src/StevesBot.Worker/Discord/Gateway/DiscordGatewayClient.cs +++ b/src/StevesBot.Worker/Discord/Gateway/DiscordGatewayClient.cs @@ -175,22 +175,31 @@ internal sealed class DiscordGatewayClient : IDiscordGatewayClient if (result.MessageType is WebSocketMessageType.Text) { await memoryStream.WriteAsync(messageBuffer.AsMemory(0, result.Count), _linkedReceiveMessageCts.Token); - await memoryStream.FlushAsync(_linkedReceiveMessageCts.Token); } } while (result.EndOfMessage is false); + await memoryStream.FlushAsync(_linkedReceiveMessageCts.Token); + memoryStream.Seek(0, SeekOrigin.Begin); var msg = Encoding.UTF8.GetString(messageBuffer, 0, result.Count); - _logger.LogDebug("Received message: {Message}", msg); + DiscordEvent? e = null; + + try + { + e = await JsonSerializer.DeserializeAsync( + memoryStream, + _jsonSerializerOptions, + _linkedReceiveMessageCts.Token + ); + } + catch (JsonException ex) + { + _logger.LogError(ex, "Failed to deserialize message: {Message}", msg); + } - var e = await JsonSerializer.DeserializeAsync( - memoryStream, - _jsonSerializerOptions, - _linkedReceiveMessageCts.Token - ); if (e is null) {