Code

src/utils_threshold.c: Corrected and improved the handling of the `invert' setting.
[collectd.git] / src / network.c
index ad8d530e4780d4ff9ce8ab96d72b65455a243c42..a659189f3e7960d312d0d608f9f8af55d1e3c5bb 100644 (file)
@@ -682,6 +682,16 @@ static int network_set_ttl (const sockent_t *se, const struct addrinfo *ai)
 static int network_bind_socket (const sockent_t *se, const struct addrinfo *ai)
 {
        int loop = 0;
+       int yes  = 1;
+
+       /* allow multiple sockets to use the same PORT number */
+       if (setsockopt(se->fd, SOL_SOCKET, SO_REUSEADDR,
+                               &yes, sizeof(yes)) == -1) {
+                char errbuf[1024];
+                ERROR ("setsockopt: %s", 
+                                sstrerror (errno, errbuf, sizeof (errbuf)));
+               return (-1);
+       }
 
        DEBUG ("fd = %i; calling `bind'", se->fd);
 
@@ -1091,7 +1101,6 @@ static int add_to_buffer (char *buffer, int buffer_size,
                                        vl->host, strlen (vl->host)) != 0)
                        return (-1);
                strcpy (vl_def->host, vl->host);
-               DEBUG ("network plugin: add_to_buffer: host = %s", vl->host);
        }
 
        if (vl_def->time != vl->time)
@@ -1100,8 +1109,6 @@ static int add_to_buffer (char *buffer, int buffer_size,
                                        (uint64_t) vl->time))
                        return (-1);
                vl_def->time = vl->time;
-               DEBUG ("network plugin: add_to_buffer: time = %u",
-                               (unsigned int) vl->time);
        }
 
        if (vl_def->interval != vl->interval)
@@ -1110,8 +1117,6 @@ static int add_to_buffer (char *buffer, int buffer_size,
                                        (uint64_t) vl->interval))
                        return (-1);
                vl_def->interval = vl->interval;
-               DEBUG ("network plugin: add_to_buffer: interval = %i",
-                               (int) vl->interval);
        }
 
        if (strcmp (vl_def->plugin, vl->plugin) != 0)
@@ -1120,8 +1125,6 @@ static int add_to_buffer (char *buffer, int buffer_size,
                                        vl->plugin, strlen (vl->plugin)) != 0)
                        return (-1);
                strcpy (vl_def->plugin, vl->plugin);
-               DEBUG ("network plugin: add_to_buffer: plugin = %s",
-                               vl->plugin);
        }
 
        if (strcmp (vl_def->plugin_instance, vl->plugin_instance) != 0)
@@ -1131,8 +1134,6 @@ static int add_to_buffer (char *buffer, int buffer_size,
                                        strlen (vl->plugin_instance)) != 0)
                        return (-1);
                strcpy (vl_def->plugin_instance, vl->plugin_instance);
-               DEBUG ("network plugin: add_to_buffer: plugin_instance = %s",
-                               vl->plugin_instance);
        }
 
        if (strcmp (type_def, ds->type) != 0)
@@ -1141,7 +1142,6 @@ static int add_to_buffer (char *buffer, int buffer_size,
                                        ds->type, strlen (ds->type)) != 0)
                        return (-1);
                strcpy (type_def, ds->type);
-               DEBUG ("network plugin: add_to_buffer: type = %s", ds->type);
        }
 
        if (strcmp (vl_def->type_instance, vl->type_instance) != 0)
@@ -1151,8 +1151,6 @@ static int add_to_buffer (char *buffer, int buffer_size,
                                        strlen (vl->type_instance)) != 0)
                        return (-1);
                strcpy (vl_def->type_instance, vl->type_instance);
-               DEBUG ("network plugin: add_to_buffer: type_instance = %s",
-                               vl->type_instance);
        }
        
        if (write_part_values (&buffer, &buffer_size, ds, vl) != 0)
@@ -1249,7 +1247,11 @@ static int network_config (const char *key, const char *val)
                                && (fields_num != 2))
                        return (1);
                else if (fields_num == 2)
+               {
+                       if ((service = strchr (fields[1], '.')) != NULL)
+                               *service = '\0';
                        service = fields[1];
+               }
                node = fields[0];
 
                if (strcasecmp ("Listen", key) == 0)
@@ -1290,8 +1292,6 @@ static int network_config (const char *key, const char *val)
 
 static int network_shutdown (void)
 {
-       DEBUG ("Shutting down.");
-
        listen_loop++;
 
        if (listen_thread != (pthread_t) 0)
@@ -1301,7 +1301,8 @@ static int network_shutdown (void)
                listen_thread = (pthread_t) 0;
        }
 
-       listen_thread = 0;
+       if (send_buffer_fill > 0)
+               flush_buffer ();
 
        if (cache_tree != NULL)
        {