A small footprint MQTT library

Dependents:   STM32F746_iothub_client_sample_mqtt FXOS8700CQ_To_Azure_IoT f767zi_mqtt FXOS8700CQ_To_Azure_IoT ... more

Revision:
29:7bb0aae34648
Parent:
28:35eea447689a
--- a/mqtt_client.c	Mon Jun 11 15:40:18 2018 -0700
+++ b/mqtt_client.c	Tue Sep 11 11:14:10 2018 -0700
@@ -586,11 +586,15 @@
     MQTT_CLIENT* mqtt_client = (MQTT_CLIENT*)context;
     if ((mqtt_client != NULL && headerData != NULL) || packet == PINGRESP_TYPE)
     {
-        size_t len = BUFFER_length(headerData);
-        uint8_t* iterator = BUFFER_u_char(headerData);
+        size_t len = 0;
+        uint8_t* iterator = NULL;
 
+        if (headerData != NULL)
+        {
+            len = BUFFER_length(headerData);
+            iterator = BUFFER_u_char(headerData);
+        }
         logIncomingRawTrace(mqtt_client, packet, (uint8_t)flags, iterator, len);
-
         if ((iterator != NULL && len > 0) || packet == PINGRESP_TYPE)
         {
             switch (packet)
@@ -865,17 +869,24 @@
                     break;
                 }
                 case PINGRESP_TYPE:
-                    mqtt_client->timeSincePing = 0;
-                    if (mqtt_client->logTrace)
+                    if (mqtt_client != NULL)
                     {
-                        STRING_HANDLE trace_log = STRING_construct_sprintf("PINGRESP");
-                        log_incoming_trace(mqtt_client, trace_log);
-                        STRING_delete(trace_log);
+                        mqtt_client->timeSincePing = 0;
+                        if (mqtt_client->logTrace)
+                        {
+                            STRING_HANDLE trace_log = STRING_construct_sprintf("PINGRESP");
+                            log_incoming_trace(mqtt_client, trace_log);
+                            STRING_delete(trace_log);
+                        }
+                        // Forward ping response to operation callback
+                        if (mqtt_client->fnOperationCallback)
+                        {
+                            mqtt_client->fnOperationCallback(mqtt_client, MQTT_CLIENT_ON_PING_RESPONSE, NULL, mqtt_client->ctx);
+                        }
                     }
-                    // Forward ping response to operation callback
-                    if (mqtt_client->fnOperationCallback)
+                    else
                     {
-                        mqtt_client->fnOperationCallback(mqtt_client, MQTT_CLIENT_ON_PING_RESPONSE, NULL, mqtt_client->ctx);
+                        LOG(AZ_LOG_ERROR, LOG_LINE, "MQTT client value NULL");
                     }
                     break;
                 default: