Merge commit 'octo/master'
[collectd.git] / src / unixsock.c
index 6a8628a..be36abc 100644 (file)
@@ -26,6 +26,7 @@
 
 #include "utils_cmd_flush.h"
 #include "utils_cmd_getval.h"
+#include "utils_cmd_getthreshold.h"
 #include "utils_cmd_listval.h"
 #include "utils_cmd_putval.h"
 #include "utils_cmd_putnotif.h"
@@ -164,7 +165,7 @@ static void *us_handle_client (void *arg)
        free (arg);
        arg = NULL;
 
-       DEBUG ("Reading from fd #%i", fd);
+       DEBUG ("unixsock plugin: us_handle_client: Reading from fd #%i", fd);
 
        fhin  = fdopen (fd, "r");
        if (fhin == NULL)
@@ -241,17 +242,21 @@ static void *us_handle_client (void *arg)
                {
                        handle_getval (fhout, buffer);
                }
+               else if (strcasecmp (fields[0], "getthreshold") == 0)
+               {
+                       handle_getthreshold (fhout, buffer);
+               }
                else if (strcasecmp (fields[0], "putval") == 0)
                {
                        handle_putval (fhout, buffer);
                }
                else if (strcasecmp (fields[0], "listval") == 0)
                {
-                       handle_listval (fhout, fields, fields_num);
+                       handle_listval (fhout, buffer);
                }
                else if (strcasecmp (fields[0], "putnotif") == 0)
                {
-                       handle_putnotif (fhout, fields, fields_num);
+                       handle_putnotif (fhout, buffer);
                }
                else if (strcasecmp (fields[0], "flush") == 0)
                {
@@ -270,7 +275,7 @@ static void *us_handle_client (void *arg)
                }
        } /* while (fgets) */
 
-       DEBUG ("Exiting..");
+       DEBUG ("unixsock plugin: us_handle_client: Exiting..");
        fclose (fhin);
        fclose (fhout);
 
@@ -278,7 +283,7 @@ static void *us_handle_client (void *arg)
        return ((void *) 0);
 } /* void *us_handle_client */
 
-static void *us_server_thread (void *arg)
+static void *us_server_thread (void __attribute__((unused)) *arg)
 {
        int  status;
        int *remote_fd;
@@ -383,8 +388,15 @@ static int us_config (const char *key, const char *val)
 
 static int us_init (void)
 {
+       static int have_init = 0;
+
        int status;
 
+       /* Initialize only once. */
+       if (have_init != 0)
+               return (0);
+       have_init = 1;
+
        loop = 1;
 
        status = pthread_create (&listen_thread, NULL, us_server_thread, NULL);