X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Femail.c;h=fdcf0677837e25cb27e50e78ad6c69f17be7bc3c;hb=903a58aa61577c6cab6614bd9b25a8d005cee3f7;hp=5e103ed7a82b4330a719230b31620d1df52bc903;hpb=597adb008e5cb9b39bc925046d2aedc084ec2b9e;p=collectd.git diff --git a/src/email.c b/src/email.c index 5e103ed7..fdcf0677 100644 --- a/src/email.c +++ b/src/email.c @@ -251,8 +251,6 @@ static void *collect (void *arg) collector_t *this = (collector_t *)arg; while (1) { - int loop = 1; - conn_t *connection; pthread_mutex_lock (&conns_mutex); @@ -277,15 +275,13 @@ static void *collect (void *arg) log_debug ("collect: handling connection on fd #%i", fileno (this->socket)); - while (loop) { + while (42) { /* 256 bytes ought to be enough for anybody ;-) */ char line[256 + 1]; /* line + '\0' */ int len = 0; errno = 0; if (NULL == fgets (line, sizeof (line), this->socket)) { - loop = 0; - if (0 != errno) { char errbuf[1024]; log_err ("collect: reading from socket (fd #%i) " @@ -358,10 +354,10 @@ static void *collect (void *arg) else { log_err ("collect: unknown type '%c'", line[0]); } - } /* while (loop) */ + } /* while (42) */ - log_debug ("[thread #%5lu] shutting down connection on fd #%i", - pthread_self (), fileno (this->socket)); + log_debug ("Shutting down connection on fd #%i", + fileno (this->socket)); fclose (connection->socket); free (connection); @@ -376,9 +372,10 @@ static void *collect (void *arg) } /* while (1) */ pthread_exit ((void *)0); + return ((void *) 0); } /* static void *collect (void *) */ -static void *open_connection (void *arg) +static void *open_connection (void __attribute__((unused)) *arg) { struct sockaddr_un addr; @@ -481,8 +478,8 @@ static void *open_connection (void *arg) collectors[i] = (collector_t *)smalloc (sizeof (collector_t)); collectors[i]->socket = NULL; - if (0 != (err = pthread_create (&collectors[i]->thread, &ptattr, - collect, collectors[i]))) { + if (0 != (err = plugin_thread_create (&collectors[i]->thread, + &ptattr, collect, collectors[i]))) { char errbuf[1024]; log_err ("pthread_create() failed: %s", sstrerror (errno, errbuf, sizeof (errbuf))); @@ -548,14 +545,16 @@ static void *open_connection (void *arg) pthread_cond_signal (&conn_available); } - pthread_exit ((void *)0); + + pthread_exit ((void *) 0); + return ((void *) 0); } /* static void *open_connection (void *) */ static int email_init (void) { int err = 0; - if (0 != (err = pthread_create (&connector, NULL, + if (0 != (err = plugin_thread_create (&connector, NULL, open_connection, NULL))) { char errbuf[1024]; disabled = 1; @@ -567,10 +566,27 @@ static int email_init (void) return (0); } /* int email_init */ -static int email_shutdown (void) +static void type_list_free (type_list_t *t) { - type_t *ptr = NULL; + type_t *this; + + this = t->head; + while (this != NULL) + { + type_t *next = this->next; + + sfree (this->name); + sfree (this); + + this = next; + } + t->head = NULL; + t->tail = NULL; +} + +static int email_shutdown (void) +{ int i = 0; if (connector != ((pthread_t) 0)) { @@ -610,35 +626,12 @@ static int email_shutdown (void) pthread_mutex_unlock (&conns_mutex); - for (ptr = list_count.head; NULL != ptr; ptr = ptr->next) { - free (ptr->name); - free (ptr); - } - - for (ptr = list_count_copy.head; NULL != ptr; ptr = ptr->next) { - free (ptr->name); - free (ptr); - } - - for (ptr = list_size.head; NULL != ptr; ptr = ptr->next) { - free (ptr->name); - free (ptr); - } - - for (ptr = list_size_copy.head; NULL != ptr; ptr = ptr->next) { - free (ptr->name); - free (ptr); - } - - for (ptr = list_check.head; NULL != ptr; ptr = ptr->next) { - free (ptr->name); - free (ptr); - } - - for (ptr = list_check_copy.head; NULL != ptr; ptr = ptr->next) { - free (ptr->name); - free (ptr); - } + type_list_free (&list_count); + type_list_free (&list_count_copy); + type_list_free (&list_size); + type_list_free (&list_size_copy); + type_list_free (&list_check); + type_list_free (&list_check_copy); unlink ((NULL == sock_file) ? SOCK_PATH : sock_file); @@ -656,7 +649,6 @@ static void email_submit (const char *type, const char *type_instance, gauge_t v vl.values = values; vl.values_len = 1; - vl.time = time (NULL); sstrncpy (vl.host, hostname_g, sizeof (vl.host)); sstrncpy (vl.plugin, "email", sizeof (vl.plugin)); sstrncpy (vl.type, type, sizeof (vl.type));