X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fcollectd.c;h=a93cc28675d51e0ef53adc7ed7f270cbe3c71791;hb=e913f3f6b71b0ba4abd6aaf2202100a5cef48b75;hp=a1e15bf1e7ca52b674632b1308012c91297d2c00;hpb=02c24d0cd1860a7af773671af356e86fd6b9cac8;p=collectd.git diff --git a/src/collectd.c b/src/collectd.c index a1e15bf1..a93cc286 100644 --- a/src/collectd.c +++ b/src/collectd.c @@ -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;