Auto-Merge pull request #2563 from octo/cid/179225
[collectd.git] / src / write_graphite.c
index 828d22d..13adff5 100644 (file)
@@ -312,6 +312,7 @@ static void wg_callback_free(void *data) {
   sfree(cb->prefix);
   sfree(cb->postfix);
 
+  pthread_mutex_unlock(&cb->send_lock);
   pthread_mutex_destroy(&cb->send_lock);
 
   sfree(cb);
@@ -521,6 +522,10 @@ static int wg_config_node(oconfig_item_t *ci) {
       cf_util_get_flag(child, &cb->format_flags, GRAPHITE_SEPARATE_INSTANCES);
     else if (strcasecmp("AlwaysAppendDS", child->key) == 0)
       cf_util_get_flag(child, &cb->format_flags, GRAPHITE_ALWAYS_APPEND_DS);
+    else if (strcasecmp("PreserveSeparator", child->key) == 0)
+      cf_util_get_flag(child, &cb->format_flags, GRAPHITE_PRESERVE_SEPARATOR);
+    else if (strcasecmp("DropDuplicateFields", child->key) == 0)
+      cf_util_get_flag(child, &cb->format_flags, GRAPHITE_DROP_DUPE_FIELDS);
     else if (strcasecmp("EscapeCharacter", child->key) == 0)
       config_set_char(&cb->escape_char, child);
     else {
@@ -547,12 +552,12 @@ static int wg_config_node(oconfig_item_t *ci) {
     ssnprintf(callback_name, sizeof(callback_name), "write_graphite/%s",
               cb->name);
 
-  user_data_t ud = {.data = cb, .free_func = wg_callback_free};
-
-  plugin_register_write(callback_name, wg_write, &ud);
+  plugin_register_write(callback_name, wg_write,
+                        &(user_data_t){
+                            .data = cb, .free_func = wg_callback_free,
+                        });
 
-  ud.free_func = NULL;
-  plugin_register_flush(callback_name, wg_flush, &ud);
+  plugin_register_flush(callback_name, wg_flush, &(user_data_t){.data = cb});
 
   return (0);
 }