Merge branch 'collectd-4.7' into collectd-4.8
authorFlorian Forster <octo@leeloo.lan.home.verplant.org>
Thu, 1 Oct 2009 19:33:37 +0000 (21:33 +0200)
committerFlorian Forster <octo@leeloo.lan.home.verplant.org>
Thu, 1 Oct 2009 19:33:37 +0000 (21:33 +0200)
src/owniptc/libiptc.c
src/processes.c
src/unixsock.c

index f7a6640..5e5fde0 100644 (file)
@@ -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)
index fd06b21..4f51518 100644 (file)
@@ -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;
        }
 
index be36abc..0b89748 100644 (file)
@@ -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)