Skip to content
Snippets Groups Projects
Commit c69279b6 authored by Rob Swindell's avatar Rob Swindell :speech_balloon:
Browse files

Don't call mosquttio (MQTT lib) functions when disabled

Should fix the new crash issues reported by Retros via #synchronet on irc.synchro.net
parent 66543f28
No related branches found
No related tags found
1 merge request!463MRC mods by Codefenix (2024-10-20)
Pipeline #3576 passed
...@@ -476,29 +476,30 @@ int mqtt_startup(struct startup* startup, scfg_t* cfg, const char* version ...@@ -476,29 +476,30 @@ int mqtt_startup(struct startup* startup, scfg_t* cfg, const char* version
if(startup == NULL) if(startup == NULL)
return MQTT_FAILURE; return MQTT_FAILURE;
if(cfg->mqtt.enabled) { if(!cfg->mqtt.enabled)
result = mqtt_init(startup, cfg); return MQTT_SUCCESS;
result = mqtt_init(startup, cfg);
if(result != MQTT_SUCCESS) {
lprintf(lputs, LOG_INFO, "MQTT init failure: %d", result);
} else {
lprintf(lputs, LOG_INFO, "MQTT lib: %s", mqtt_libver(str, sizeof(str)));
result = mqtt_open(startup);
if(result != MQTT_SUCCESS) { if(result != MQTT_SUCCESS) {
lprintf(lputs, LOG_INFO, "MQTT init failure: %d", result); lprintf(lputs, LOG_ERR, "MQTT open failure: %d", result);
} else { } else {
lprintf(lputs, LOG_INFO, "MQTT lib: %s", mqtt_libver(str, sizeof(str))); result = mqtt_thread_start(startup);
result = mqtt_open(startup);
if(result != MQTT_SUCCESS) { if(result != MQTT_SUCCESS) {
lprintf(lputs, LOG_ERR, "MQTT open failure: %d", result); lprintf(lputs, LOG_ERR, "Error %d starting pub/sub thread", result);
mqtt_close(startup);
} else { } else {
result = mqtt_thread_start(startup); lprintf(lputs, LOG_INFO, "MQTT connecting to broker %s:%u", cfg->mqtt.broker_addr, cfg->mqtt.broker_port);
if(result != MQTT_SUCCESS) { result = mqtt_connect(startup, /* bind_address: */NULL);
lprintf(lputs, LOG_ERR, "Error %d starting pub/sub thread", result); if(result == MQTT_SUCCESS) {
mqtt_close(startup); lprintf(lputs, LOG_INFO, "MQTT broker-connect (%s:%d) successful", cfg->mqtt.broker_addr, cfg->mqtt.broker_port);
} else { } else {
lprintf(lputs, LOG_INFO, "MQTT connecting to broker %s:%u", cfg->mqtt.broker_addr, cfg->mqtt.broker_port); lprintf(lputs, LOG_ERR, "MQTT broker-connect (%s:%d) failure: %d", cfg->mqtt.broker_addr, cfg->mqtt.broker_port, result);
result = mqtt_connect(startup, /* bind_address: */NULL); mqtt_close(startup);
if(result == MQTT_SUCCESS) {
lprintf(lputs, LOG_INFO, "MQTT broker-connect (%s:%d) successful", cfg->mqtt.broker_addr, cfg->mqtt.broker_port);
} else {
lprintf(lputs, LOG_ERR, "MQTT broker-connect (%s:%d) failure: %d", cfg->mqtt.broker_addr, cfg->mqtt.broker_port, result);
mqtt_close(startup);
}
} }
} }
} }
...@@ -588,6 +589,9 @@ int mqtt_client_on(struct startup* startup, BOOL on, int sock, client_t* client, ...@@ -588,6 +589,9 @@ int mqtt_client_on(struct startup* startup, BOOL on, int sock, client_t* client,
if(startup == NULL) if(startup == NULL)
return MQTT_FAILURE; return MQTT_FAILURE;
if(!startup->mqtt.cfg->mqtt.enabled)
return MQTT_SUCCESS;
listLock(&startup->mqtt.client_list); listLock(&startup->mqtt.client_list);
if(on) { if(on) {
if(update) { if(update) {
...@@ -638,8 +642,10 @@ int mqtt_terminating(struct startup* startup) ...@@ -638,8 +642,10 @@ int mqtt_terminating(struct startup* startup)
void mqtt_shutdown(struct startup* startup) void mqtt_shutdown(struct startup* startup)
{ {
mqtt_pub_strval(startup, TOPIC_HOST, "status", "offline"); if(startup != NULL && startup->mqtt.cfg->mqtt.enabled) {
mqtt_disconnect(startup); mqtt_pub_strval(startup, TOPIC_HOST, "status", "offline");
mqtt_thread_stop(startup); mqtt_disconnect(startup);
mqtt_close(startup); mqtt_thread_stop(startup);
mqtt_close(startup);
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment