Merge pull request #476 from PaulFake/patch-1

Check for pending disconnect in ThrowIfNotConnected
This commit is contained in:
Christian
2018-11-16 22:08:49 +01:00
committed by GitHub
+3 -3
View File
@@ -29,7 +29,7 @@ namespace MQTTnet.Client
internal Task _keepAliveMessageSenderTask; internal Task _keepAliveMessageSenderTask;
private IMqttChannelAdapter _adapter; private IMqttChannelAdapter _adapter;
private bool _cleanDisconnectInitiated; private bool _cleanDisconnectInitiated;
private int _disconnectGate; private long _disconnectGate;
public MqttClient(IMqttClientAdapterFactory channelFactory, IMqttNetLogger logger) public MqttClient(IMqttClientAdapterFactory channelFactory, IMqttNetLogger logger)
{ {
@@ -216,7 +216,7 @@ namespace MQTTnet.Client
private void ThrowIfNotConnected() private void ThrowIfNotConnected()
{ {
if (!IsConnected) throw new MqttCommunicationException("The client is not connected."); if (!IsConnected || Interlocked.Read(ref _disconnectGate) == 1) throw new MqttCommunicationException("The client is not connected.");
} }
private void ThrowIfConnected(string message) private void ThrowIfConnected(string message)
@@ -551,4 +551,4 @@ namespace MQTTnet.Client
return Interlocked.CompareExchange(ref _disconnectGate, 1, 0) != 0; return Interlocked.CompareExchange(ref _disconnectGate, 1, 0) != 0;
} }
} }
} }