mirror of
https://github.com/dotnet/MQTTnet.git
synced 2026-10-28 17:22:37 +08:00
Fix broken package reader
This commit is contained in:
@@ -137,7 +137,7 @@ namespace MQTTnet.Adapter
|
|||||||
return new ReceivedMqttPacket(header, new MemoryStream(new byte[0], false));
|
return new ReceivedMqttPacket(header, new MemoryStream(new byte[0], false));
|
||||||
}
|
}
|
||||||
|
|
||||||
var body = header.BodyLength <= ReadBufferSize ? new MemoryStream(new byte[header.BodyLength]) : new MemoryStream();
|
var body = header.BodyLength <= ReadBufferSize ? new MemoryStream(header.BodyLength) : new MemoryStream();
|
||||||
|
|
||||||
var buffer = new byte[ReadBufferSize];
|
var buffer = new byte[ReadBufferSize];
|
||||||
while (body.Length < header.BodyLength)
|
while (body.Length < header.BodyLength)
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
using System;
|
using System.Net.Sockets;
|
||||||
using System.Net.Sockets;
|
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
using MQTTnet.Client;
|
using MQTTnet.Client;
|
||||||
|
|||||||
@@ -299,7 +299,7 @@ namespace MQTTnet.Core.Tests
|
|||||||
|
|
||||||
var serverAdapter = new TestMqttServerAdapter();
|
var serverAdapter = new TestMqttServerAdapter();
|
||||||
var s = new MqttFactory().CreateMqttServer(new[] { serverAdapter }, new MqttNetLogger());
|
var s = new MqttFactory().CreateMqttServer(new[] { serverAdapter }, new MqttNetLogger());
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var options = new MqttServerOptions { ApplicationMessageInterceptor = Interceptor };
|
var options = new MqttServerOptions { ApplicationMessageInterceptor = Interceptor };
|
||||||
@@ -330,6 +330,41 @@ namespace MQTTnet.Core.Tests
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[TestMethod]
|
||||||
|
public async Task MqttServer_Body()
|
||||||
|
{
|
||||||
|
var serverAdapter = new TestMqttServerAdapter();
|
||||||
|
var s = new MqttFactory().CreateMqttServer(new[] { serverAdapter }, new MqttNetLogger());
|
||||||
|
|
||||||
|
var bodyIsMatching = false;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
await s.StartAsync(new MqttServerOptions());
|
||||||
|
|
||||||
|
var c1 = await serverAdapter.ConnectTestClient(s, "c1");
|
||||||
|
var c2 = await serverAdapter.ConnectTestClient(s, "c2");
|
||||||
|
|
||||||
|
c1.ApplicationMessageReceived += (_, e) =>
|
||||||
|
{
|
||||||
|
if (Encoding.UTF8.GetString(e.ApplicationMessage.Payload) == "The body")
|
||||||
|
{
|
||||||
|
bodyIsMatching = true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
await c1.SubscribeAsync("A", MqttQualityOfServiceLevel.AtMostOnce);
|
||||||
|
await c2.PublishAsync(new MqttApplicationMessageBuilder().WithTopic("A").WithPayload(Encoding.UTF8.GetBytes("The body")).Build());
|
||||||
|
|
||||||
|
await Task.Delay(500);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
await s.StopAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
Assert.IsTrue(bodyIsMatching);
|
||||||
|
}
|
||||||
|
|
||||||
private class TestStorage : IMqttServerStorage
|
private class TestStorage : IMqttServerStorage
|
||||||
{
|
{
|
||||||
private IList<MqttApplicationMessage> _messages = new List<MqttApplicationMessage>();
|
private IList<MqttApplicationMessage> _messages = new List<MqttApplicationMessage>();
|
||||||
|
|||||||
Reference in New Issue
Block a user