diff --git a/org.eclipse.paho.mqttv5.client/src/main/java/org/eclipse/paho/mqttv5/client/internal/ClientComms.java b/org.eclipse.paho.mqttv5.client/src/main/java/org/eclipse/paho/mqttv5/client/internal/ClientComms.java index 7a8463242..748759e27 100644 --- a/org.eclipse.paho.mqttv5.client/src/main/java/org/eclipse/paho/mqttv5/client/internal/ClientComms.java +++ b/org.eclipse.paho.mqttv5.client/src/main/java/org/eclipse/paho/mqttv5/client/internal/ClientComms.java @@ -41,6 +41,7 @@ import org.eclipse.paho.mqttv5.common.MqttException; import org.eclipse.paho.mqttv5.common.MqttMessage; import org.eclipse.paho.mqttv5.common.MqttPersistenceException; +import org.eclipse.paho.mqttv5.common.packet.MqttAuth; import org.eclipse.paho.mqttv5.common.packet.MqttConnAck; import org.eclipse.paho.mqttv5.common.packet.MqttConnect; import org.eclipse.paho.mqttv5.common.packet.MqttDisconnect; @@ -176,8 +177,9 @@ void internalSend(MqttWireMessage message, MqttToken token) throws MqttException public void sendNoWait(MqttWireMessage message, MqttToken token) throws MqttException { final String methodName = "sendNoWait"; - if (isConnected() || (!isConnected() && message instanceof MqttConnect) - || (isDisconnecting() && message instanceof MqttDisconnect)) { + if (isConnected() || + (!isConnected() && (message instanceof MqttConnect || message instanceof MqttAuth)) || + (isDisconnecting() && message instanceof MqttDisconnect)) { if (disconnectedMessageBuffer != null && disconnectedMessageBuffer.getMessageCount() != 0) { // @TRACE 507=Client Connected, Offline Buffer available, but not empty. Adding diff --git a/org.eclipse.paho.mqttv5.client/src/main/java/org/eclipse/paho/mqttv5/client/internal/ClientState.java b/org.eclipse.paho.mqttv5.client/src/main/java/org/eclipse/paho/mqttv5/client/internal/ClientState.java index 216d62c2d..d82d56a01 100644 --- a/org.eclipse.paho.mqttv5.client/src/main/java/org/eclipse/paho/mqttv5/client/internal/ClientState.java +++ b/org.eclipse.paho.mqttv5.client/src/main/java/org/eclipse/paho/mqttv5/client/internal/ClientState.java @@ -841,8 +841,15 @@ protected MqttWireMessage get() throws MqttException { // Handle the case where not connected. This should only be the case if: // - in the process of disconnecting / shutting down // - in the process of connecting - if (pendingFlows == null || (!connected && (pendingFlows.isEmpty() - || !((MqttWireMessage) pendingFlows.elementAt(0) instanceof MqttConnect)))) { + if (pendingFlows == null || + (!connected && + (pendingFlows.isEmpty() || + !( ( pendingFlows.elementAt(0) instanceof MqttConnect) || + ( pendingFlows.elementAt(0) instanceof MqttAuth) + ) + ) + ) + ){ // @TRACE 621=no outstanding flows and not connected log.fine(CLASS_NAME, methodName, "621"); diff --git a/org.eclipse.paho.mqttv5.client/src/main/java/org/eclipse/paho/mqttv5/common/packet/MqttAuth.java b/org.eclipse.paho.mqttv5.client/src/main/java/org/eclipse/paho/mqttv5/common/packet/MqttAuth.java index 5bb8d9a54..862b24043 100644 --- a/org.eclipse.paho.mqttv5.client/src/main/java/org/eclipse/paho/mqttv5/common/packet/MqttAuth.java +++ b/org.eclipse.paho.mqttv5.client/src/main/java/org/eclipse/paho/mqttv5/common/packet/MqttAuth.java @@ -104,7 +104,7 @@ protected byte[] getVariableHeader() throws MqttException { @Override protected byte getMessageInfo() { - return (byte) (1); + return (byte) (0); } public int getReturnCode() {