diff -Naur MQTT-C_orig/include/mqtt.h MQTT-C/include/mqtt.h
@@ -1233,6 +1233,9 @@
/** @brief The sending message queue. */
struct mqtt_message_queue mq;
+
+ /** @brief Flag is set on connection event */
+ bool event_connect;
};
/**
diff -Naur MQTT-C_orig/src/mqtt.c MQTT-C/src/mqtt.c
@@ -118,6 +118,10 @@
client->socketfd = sockfd;
+ /* Indicate we are not connected yet */
+
+ client->event_connect = false;
+
mqtt_mq_init(&client->mq, sendbuf, sendbufsz);
client->recv_buffer.mem_start = recvbuf;
@@ -151,6 +155,10 @@
client->socketfd = (mqtt_pal_socket_handle) -1;
+ /* Indicate we are not connected yet */
+
+ client->event_connect = false;
+
mqtt_mq_init(&client->mq, NULL, 0);
client->recv_buffer.mem_start = NULL;
@@ -179,6 +187,10 @@
client->error = MQTT_ERROR_CONNECT_NOT_CALLED;
client->socketfd = socketfd;
+ /* Indicate we are not connected yet */
+
+ client->event_connect = false;
+
mqtt_mq_init(&client->mq, sendbuf, sendbufsz);
client->recv_buffer.mem_start = recvbuf;
@@ -592,6 +604,7 @@
case MQTT_CONTROL_PUBCOMP:
case MQTT_CONTROL_DISCONNECT:
msg->state = MQTT_QUEUED_COMPLETE;
+ client->event_connect = false;
break;
case MQTT_CONTROL_PUBLISH:
inspected = ( MQTT_PUBLISH_QOS_MASK & (msg->start[0]) ) >> 1; /* qos */
@@ -732,6 +745,8 @@
mqtt_recv_ret = MQTT_ERROR_CONNECTION_REFUSED;
}
break;
+ } else {
+ client->event_connect = true;
}
break;
case MQTT_CONTROL_PUBLISH: