diff --git a/mqtt.c b/mqtt.c index 8b39b08..cebedb7 100644 --- a/mqtt.c +++ b/mqtt.c @@ -65,14 +65,22 @@ if (msglen < 0) { return false; } - int ret = mosquitto_publish (mosq, NULL, publish_topic, - msglen, msg, 0, false); - free(msg); - if (ret) - { - fprintf (stderr, "Can't publish to Mosquitto server\n"); - return false; + + bool sent = false; + int retry = 0; + while (!sent && (retry < 10)) { + int ret = mosquitto_publish (mosq, NULL, publish_topic, + msglen, msg, 0, false); + if (ret == MOSQ_ERR_SUCCESS) { + sent = true; + } else if (retry < 9) { + fprintf(stderr, "Problem publishing to Mosquitto server.\n"); + sleep(retry + 1); + mosquitto_reconnect(mosq); } - return true; + retry ++; + } + free(msg); + return sent; }