mirror of
https://github.com/dotnet/MQTTnet.git
synced 2026-10-17 17:53:03 +08:00
Fix parsing error of AUTH packet with empty body (#2070)
* Reformat code * Fix issue * Fix AUTH packet serialization
This commit is contained in:
@@ -6,60 +6,59 @@ using MQTTnet.Formatter;
|
||||
using MQTTnet.Packets;
|
||||
using MQTTnet.Tests.Mockups;
|
||||
|
||||
namespace MQTTnet.Tests
|
||||
namespace MQTTnet.Tests;
|
||||
|
||||
public sealed class MqttPacketSerializationHelper : IDisposable
|
||||
{
|
||||
public sealed class MqttPacketSerializationHelper : IDisposable
|
||||
readonly IMqttPacketFormatter _packetFormatter;
|
||||
readonly MqttProtocolVersion _protocolVersion;
|
||||
|
||||
public MqttPacketSerializationHelper(MqttProtocolVersion protocolVersion = MqttProtocolVersion.V311, MqttBufferWriter bufferWriter = null)
|
||||
{
|
||||
readonly IMqttPacketFormatter _packetFormatter;
|
||||
readonly MqttProtocolVersion _protocolVersion;
|
||||
_protocolVersion = protocolVersion;
|
||||
|
||||
public MqttPacketSerializationHelper(MqttProtocolVersion protocolVersion = MqttProtocolVersion.V311, MqttBufferWriter bufferWriter = null)
|
||||
if (bufferWriter == null)
|
||||
{
|
||||
_protocolVersion = protocolVersion;
|
||||
|
||||
if (bufferWriter == null)
|
||||
{
|
||||
bufferWriter = new MqttBufferWriter(4096, 65535);
|
||||
}
|
||||
|
||||
_packetFormatter = MqttPacketFormatterAdapter.GetMqttPacketFormatter(_protocolVersion, bufferWriter);
|
||||
bufferWriter = new MqttBufferWriter(4096, 65535);
|
||||
}
|
||||
|
||||
public MqttPacket Decode(MqttPacketBuffer buffer)
|
||||
{
|
||||
using (var channel = new MemoryMqttChannel(buffer.ToArray()))
|
||||
{
|
||||
var formatterAdapter = new MqttPacketFormatterAdapter(_protocolVersion, new MqttBufferWriter(4096, 65535));
|
||||
_packetFormatter = MqttPacketFormatterAdapter.GetMqttPacketFormatter(_protocolVersion, bufferWriter);
|
||||
}
|
||||
|
||||
var adapter = new MqttChannelAdapter(channel, formatterAdapter, MqttNetNullLogger.Instance);
|
||||
return adapter.ReceivePacketAsync(CancellationToken.None).GetAwaiter().GetResult();
|
||||
}
|
||||
}
|
||||
public MqttPacket Decode(MqttPacketBuffer buffer)
|
||||
{
|
||||
using var channel = new MemoryMqttChannel(buffer.ToArray());
|
||||
var formatterAdapter = new MqttPacketFormatterAdapter(_protocolVersion, new MqttBufferWriter(4096, 65535));
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
}
|
||||
var adapter = new MqttChannelAdapter(channel, formatterAdapter, MqttNetNullLogger.Instance);
|
||||
return adapter.ReceivePacketAsync(CancellationToken.None).GetAwaiter().GetResult();
|
||||
}
|
||||
|
||||
public MqttPacketBuffer Encode(MqttPacket packet)
|
||||
{
|
||||
return _packetFormatter.Encode(packet);
|
||||
}
|
||||
public static MqttPacket DecodePacket(byte[] buffer, MqttProtocolVersion protocolVersion)
|
||||
{
|
||||
using var helper = new MqttPacketSerializationHelper(protocolVersion);
|
||||
return helper.Decode(new MqttPacketBuffer(buffer));
|
||||
}
|
||||
|
||||
public static TPacket EncodeAndDecodePacket<TPacket>(TPacket packet, MqttProtocolVersion protocolVersion) where TPacket : MqttPacket
|
||||
{
|
||||
using (var helper = new MqttPacketSerializationHelper(protocolVersion))
|
||||
{
|
||||
var buffer = helper.Encode(packet);
|
||||
return (TPacket)helper.Decode(buffer);
|
||||
}
|
||||
}
|
||||
public void Dispose()
|
||||
{
|
||||
}
|
||||
|
||||
public static byte[] EncodePacket(MqttPacket packet)
|
||||
{
|
||||
using (var helper = new MqttPacketSerializationHelper())
|
||||
{
|
||||
return helper.Encode(packet).ToArray();
|
||||
}
|
||||
}
|
||||
public MqttPacketBuffer Encode(MqttPacket packet)
|
||||
{
|
||||
return _packetFormatter.Encode(packet);
|
||||
}
|
||||
|
||||
public static TPacket EncodeAndDecodePacket<TPacket>(TPacket packet, MqttProtocolVersion protocolVersion) where TPacket : MqttPacket
|
||||
{
|
||||
using var helper = new MqttPacketSerializationHelper(protocolVersion);
|
||||
var buffer = helper.Encode(packet);
|
||||
return (TPacket)helper.Decode(buffer);
|
||||
}
|
||||
|
||||
public static byte[] EncodePacket(MqttPacket packet, MqttProtocolVersion protocolVersion)
|
||||
{
|
||||
using var helper = new MqttPacketSerializationHelper(protocolVersion);
|
||||
return helper.Encode(packet).ToArray();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user