Merge branch 'collectd-3.10'
[collectd.git] / src / collectd.c
index a1e15bf..a93cc28 100644 (file)
@@ -223,16 +223,27 @@ static int start_client (void)
 #if HAVE_LIBRRD
 static int start_server (void)
 {
-       /* FIXME use stack here! */
        char *host;
        char *type;
        char *instance;
        char *values;
 
-       while (loop == 0)
+       int  error_counter = 0;
+       int  status;
+
+       while ((loop == 0) && (error_counter < 3))
        {
-               if (network_receive (&host, &type, &instance, &values) == 0)
-                       plugin_write (host, type, instance, values);
+               status = network_receive (&host, &type, &instance, &values);
+
+               if (status != 0)
+               {
+                       if (status < 0)
+                               error_counter++;
+                       continue;
+               }
+               error_counter = 0;
+
+               plugin_write (host, type, instance, values);
 
                if (host     != NULL) free (host);     host     = NULL;
                if (type     != NULL) free (type);     type     = NULL;