X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Femail.c;h=d1df0a12ce040065685e84a1862653bcf1b83e56;hb=45492ba3d0119874e2f2878d68089fc8f62268a4;hp=849b7f932a98f4faf147ae4fb7592ebf4309c166;hpb=79963d13c1884d1d92667cc502ad20758b084a12;p=collectd.git diff --git a/src/email.c b/src/email.c index 849b7f93..d1df0a12 100644 --- a/src/email.c +++ b/src/email.c @@ -361,8 +361,6 @@ static void *collect(void *arg) { } /* static void *collect (void *) */ static void *open_connection(void __attribute__((unused)) * arg) { - struct sockaddr_un addr; - const char *path = (NULL == sock_file) ? SOCK_PATH : sock_file; const char *group = (NULL == sock_group) ? COLLECTD_GRP_NAME : sock_group; @@ -375,7 +373,9 @@ static void *open_connection(void __attribute__((unused)) * arg) { pthread_exit((void *)1); } - addr.sun_family = AF_UNIX; + struct sockaddr_un addr = { + .sun_family = AF_UNIX + }; sstrncpy(addr.sun_path, path, (size_t)(UNIX_PATH_MAX - 1)); errno = 0; @@ -403,15 +403,21 @@ static void *open_connection(void __attribute__((unused)) * arg) { { struct group sg; struct group *grp; - char grbuf[2048]; int status; + long int grbuf_size = sysconf(_SC_GETGR_R_SIZE_MAX); + if (grbuf_size <= 0) + grbuf_size = sysconf(_SC_PAGESIZE); + if (grbuf_size <= 0) + grbuf_size = 4096; + char grbuf[grbuf_size]; + grp = NULL; status = getgrnam_r(group, &sg, grbuf, sizeof(grbuf), &grp); if (status != 0) { char errbuf[1024]; log_warn("getgrnam_r (%s) failed: %s", group, - sstrerror(errno, errbuf, sizeof(errbuf))); + sstrerror(status, errbuf, sizeof(errbuf))); } else if (grp == NULL) { log_warn("No such group: `%s'", group); } else { @@ -448,7 +454,7 @@ static void *open_connection(void __attribute__((unused)) * arg) { collectors[i]->socket = NULL; if (plugin_thread_create(&collectors[i]->thread, &ptattr, collect, - collectors[i]) != 0) { + collectors[i], "email collector") != 0) { char errbuf[1024]; log_err("plugin_thread_create() failed: %s", sstrerror(errno, errbuf, sizeof(errbuf))); @@ -531,7 +537,8 @@ static void *open_connection(void __attribute__((unused)) * arg) { } /* static void *open_connection (void *) */ static int email_init(void) { - if (plugin_thread_create(&connector, NULL, open_connection, NULL) != 0) { + if (plugin_thread_create(&connector, NULL, open_connection, NULL, + "email listener") != 0) { char errbuf[1024]; disabled = 1; log_err("plugin_thread_create() failed: %s", @@ -613,14 +620,10 @@ static int email_shutdown(void) { static void email_submit(const char *type, const char *type_instance, gauge_t value) { - value_t values[1]; value_list_t vl = VALUE_LIST_INIT; - values[0].gauge = value; - - vl.values = values; + vl.values = &(value_t){.gauge = value}; vl.values_len = 1; - sstrncpy(vl.host, hostname_g, sizeof(vl.host)); sstrncpy(vl.plugin, "email", sizeof(vl.plugin)); sstrncpy(vl.type, type, sizeof(vl.type)); sstrncpy(vl.type_instance, type_instance, sizeof(vl.type_instance));