From 32bcaa06f65eba5d0d12cb99aa8c3982708b6f34 Mon Sep 17 00:00:00 2001 From: Fredrik Tolf Date: Wed, 15 Oct 2014 00:14:38 +0200 Subject: [PATCH] lib: Improved EAGAIN reporting friendliness further. --- lib/cf.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/cf.c b/lib/cf.c index 4135209..9d3fb76 100644 --- a/lib/cf.c +++ b/lib/cf.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #ifdef HAVE_CONFIG_H @@ -44,6 +45,7 @@ struct stdchild { char **envp; int fd; int agains; + time_t lastrep; }; static int parsefile(struct cfstate *s, FILE *in); @@ -399,8 +401,10 @@ static int stdhandle(struct child *ch, struct hthead *req, int fd, void (*chinit serr = errno; } if(serr == EAGAIN) { - if(sd->agains++ == 0) + if(sd->agains++ == 0) { flog(LOG_WARNING, "request to child %s denied due to buffer overload", ch->name); + sd->lastrep = time(NULL); + } } else { flog(LOG_ERR, "could not pass on request to child %s: %s", ch->name, strerror(serr)); close(sd->fd); @@ -409,7 +413,7 @@ static int stdhandle(struct child *ch, struct hthead *req, int fd, void (*chinit return(-1); } ok: - if(sd->agains > 0) { + if((sd->agains > 0) && ((time(NULL) - sd->lastrep) > 10)) { flog(LOG_WARNING, "%i requests to child %s were denied due to buffer overload", sd->agains, ch->name); sd->agains = 0; } -- 2.11.0