From: Florian Forster Date: Sat, 13 Jul 2013 09:23:32 +0000 (+0200) Subject: Merge branch 'collectd-5.2' into collectd-5.3 X-Git-Tag: collectd-5.3.1~1 X-Git-Url: https://git.tokkee.org/?p=collectd.git;a=commitdiff_plain;h=a320c4a23fee0e900a7cd2310c771b8dbd2a2d82;hp=bc389fa32a48a64306f7ec008f4548f05fdb7c80 Merge branch 'collectd-5.2' into collectd-5.3 --- diff --git a/src/plugin.c b/src/plugin.c index 4c6a0322..d3767d12 100644 --- a/src/plugin.c +++ b/src/plugin.c @@ -1135,6 +1135,27 @@ int plugin_register_shutdown (const char *name, (void *) callback, /* user_data = */ NULL)); } /* int plugin_register_shutdown */ +static void plugin_free_data_sets (void) +{ + void *key; + void *value; + + if (data_sets == NULL) + return; + + while (c_avl_pick (data_sets, &key, &value) == 0) + { + data_set_t *ds = value; + /* key is a pointer to ds->type */ + + sfree (ds->ds); + sfree (ds); + } + + c_avl_destroy (data_sets); + data_sets = NULL; +} /* void plugin_free_data_sets */ + int plugin_register_data_set (const data_set_t *ds) { data_set_t *ds_copy; @@ -1657,6 +1678,8 @@ void plugin_shutdown_all (void) destroy_all_callbacks (&list_notification); destroy_all_callbacks (&list_shutdown); destroy_all_callbacks (&list_log); + + plugin_free_data_sets (); } /* void plugin_shutdown_all */ int plugin_dispatch_missing (const value_list_t *vl) /* {{{ */ diff --git a/src/write_graphite.c b/src/write_graphite.c index 949a8425..99c6f4d8 100644 --- a/src/write_graphite.c +++ b/src/write_graphite.c @@ -222,7 +222,6 @@ static int wg_callback_init (struct wg_callback *cb) "write_graphite plugin: Connecting to %s:%s failed. " "The last error was: %s", node, service, sstrerror (errno, errbuf, sizeof (errbuf))); - close (cb->sock_fd); return (-1); } else @@ -250,8 +249,11 @@ static void wg_callback_free (void *data) wg_flush_nolock (/* timeout = */ 0, cb); - close(cb->sock_fd); - cb->sock_fd = -1; + if (cb->sock_fd >= 0) + { + close (cb->sock_fd); + cb->sock_fd = -1; + } sfree(cb->name); sfree(cb->node); @@ -367,12 +369,9 @@ static int wg_write_messages (const data_set_t *ds, const value_list_t *vl, return (status); /* Send the message to graphite */ - wg_send_message (buffer, cb); - if (status != 0) - { - /* An error message has already been printed. */ + status = wg_send_message (buffer, cb); + if (status != 0) /* error message has been printed already. */ return (status); - } return (0); } /* int wg_write_messages */