mirror of
https://github.com/dotnet/MQTTnet.git
synced 2026-10-20 11:45:43 +08:00
fixed #421
This commit is contained in:
@@ -10,7 +10,8 @@
|
|||||||
<iconUrl>https://raw.githubusercontent.com/chkr1011/MQTTnet/master/Images/Logo_128x128.png</iconUrl>
|
<iconUrl>https://raw.githubusercontent.com/chkr1011/MQTTnet/master/Images/Logo_128x128.png</iconUrl>
|
||||||
<requireLicenseAcceptance>false</requireLicenseAcceptance>
|
<requireLicenseAcceptance>false</requireLicenseAcceptance>
|
||||||
<description>This is a support library to integrate MQTTnet into AspNetCore.</description>
|
<description>This is a support library to integrate MQTTnet into AspNetCore.</description>
|
||||||
<releaseNotes>* For more release notes please check the MQTTnet release notes.
|
<releaseNotes> * For more release notes please check the MQTTnet release notes.
|
||||||
|
* [Server] fixed cpu spike in case a client disconnectes (issue 421)
|
||||||
</releaseNotes>
|
</releaseNotes>
|
||||||
<copyright>Copyright Christian Kratky 2016-2018</copyright>
|
<copyright>Copyright Christian Kratky 2016-2018</copyright>
|
||||||
<tags>MQTT Message Queue Telemetry Transport MQTTClient MQTTServer Server MQTTBroker Broker NETStandard IoT InternetOfThings Messaging Hardware Arduino Sensor Actuator M2M ESP Smart Home Cities Automation Xamarin</tags>
|
<tags>MQTT Message Queue Telemetry Transport MQTTClient MQTTServer Server MQTTBroker Broker NETStandard IoT InternetOfThings Messaging Hardware Arduino Sensor Actuator M2M ESP Smart Home Cities Automation Xamarin</tags>
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
using Microsoft.AspNetCore.Connections;
|
using Microsoft.AspNetCore.Connections;
|
||||||
using MQTTnet.Adapter;
|
using MQTTnet.Adapter;
|
||||||
using MQTTnet.AspNetCore.Client.Tcp;
|
using MQTTnet.AspNetCore.Client.Tcp;
|
||||||
|
using MQTTnet.Exceptions;
|
||||||
using MQTTnet.Packets;
|
using MQTTnet.Packets;
|
||||||
using MQTTnet.Serializer;
|
using MQTTnet.Serializer;
|
||||||
using System;
|
using System;
|
||||||
@@ -83,7 +84,7 @@ namespace MQTTnet.AspNetCore
|
|||||||
}
|
}
|
||||||
else if (readResult.IsCompleted)
|
else if (readResult.IsCompleted)
|
||||||
{
|
{
|
||||||
break;
|
throw new MqttCommunicationException("Connection Aborted");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>netcoreapp2.1</TargetFramework>
|
<TargetFramework>netcoreapp2.1</TargetFramework>
|
||||||
@@ -7,9 +7,9 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.0" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.8.0" />
|
||||||
<PackageReference Include="MSTest.TestAdapter" Version="1.2.1" />
|
<PackageReference Include="MSTest.TestAdapter" Version="1.3.2" />
|
||||||
<PackageReference Include="MSTest.TestFramework" Version="1.2.1" />
|
<PackageReference Include="MSTest.TestFramework" Version="1.3.2" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO.Pipelines;
|
||||||
|
using Microsoft.AspNetCore.Connections;
|
||||||
|
using Microsoft.AspNetCore.Http.Features;
|
||||||
|
|
||||||
|
namespace MQTTnet.AspNetCore.Tests.Mockups
|
||||||
|
{
|
||||||
|
public class ConnectionContextMockup : ConnectionContext
|
||||||
|
{
|
||||||
|
public override string ConnectionId { get; set; }
|
||||||
|
|
||||||
|
public override IFeatureCollection Features { get; }
|
||||||
|
|
||||||
|
public override IDictionary<object, object> Items { get; set; }
|
||||||
|
public override IDuplexPipe Transport { get; set; }
|
||||||
|
|
||||||
|
public ConnectionContextMockup()
|
||||||
|
{
|
||||||
|
//Transport = new DefaultConnectionContext
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
using System.IO.Pipelines;
|
||||||
|
|
||||||
|
namespace MQTTnet.AspNetCore.Tests.Mockups
|
||||||
|
{
|
||||||
|
public class DuplexPipeMockup : IDuplexPipe
|
||||||
|
{
|
||||||
|
PipeReader IDuplexPipe.Input => Receive.Reader;
|
||||||
|
|
||||||
|
PipeWriter IDuplexPipe.Output => Send.Writer;
|
||||||
|
|
||||||
|
|
||||||
|
public Pipe Receive { get; set; } = new Pipe();
|
||||||
|
|
||||||
|
public Pipe Send { get; set; } = new Pipe();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
using Microsoft.AspNetCore.Connections;
|
||||||
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
|
using MQTTnet.AspNetCore.Tests.Mockups;
|
||||||
|
using MQTTnet.Exceptions;
|
||||||
|
using MQTTnet.Serializer;
|
||||||
|
using System;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace MQTTnet.AspNetCore.Tests
|
||||||
|
{
|
||||||
|
[TestClass]
|
||||||
|
public class MqttConnectionContextTest
|
||||||
|
{
|
||||||
|
[TestMethod]
|
||||||
|
public async Task TestReceivePacketAsyncThrowsWhenReaderCompleted()
|
||||||
|
{
|
||||||
|
var serializer = new MqttPacketSerializer {};
|
||||||
|
var pipe = new DuplexPipeMockup();
|
||||||
|
var connection = new DefaultConnectionContext();
|
||||||
|
connection.Transport = pipe;
|
||||||
|
var ctx = new MqttConnectionContext(serializer, connection);
|
||||||
|
|
||||||
|
pipe.Receive.Writer.Complete();
|
||||||
|
|
||||||
|
await Assert.ThrowsExceptionAsync<MqttCommunicationException>(() => ctx.ReceivePacketAsync(TimeSpan.FromSeconds(1), CancellationToken.None));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="MSTest.TestAdapter" Version="1.3.2" />
|
<PackageReference Include="MSTest.TestAdapter" Version="1.3.2" />
|
||||||
<PackageReference Include="MSTest.TestFramework" Version="1.3.2" />
|
<PackageReference Include="MSTest.TestFramework" Version="1.3.2" />
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.2" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.8.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
Reference in New Issue
Block a user