A small footprint MQTT library
Dependents: STM32F746_iothub_client_sample_mqtt FXOS8700CQ_To_Azure_IoT f767zi_mqtt FXOS8700CQ_To_Azure_IoT ... more
Diff: mqtt_client.c
- Revision:
- 14:4b5b4dccfc8b
- Parent:
- 13:3c202001e4ba
- Child:
- 15:ec5a36121959
--- a/mqtt_client.c Sat Jan 28 09:34:52 2017 -0800 +++ b/mqtt_client.c Fri Feb 10 17:01:07 2017 -0800 @@ -413,6 +413,20 @@ } } +static void clear_mqtt_options(MQTT_CLIENT* mqtt_client) +{ + free(mqtt_client->mqttOptions.clientId); + mqtt_client->mqttOptions.clientId = NULL; + free(mqtt_client->mqttOptions.willTopic); + mqtt_client->mqttOptions.willTopic = NULL; + free(mqtt_client->mqttOptions.willMessage); + mqtt_client->mqttOptions.willMessage = NULL; + free(mqtt_client->mqttOptions.username); + mqtt_client->mqttOptions.username = NULL; + free(mqtt_client->mqttOptions.password); + mqtt_client->mqttOptions.password = NULL; +} + static int cloneMqttOptions(MQTT_CLIENT* mqtt_client, const MQTT_CLIENT_OPTIONS* mqttOptions) { int result = 0; @@ -465,11 +479,7 @@ } else { - free(mqtt_client->mqttOptions.clientId); - free(mqtt_client->mqttOptions.willTopic); - free(mqtt_client->mqttOptions.willMessage); - free(mqtt_client->mqttOptions.username); - free(mqtt_client->mqttOptions.password); + clear_mqtt_options(mqtt_client); } return result; } @@ -883,6 +893,8 @@ /*Codes_SRS_MQTT_CLIENT_07_007: [If any failure is encountered then mqtt_client_connect shall return a non-zero value.]*/ LOG(AZ_LOG_ERROR, LOG_LINE, "Error: io_open failed"); result = __LINE__; + // Remove cloned options + clear_mqtt_options(mqtt_client); } else { @@ -1092,11 +1104,7 @@ result = 0; } BUFFER_delete(disconnectPacket); - free(mqtt_client->mqttOptions.clientId); - free(mqtt_client->mqttOptions.willTopic); - free(mqtt_client->mqttOptions.willMessage); - free(mqtt_client->mqttOptions.username); - free(mqtt_client->mqttOptions.password); + clear_mqtt_options(mqtt_client); } } return result;