diff --git a/Build/MQTTnet.nuspec b/Build/MQTTnet.nuspec
index d8558191..fd4bc2e0 100644
--- a/Build/MQTTnet.nuspec
+++ b/Build/MQTTnet.nuspec
@@ -14,8 +14,10 @@
* [Client] Fixed wrong value for "ClientWasConnected" in "MqttClientDisconnectedEventArgs" #976 (thanks to @dbeinder).
* [Client] Added direct support for Amazon AWS connections (requires .NET Core 3.1) (thanks to @henning-krause).
+* [Client] handle disconnect package and propagate disconnect reason code (thanks to @JanEggers)
* [ManagedClient] Exposed the internal MQTT client.
-* [Server] Added client message queue interceptor for QoS level (tahnks to @msallin).
+* [Server] Added client message queue interceptor for QoS level (thanks to @msallin).
+* [Server] improved behavior when multiple connections fight over a session (thanks to @JanEggers)
Copyright Christian Kratky 2016-2020
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 Blazor
diff --git a/Source/MQTTnet/Client/MqttClient.cs b/Source/MQTTnet/Client/MqttClient.cs
index 51a3612f..44cd85cd 100644
--- a/Source/MQTTnet/Client/MqttClient.cs
+++ b/Source/MQTTnet/Client/MqttClient.cs
@@ -561,7 +561,7 @@ namespace MQTTnet.Client
{
await SendAsync(new MqttPingRespPacket(), cancellationToken).ConfigureAwait(false);
}
- else if (packet is MqttDisconnectPacket disc)
+ else if (packet is MqttDisconnectPacket disconnectPacket)
{
// Also dispatch disconnect to waiting threads to generate a proper exception.
_packetDispatcher.Dispatch(packet);
@@ -569,7 +569,7 @@ namespace MQTTnet.Client
await DisconnectAsync(new MqttClientDisconnectOptions()
{
// todo conversion
- ReasonCode = disc.ReasonCode
+ ReasonCode = (MqttClientDisconnectReason)(disconnectPacket.ReasonCode ?? MqttDisconnectReasonCode.UnspecifiedError)
}, cancellationToken).ConfigureAwait(false);
}
else if (packet is MqttAuthPacket authPacket)
diff --git a/Source/MQTTnet/Server/MqttClientSessionsManager.cs b/Source/MQTTnet/Server/MqttClientSessionsManager.cs
index 6935bcbe..84fa7251 100644
--- a/Source/MQTTnet/Server/MqttClientSessionsManager.cs
+++ b/Source/MQTTnet/Server/MqttClientSessionsManager.cs
@@ -391,9 +391,9 @@ namespace MQTTnet.Server
_connections.AddOrUpdate(connectPacket.ClientId, key =>
{
return connection;
- }, (key, tempexistingConnection) =>
+ }, (key, tempExistingConnection) =>
{
- existingConnection = tempexistingConnection;
+ existingConnection = tempExistingConnection;
return connection;
});