From: Florian Forster Date: Thu, 1 Oct 2009 19:33:37 +0000 (+0200) Subject: Merge branch 'collectd-4.7' into collectd-4.8 X-Git-Tag: collectd-4.8.1~5 X-Git-Url: https://git.octo.it/?a=commitdiff_plain;h=6c134837a38a566a6ad78225ef5e5c3cc9b7d832;hp=d828ed0a50f5a094f9ea5a699e6b2bfd4acbce16;p=collectd.git Merge branch 'collectd-4.7' into collectd-4.8 --- diff --git a/src/owniptc/libiptc.c b/src/owniptc/libiptc.c index f7a6640f..5e5fde08 100644 --- a/src/owniptc/libiptc.c +++ b/src/owniptc/libiptc.c @@ -1489,6 +1489,7 @@ TC_NEXT_RULE(const STRUCT_ENTRY *prev, TC_HANDLE_T *handle) } /* How many rules in this chain? */ +#if 0 static unsigned int TC_NUM_RULES(const char *chain, TC_HANDLE_T *handle) { @@ -1504,7 +1505,9 @@ TC_NUM_RULES(const char *chain, TC_HANDLE_T *handle) return c->num_rules; } +#endif +#if 0 static const STRUCT_ENTRY * TC_GET_RULE(const char *chain, unsigned int n, TC_HANDLE_T *handle) { @@ -1526,6 +1529,7 @@ TC_GET_RULE(const char *chain, unsigned int n, TC_HANDLE_T *handle) return NULL; return r->entry; } +#endif /* Returns a pointer to the target name of this position. */ static const char *standard_target_map(int verdict) diff --git a/src/processes.c b/src/processes.c index fd06b21b..4f515184 100644 --- a/src/processes.c +++ b/src/processes.c @@ -704,7 +704,10 @@ int ps_read_process (int pid, procstat_t *ps, char *state) else { if ( (ps->num_lwp = ps_read_tasks (pid)) == -1 ) - return (-1); + { + /* returns -1 => kernel 2.4 */ + ps->num_lwp = 1; + } ps->num_proc = 1; } diff --git a/src/unixsock.c b/src/unixsock.c index be36abc8..0b897482 100644 --- a/src/unixsock.c +++ b/src/unixsock.c @@ -158,32 +158,45 @@ static int us_open_socket (void) static void *us_handle_client (void *arg) { - int fd; + int fdin; + int fdout; FILE *fhin, *fhout; - fd = *((int *) arg); + fdin = *((int *) arg); free (arg); arg = NULL; - DEBUG ("unixsock plugin: us_handle_client: Reading from fd #%i", fd); + DEBUG ("unixsock plugin: us_handle_client: Reading from fd #%i", fdin); - fhin = fdopen (fd, "r"); + fdout = dup (fdin); + if (fdout < 0) + { + char errbuf[1024]; + ERROR ("unixsock plugin: dup failed: %s", + sstrerror (errno, errbuf, sizeof (errbuf))); + close (fdin); + pthread_exit ((void *) 1); + } + + fhin = fdopen (fdin, "r"); if (fhin == NULL) { char errbuf[1024]; ERROR ("unixsock plugin: fdopen failed: %s", sstrerror (errno, errbuf, sizeof (errbuf))); - close (fd); + close (fdin); + close (fdout); pthread_exit ((void *) 1); } - fhout = fdopen (fd, "w"); + fhout = fdopen (fdout, "w"); if (fhout == NULL) { char errbuf[1024]; ERROR ("unixsock plugin: fdopen failed: %s", sstrerror (errno, errbuf, sizeof (errbuf))); - fclose (fhin); /* this closes fd as well */ + fclose (fhin); /* this closes fdin as well */ + close (fdout); pthread_exit ((void *) 1); } @@ -231,11 +244,12 @@ static void *us_handle_client (void *arg) fields_num = strsplit (buffer_copy, fields, sizeof (fields) / sizeof (fields[0])); - if (fields_num < 1) { - close (fd); - break; + fprintf (fhout, "-1 Internal error\n"); + fclose (fhin); + fclose (fhout); + pthread_exit ((void *) 1); } if (strcasecmp (fields[0], "getval") == 0)