From 886b2d6b42854f73c283571daabb1ded42399f2c Mon Sep 17 00:00:00 2001 From: Christian Kratky Date: Sat, 15 Jul 2017 18:36:33 +0200 Subject: [PATCH] Fix issue when stopping server --- .../Implementations/MqttServerAdapter.cs | 3 ++- .../MQTTnet.NetStandard/Implementations/MqttServerAdapter.cs | 1 + MQTTnet.Core/Client/MqttClient.cs | 5 ++++- MQTTnet.Core/Server/MqttServer.cs | 3 ++- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/Frameworks/MQTTnet.NetFramework/Implementations/MqttServerAdapter.cs b/Frameworks/MQTTnet.NetFramework/Implementations/MqttServerAdapter.cs index f739756f..cbfcf66f 100644 --- a/Frameworks/MQTTnet.NetFramework/Implementations/MqttServerAdapter.cs +++ b/Frameworks/MQTTnet.NetFramework/Implementations/MqttServerAdapter.cs @@ -63,6 +63,7 @@ namespace MQTTnet.Implementations { _isRunning = false; + _cancellationTokenSource?.Cancel(false); _cancellationTokenSource?.Dispose(); _cancellationTokenSource = null; @@ -88,7 +89,7 @@ namespace MQTTnet.Implementations var clientAdapter = new MqttChannelCommunicationAdapter(new MqttTcpChannel(clientSocket, null), new DefaultMqttV311PacketSerializer()); ClientConnected?.Invoke(this, new MqttClientConnectedEventArgs(clientSocket.RemoteEndPoint.ToString(), clientAdapter)); } - catch (Exception exception) + catch (Exception exception) when (!(exception is ObjectDisposedException)) { MqttTrace.Error(nameof(MqttServerAdapter), exception, "Error while acceping connection at default endpoint."); } diff --git a/Frameworks/MQTTnet.NetStandard/Implementations/MqttServerAdapter.cs b/Frameworks/MQTTnet.NetStandard/Implementations/MqttServerAdapter.cs index 0203134a..863d3e74 100644 --- a/Frameworks/MQTTnet.NetStandard/Implementations/MqttServerAdapter.cs +++ b/Frameworks/MQTTnet.NetStandard/Implementations/MqttServerAdapter.cs @@ -61,6 +61,7 @@ namespace MQTTnet.Implementations { _isRunning = false; + _cancellationTokenSource?.Cancel(false); _cancellationTokenSource?.Dispose(); _cancellationTokenSource = null; diff --git a/MQTTnet.Core/Client/MqttClient.cs b/MQTTnet.Core/Client/MqttClient.cs index ebf2cfd2..df3c61fa 100644 --- a/MQTTnet.Core/Client/MqttClient.cs +++ b/MQTTnet.Core/Client/MqttClient.cs @@ -185,7 +185,10 @@ namespace MQTTnet.Core.Client } finally { - _cancellationTokenSource?.Cancel(); + _cancellationTokenSource?.Cancel(false); + _cancellationTokenSource?.Dispose(); + _cancellationTokenSource = null; + IsConnected = false; Disconnected?.Invoke(this, EventArgs.Empty); } diff --git a/MQTTnet.Core/Server/MqttServer.cs b/MQTTnet.Core/Server/MqttServer.cs index f7f79325..ca55d7a5 100644 --- a/MQTTnet.Core/Server/MqttServer.cs +++ b/MQTTnet.Core/Server/MqttServer.cs @@ -59,7 +59,8 @@ namespace MQTTnet.Core.Server public void Stop() { - _cancellationTokenSource?.Cancel(); + _cancellationTokenSource?.Cancel(false); + _cancellationTokenSource?.Dispose(); _cancellationTokenSource = null; foreach (var adapter in _adapters)