diff --git a/Source/MQTTnet.Extensions.WebSocket4Net/WebSocket4NetMqttChannel.cs b/Source/MQTTnet.Extensions.WebSocket4Net/WebSocket4NetMqttChannel.cs index 120e6c36..a7ad56b0 100644 --- a/Source/MQTTnet.Extensions.WebSocket4Net/WebSocket4NetMqttChannel.cs +++ b/Source/MQTTnet.Extensions.WebSocket4Net/WebSocket4NetMqttChannel.cs @@ -201,7 +201,9 @@ namespace MQTTnet.Extensions.WebSocket4Net _webSocket.Opened += SuccessHandler; _webSocket.Error += ErrorHandler; +#pragma warning disable AsyncFixer02 // Long-running or blocking operations inside an async method _webSocket.Open(); +#pragma warning restore AsyncFixer02 // Long-running or blocking operations inside an async method var exception = await MqttTaskTimeout.WaitAsync(c => { diff --git a/Source/MQTTnet/Client/MqttClient.cs b/Source/MQTTnet/Client/MqttClient.cs index cbff63aa..4147bfc2 100644 --- a/Source/MQTTnet/Client/MqttClient.cs +++ b/Source/MQTTnet/Client/MqttClient.cs @@ -142,12 +142,14 @@ namespace MQTTnet.Client ThrowIfDisposed(); + var disconnectIsPending = DisconnectIsPending(); + try { _disconnectReason = MqttClientDisconnectReason.NormalDisconnection; _cleanDisconnectInitiated = true; - if (IsConnected) + if (!disconnectIsPending && _isConnected) { var disconnectPacket = _adapter.PacketFormatterAdapter.DataConverter.CreateDisconnectPacket(options); await SendAsync(disconnectPacket, cancellationToken).ConfigureAwait(false); @@ -155,7 +157,7 @@ namespace MQTTnet.Client } finally { - if (!DisconnectIsPending()) + if (!disconnectIsPending) { await DisconnectInternalAsync(null, null, null).ConfigureAwait(false); } @@ -364,11 +366,6 @@ namespace MQTTnet.Client { try { - if (_backgroundCancellationTokenSource?.IsCancellationRequested == true) - { - return; - } - _backgroundCancellationTokenSource?.Cancel(false); } catch (Exception exception) diff --git a/Tests/MQTTnet.Core.Tests/Server_Tests.cs b/Tests/MQTTnet.Core.Tests/Server_Tests.cs index 7d6a1175..efd4f7ab 100644 --- a/Tests/MQTTnet.Core.Tests/Server_Tests.cs +++ b/Tests/MQTTnet.Core.Tests/Server_Tests.cs @@ -1302,7 +1302,7 @@ namespace MQTTnet.Tests } } - private static async Task TestPublishAsync( + static async Task TestPublishAsync( string topic, MqttQualityOfServiceLevel qualityOfServiceLevel, string topicFilter, @@ -1314,7 +1314,7 @@ namespace MQTTnet.Tests { var receivedMessagesCount = 0; - await testEnvironment.StartServerAsync(new MqttServerOptionsBuilder()); + await testEnvironment.StartServerAsync(); var c1 = await testEnvironment.ConnectClientAsync(new MqttClientOptionsBuilder().WithClientId("receiver")); c1.UseApplicationMessageReceivedHandler(c => Interlocked.Increment(ref receivedMessagesCount));