daemon: ignore ENOTSOCK from setsockopt
authorEric Wong <e@80x24.org>
Mon, 18 Jul 2016 04:59:11 +0000 (04:59 +0000)
committerJunio C Hamano <gitster@pobox.com>
Mon, 18 Jul 2016 18:09:52 +0000 (11:09 -0700)
In inetd mode, we are not guaranteed stdin or stdout is a
socket; callers could filter the data through a pipe
or be testing with regular files.

This prevents t5802 from polluting syslog.

Signed-off-by: Eric Wong <e@80x24.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
daemon.c
index 46dddaca5a05a4d50da21c828085168e3ebe8b86..a84495113e4c4e85243937ad0306a17981003c7b 100644 (file)
--- a/daemon.c
+++ b/daemon.c
@@ -673,9 +673,11 @@ static void set_keep_alive(int sockfd)
 {
        int ka = 1;
 
-       if (setsockopt(sockfd, SOL_SOCKET, SO_KEEPALIVE, &ka, sizeof(ka)) < 0)
-               logerror("unable to set SO_KEEPALIVE on socket: %s",
-                       strerror(errno));
+       if (setsockopt(sockfd, SOL_SOCKET, SO_KEEPALIVE, &ka, sizeof(ka)) < 0) {
+               if (errno != ENOTSOCK)
+                       logerror("unable to set SO_KEEPALIVE on socket: %s",
+                               strerror(errno));
+       }
 }
 
 static int execute(void)