X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fmqtt.c;h=b318f2116c3030d0e193a92001d9b58925f07e21;hb=3fae5596643f1e361eb18c3d65448f8bc02fdd80;hp=7003fcc63e19b08d775d1c258e058383c3061389;hpb=e20c6c14a4a72acad60705af1165519599175750;p=collectd.git diff --git a/src/mqtt.c b/src/mqtt.c index 7003fcc6..b318f211 100644 --- a/src/mqtt.c +++ b/src/mqtt.c @@ -33,11 +33,8 @@ #include "collectd.h" #include "common.h" #include "plugin.h" -#include "utils_cache.h" #include "utils_complain.h" -#include - #include #define MQTT_MAX_TOPIC_SIZE 1024 @@ -221,6 +218,7 @@ static void on_message ( if (payload == NULL) { ERROR ("mqtt plugin: malloc for payload buffer failed."); + sfree (vl.values); return; } memmove (payload, msg->payload, msg->payloadlen); @@ -551,14 +549,14 @@ static int mqtt_config_publisher (oconfig_item_t *ci) { mqtt_client_conf_t *conf; char cb_name[1024]; - user_data_t user_data; + user_data_t user_data = { 0 }; int status; int i; conf = calloc (1, sizeof (*conf)); if (conf == NULL) { - ERROR ("mqtt plugin: malloc failed."); + ERROR ("mqtt plugin: calloc failed."); return (-1); } conf->publish = 1; @@ -636,7 +634,6 @@ static int mqtt_config_publisher (oconfig_item_t *ci) } ssnprintf (cb_name, sizeof (cb_name), "mqtt/%s", conf->name); - memset (&user_data, 0, sizeof (user_data)); user_data.data = conf; plugin_register_write (cb_name, mqtt_write, &user_data); @@ -663,7 +660,7 @@ static int mqtt_config_subscriber (oconfig_item_t *ci) conf = calloc (1, sizeof (*conf)); if (conf == NULL) { - ERROR ("mqtt plugin: malloc failed."); + ERROR ("mqtt plugin: calloc failed."); return (-1); } conf->publish = 0; @@ -699,11 +696,11 @@ static int mqtt_config_subscriber (oconfig_item_t *ci) cf_util_get_string (child, &conf->host); else if (strcasecmp ("Port", child->key) == 0) { - int tmp = cf_util_get_port_number (child); - if (tmp < 0) + status = cf_util_get_port_number (child); + if (status < 0) ERROR ("mqtt plugin: Invalid port number."); else - conf->port = tmp; + conf->port = status; } else if (strcasecmp ("ClientId", child->key) == 0) cf_util_get_string (child, &conf->client_id); @@ -713,12 +710,12 @@ static int mqtt_config_subscriber (oconfig_item_t *ci) cf_util_get_string (child, &conf->password); else if (strcasecmp ("QoS", child->key) == 0) { - int tmp = -1; - status = cf_util_get_int (child, &tmp); - if ((status != 0) || (tmp < 0) || (tmp > 2)) + int qos = -1; + status = cf_util_get_int (child, &qos); + if ((status != 0) || (qos < 0) || (qos > 2)) ERROR ("mqtt plugin: Not a valid QoS setting."); else - conf->qos = tmp; + conf->qos = qos; } else if (strcasecmp ("Topic", child->key) == 0) cf_util_get_string (child, &conf->topic); @@ -728,7 +725,7 @@ static int mqtt_config_subscriber (oconfig_item_t *ci) ERROR ("mqtt plugin: Unknown config option: %s", child->key); } - tmp = realloc (subscribers, sizeof (*subscribers) * subscribers_num); + tmp = realloc (subscribers, sizeof (*subscribers) * (subscribers_num + 1) ); if (tmp == NULL) { ERROR ("mqtt plugin: realloc failed.");