chiark / gitweb /
journal: if the syslog forwarder socket is full, then don't block
authorLennart Poettering <lennart@poettering.net>
Thu, 12 Jan 2012 04:09:24 +0000 (05:09 +0100)
committerLennart Poettering <lennart@poettering.net>
Thu, 12 Jan 2012 04:09:24 +0000 (05:09 +0100)
src/journal/journald.c

index 56cd313..f924c93 100644 (file)
@@ -752,6 +752,11 @@ static void forward_syslog_iovec(Server *s, const struct iovec *iovec, unsigned
         if (sendmsg(s->syslog_fd, &msghdr, MSG_NOSIGNAL) >= 0)
                 return;
 
+        /* The socket is full? I guess the syslog implementation is
+         * too slow, and we shouldn't wait for that... */
+        if (errno == EAGAIN)
+                return;
+
         if (ucred && errno == ESRCH) {
                 struct ucred u;
 
@@ -765,6 +770,9 @@ static void forward_syslog_iovec(Server *s, const struct iovec *iovec, unsigned
 
                 if (sendmsg(s->syslog_fd, &msghdr, MSG_NOSIGNAL) >= 0)
                         return;
+
+                if (errno == EAGAIN)
+                        return;
         }
 
         log_debug("Failed to forward syslog message: %m");