Merge pull request #2168 from maryamtahhan/feat_libvirt_upstream
[collectd.git] / src / mqtt.c
index 6b76af9..a962514 100644 (file)
@@ -462,6 +462,7 @@ static int format_topic(char *buf, size_t buf_len, data_set_t const *ds,
                         value_list_t const *vl, mqtt_client_conf_t *conf) {
   char name[MQTT_MAX_TOPIC_SIZE];
   int status;
+  char *c;
 
   if ((conf->topic_prefix == NULL) || (conf->topic_prefix[0] == 0))
     return (FORMAT_VL(buf, buf_len, vl));
@@ -474,6 +475,10 @@ static int format_topic(char *buf, size_t buf_len, data_set_t const *ds,
   if ((status < 0) || (((size_t)status) >= buf_len))
     return (ENOMEM);
 
+  while((c = strchr(buf, '#')) || (c = strchr(buf, '+'))) {
+       *c = '_';
+  }
+
   return (0);
 } /* int format_topic */
 
@@ -604,9 +609,9 @@ static int mqtt_config_publisher(oconfig_item_t *ci) {
   }
 
   ssnprintf(cb_name, sizeof(cb_name), "mqtt/%s", conf->name);
-  user_data_t user_data = {.data = conf};
-
-  plugin_register_write(cb_name, mqtt_write, &user_data);
+  plugin_register_write(cb_name, mqtt_write, &(user_data_t){
+                                                 .data = conf,
+                                             });
   return (0);
 } /* mqtt_config_publisher */
 
@@ -735,7 +740,8 @@ static int mqtt_init(void) {
     status = plugin_thread_create(&subscribers[i]->thread,
                                   /* attrs = */ NULL,
                                   /* func  = */ subscribers_thread,
-                                  /* args  = */ subscribers[i]);
+                                  /* args  = */ subscribers[i],
+                                  /* name  = */ "mqtt");
     if (status != 0) {
       char errbuf[1024];
       ERROR("mqtt plugin: pthread_create failed: %s",
@@ -751,5 +757,3 @@ void module_register(void) {
   plugin_register_complex_config("mqtt", mqtt_config);
   plugin_register_init("mqtt", mqtt_init);
 } /* void module_register */
-
-/* vim: set sw=4 sts=4 et fdm=marker : */