diff --git a/Source/MQTTnet/Client/MqttClient.cs b/Source/MQTTnet/Client/MqttClient.cs index 0fa074c2..575cc90f 100644 --- a/Source/MQTTnet/Client/MqttClient.cs +++ b/Source/MQTTnet/Client/MqttClient.cs @@ -183,10 +183,12 @@ namespace MQTTnet.Client public void Dispose() { + _cancellationTokenSource?.Cancel (false); _cancellationTokenSource?.Dispose(); _cancellationTokenSource = null; _adapter?.Dispose(); + _adapter = null; } private async Task AuthenticateAsync(MqttApplicationMessage willApplicationMessage, CancellationToken cancellationToken) @@ -245,10 +247,7 @@ namespace MQTTnet.Client } finally { - _adapter?.Dispose(); - _adapter = null; - _cancellationTokenSource?.Dispose(); - _cancellationTokenSource = null; + Dispose (); _cleanDisconnectInitiated = false; _logger.Info("Disconnected."); @@ -394,6 +393,7 @@ namespace MQTTnet.Client if (exception is OperationCanceledException) { + _logger.Verbose ("MQTT OperationCanceled exception while receiving packets."); } else if (exception is MqttCommunicationException) { diff --git a/Source/MQTTnet/Server/MqttClientSession.cs b/Source/MQTTnet/Server/MqttClientSession.cs index de3a7a48..131cd397 100644 --- a/Source/MQTTnet/Server/MqttClientSession.cs +++ b/Source/MQTTnet/Server/MqttClientSession.cs @@ -138,7 +138,9 @@ namespace MQTTnet.Server _cleanupHandle?.Dispose(); _cleanupHandle = null; - + + _adapter = null; + _cancellationTokenSource?.Cancel(false); _cancellationTokenSource?.Dispose(); _cancellationTokenSource = null; } @@ -290,7 +292,9 @@ namespace MQTTnet.Server { _pendingPacketsQueue?.Dispose(); + _cancellationTokenSource?.Cancel (); _cancellationTokenSource?.Dispose(); + _cancellationTokenSource = null; } private void ProcessReceivedPacket(IMqttChannelAdapter adapter, MqttBasePacket packet, CancellationToken cancellationToken)