# HG changeset patch # User Edouard Tisserant # Date 1721643153 -7200 # Node ID c399fe412dbd46a5abf41861ba16d9961d1694c8 # Parent 78f9abfb32a0886bab211a5471b46aeed6f9b3e3 MQTT: WIP, prevent crash after disconnect. Disable auto-reconnect on connection lost callback. diff -r 78f9abfb32a0 -r c399fe412dbd mqtt/mqtt_client_gen.py --- a/mqtt/mqtt_client_gen.py Thu Jul 18 12:05:26 2024 +0200 +++ b/mqtt/mqtt_client_gen.py Mon Jul 22 12:12:33 2024 +0200 @@ -302,8 +302,10 @@ template = """/* code generated by beremiz MQTT extension */ #include +#include #include #include +#include #include "MQTTClient.h" #include "MQTTClientPersistence.h" @@ -314,6 +316,7 @@ snprintf(mstr, 255, __VA_ARGS__); \\ LogMessage(level, mstr, strlen(mstr)); \\ printf(__VA_ARGS__); \\ + fflush(stdout); \\ }} #define LogInfo(...) _Log(LOG_INFO, __VA_ARGS__); @@ -415,9 +418,15 @@ void connectionLost(void* context, char* reason) {{ + int rc; LogWarning("ConnectionLost, reconnecting\\n"); - _connect_mqtt(); - /* TODO wait if error */ + // rc = _connect_mqtt(); + + // if (rc != MQTTCLIENT_SUCCESS) {{ + // LogError("MQTT reconnect Failed, waiting 5 seconds, return code %d\\n", rc); + // /* wait if error */ + // sleep(5); + // }} }} int messageArrived(void *context, char *topicName, int topicLen, MQTTClient_message *message) @@ -538,7 +547,7 @@ int rc = 0; while((rc = pthread_mutex_lock(&MQTT_mutex)) == 0 && !MQTT_stop_thread){{ pthread_cond_wait(&MQTT_new_data, &MQTT_mutex); - if(MQTT_any_pub_var_changed){{ + if(MQTT_any_pub_var_changed && MQTTClient_isConnected(client)){{ /* publish changes, and reset variable's state to UNCHANGED */ {publish_changes}