--- a/mqtt/mqtt_template.c Thu Jun 26 16:48:59 2025 +0200
+++ b/mqtt/mqtt_template.c Thu Sep 25 14:26:24 2025 +0200
@@ -6,6 +6,7 @@
@@ -27,6 +28,8 @@
#define LogError(...) _Log(LOG_CRITICAL, __VA_ARGS__);
#define LogWarning(...) _Log(LOG_WARNING, __VA_ARGS__);
+#define MIN(a, b) ((a) < (b) ? (a) : (b)) // Selected debug level for paho stack
// MQTTCLIENT_TRACE_PROTOCOL, MQTTCLIENT_TRACE_MAXIMUM, MQTTCLIENT_TRACE_ERROR
@@ -472,6 +475,12 @@
static void *__MQTT_thread_proc(void *_unused) {{
+ /* TODO make parameters externally configurable */ + int initialDelay = 5; /* seconds */ while((rc = pthread_mutex_lock(&MQTT_thread_wakeup_mutex)) == 0 && !MQTT_stop_thread){{
@@ -480,14 +489,16 @@
- /* TODO growing retry delay */
- /* TODO max retry delay as config parameter */
+ /* Exponentially grow retry delay */ + retry_delay = MIN(initialDelay * pow(factor, attempt), maxDelay); if (rc == MQTTCLIENT_SUCCESS) {{
LogInfo("MQTT Reconnected\n");
- LogError("MQTT Reconnect Failed, return code %d\n", rc);
+ LogError("MQTT Reconnecting failed, retrying in %d seconds, return code %d\n", retry_delay, rc); if(!MQTT_is_disconnected && MQTT_any_pub_var_changed)