@@ -80,6 +80,7 @@ uint16_t mqttPort = MQTT_PORT;
8080
8181MQTTClient mqtt_client;
8282
83+ static bool mqttClientCreated = false ;
8384int disc_finished = 0 ;
8485int subscribed = 0 ;
8586int connected = 0 ;
@@ -300,18 +301,21 @@ void mqttStart()
300301 int ch;
301302
302303 LOG_DEBUG (TAG_MQTT , " %s %d" , __FILE__, __LINE__);
303- if ((rc = MQTTClient_create (&mqtt_client, mqttServer.c_str (), haspDevice.get_hostname (), MQTTCLIENT_PERSISTENCE_NONE ,
304- NULL )) != MQTTCLIENT_SUCCESS ) {
305- LOG_ERROR (TAG_MQTT , " Failed to create client, return code %d" , rc);
306- rc = EXIT_FAILURE ;
307- return ;
308- }
304+ if (!mqttClientCreated) {
305+ if ((rc = MQTTClient_create (&mqtt_client, mqttServer.c_str (), haspDevice.get_hostname (), MQTTCLIENT_PERSISTENCE_NONE ,
306+ NULL )) != MQTTCLIENT_SUCCESS ) {
307+ LOG_ERROR (TAG_MQTT , " Failed to create client, return code %d" , rc);
308+ rc = EXIT_FAILURE ;
309+ return ;
310+ }
309311
310- if ((rc = MQTTClient_setCallbacks (mqtt_client, mqtt_client, connlost, mqtt_message_arrived, NULL )) !=
311- MQTTCLIENT_SUCCESS ) {
312- LOG_ERROR (TAG_MQTT , " Failed to set callbacks, return code %d" , rc);
313- rc = EXIT_FAILURE ;
314- return ;
312+ if ((rc = MQTTClient_setCallbacks (mqtt_client, mqtt_client, connlost, mqtt_message_arrived, NULL )) !=
313+ MQTTCLIENT_SUCCESS ) {
314+ LOG_ERROR (TAG_MQTT , " Failed to set callbacks, return code %d" , rc);
315+ rc = EXIT_FAILURE ;
316+ return ;
317+ }
318+ mqttClientCreated = true ;
315319 }
316320
317321 LOG_DEBUG (TAG_MQTT , " %s %d" , __FILE__, __LINE__);
@@ -350,6 +354,8 @@ void mqttStart()
350354
351355void mqttStop ()
352356{
357+ if (!mqttClientCreated) return ;
358+
353359 int rc;
354360 // MQTTClient_disconnectOptions disc_opts = MQTTClient_disconnectOptions_initializer;
355361 // disc_opts.onSuccess = onDisconnect;
@@ -358,6 +364,8 @@ void mqttStop()
358364 LOG_ERROR (TAG_MQTT , " Failed to disconnect, return code %d" , rc);
359365 rc = EXIT_FAILURE ;
360366 }
367+ MQTTClient_destroy (&mqtt_client);
368+ mqttClientCreated = false ;
361369}
362370
363371void mqttSetup ()
0 commit comments