From edbc2a403609677a6f286f5bb6ae510eb170be8c Mon Sep 17 00:00:00 2001 From: Rutherther Date: Sun, 30 Jan 2022 20:38:42 +0100 Subject: [PATCH] fix(client): use correct packet on parsing fail --- .../NostaleLocalClient.cs | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/Core/NosSmooth.LocalClient/NostaleLocalClient.cs b/src/Core/NosSmooth.LocalClient/NostaleLocalClient.cs index cd46016..baa2951 100644 --- a/src/Core/NosSmooth.LocalClient/NostaleLocalClient.cs +++ b/src/Core/NosSmooth.LocalClient/NostaleLocalClient.cs @@ -175,27 +175,35 @@ public class NostaleLocalClient : BaseNostaleClient private async Task ProcessPacketAsync(PacketSource type, string packetString) { - var packet = _packetSerializer.Deserialize(packetString, type); - if (!packet.IsSuccess) + var packetResult = _packetSerializer.Deserialize(packetString, type); + IPacket packet; + if (!packetResult.IsSuccess) { - if (packet.Error is not PacketConverterNotFoundError) + if (packetResult.Error is not PacketConverterNotFoundError) { _logger.LogWarning("Could not parse {Packet}. Reason:", packetString); - _logger.LogResultError(packet); + _logger.LogResultError(packetResult); + packet = new ParsingFailedPacket(packetResult, packetString); } - - packet = new ParsingFailedPacket(packet, packetString); + else + { + packet = new UnresolvedPacket(packetString.Split(' ')[0], packetString); + } + } + else + { + packet = packetResult.Entity; } Result result; if (type == PacketSource.Server) { result = await _packetHandler.HandleReceivedPacketAsync - (packet.Entity, packetString, _stopRequested ?? default); + (packet, packetString, _stopRequested ?? default); } else { - result = await _packetHandler.HandleSentPacketAsync(packet.Entity, packetString, _stopRequested ?? default); + result = await _packetHandler.HandleSentPacketAsync(packet, packetString, _stopRequested ?? default); } if (!result.IsSuccess) -- 2.49.0