diff --git a/Source/MQTTnet/Client/Publishing/MqttClientPublishResult.cs b/Source/MQTTnet/Client/Publishing/MqttClientPublishResult.cs
index d58ad581..a523fe55 100644
--- a/Source/MQTTnet/Client/Publishing/MqttClientPublishResult.cs
+++ b/Source/MQTTnet/Client/Publishing/MqttClientPublishResult.cs
@@ -8,7 +8,7 @@ namespace MQTTnet.Client.Publishing
///
/// Gets the packet identifier which was used for this publish.
///
- public ushort PacketIdentifier { get; set; }
+ public ushort? PacketIdentifier { get; set; }
///
/// Gets or sets the reason code.
diff --git a/Source/MQTTnet/Server/Internal/MqttClientSession.cs b/Source/MQTTnet/Server/Internal/MqttClientSession.cs
index c0894a24..3aa8db5a 100644
--- a/Source/MQTTnet/Server/Internal/MqttClientSession.cs
+++ b/Source/MQTTnet/Server/Internal/MqttClientSession.cs
@@ -14,7 +14,7 @@ namespace MQTTnet.Server.Internal
{
readonly MqttPacketBus _packetBus = new MqttPacketBus();
- readonly Dictionary _publishPacketsWithoutAcknowledge = new Dictionary();
+ readonly Dictionary _unacknowledgedPublishPackets = new Dictionary();
readonly IMqttServerOptions _serverOptions;
readonly MqttClientSessionsManager _clientSessionsManager;
@@ -56,7 +56,7 @@ namespace MQTTnet.Server.Internal
public void AcknowledgePublishPacket(ushort packetIdentifier)
{
- _publishPacketsWithoutAcknowledge.Remove(packetIdentifier);
+ _unacknowledgedPublishPackets.Remove(packetIdentifier);
}
public void EnqueuePacket(MqttPacketBusItem packetBusItem)
@@ -80,7 +80,7 @@ namespace MQTTnet.Server.Internal
{
if (publishPacket.QualityOfServiceLevel > MqttQualityOfServiceLevel.AtMostOnce)
{
- _publishPacketsWithoutAcknowledge[publishPacket.PacketIdentifier] = publishPacket;
+ _unacknowledgedPublishPackets[publishPacket.PacketIdentifier] = publishPacket;
}
_packetBus.Enqueue(packetBusItem, MqttPacketBusPartition.Data);
@@ -116,7 +116,7 @@ namespace MQTTnet.Server.Internal
// TODO: Check if packet identifier must be restarted or not.
_packetBus.Clear();
- foreach (var publishPacket in _publishPacketsWithoutAcknowledge.Values.ToList())
+ foreach (var publishPacket in _unacknowledgedPublishPackets.Values.ToList())
{
EnqueuePacket(new MqttPacketBusItem(publishPacket));
}
diff --git a/Tests/MQTTnet.Core.Tests/Client/MqttClient_Tests.cs b/Tests/MQTTnet.Core.Tests/Client/MqttClient_Tests.cs
index 5e96c0cd..3e9d8923 100644
--- a/Tests/MQTTnet.Core.Tests/Client/MqttClient_Tests.cs
+++ b/Tests/MQTTnet.Core.Tests/Client/MqttClient_Tests.cs
@@ -684,51 +684,7 @@ namespace MQTTnet.Tests.Client
Assert.AreEqual("DA|18RS00SC00XI0000RV00R100R200R300R400L100L200L300L400Y100Y200AC0102031800BELK0000BM0000|", receivedMessages.First().ConvertPayloadToString());
}
}
-
- [TestMethod]
- public async Task Message_Send_Retry()
- {
- using (var testEnvironment = CreateTestEnvironment())
- {
- testEnvironment.IgnoreClientLogErrors = true;
- testEnvironment.IgnoreServerLogErrors = true;
-
- await testEnvironment.StartServer(
- new MqttServerOptionsBuilder()
- .WithPersistentSessions()
- .WithDefaultCommunicationTimeout(TimeSpan.FromMilliseconds(250)));
-
- var client1 = await testEnvironment.ConnectClient(new MqttClientOptionsBuilder().WithCleanSession(false));
- await client1.SubscribeAsync("x", MqttQualityOfServiceLevel.AtLeastOnce);
-
- var retries = 0;
-
- async Task Handler1(MqttApplicationMessageReceivedEventArgs eventArgs)
- {
- retries++;
-
- await Task.Delay(1000);
- throw new Exception("Broken!");
- }
-
- client1.UseApplicationMessageReceivedHandler(Handler1);
-
- var client2 = await testEnvironment.ConnectClient();
- await client2.PublishAsync("x");
-
- await Task.Delay(3000);
-
- // The server should disconnect clients which are not responding.
- Assert.IsFalse(client1.IsConnected);
-
- await client1.ReconnectAsync().ConfigureAwait(false);
-
- await Task.Delay(1000);
-
- Assert.AreEqual(2, retries);
- }
- }
-
+
[TestMethod]
public async Task NoConnectedHandler_Connect_DoesNotThrowException()
{