Code

daemon.c: squelch error message from EINTR
authorJunio C Hamano <junkio@cox.net>
Tue, 26 Jul 2005 20:26:52 +0000 (13:26 -0700)
committerJunio C Hamano <junkio@cox.net>
Fri, 5 Aug 2005 08:27:13 +0000 (01:27 -0700)
Every time after servicing the connection, select() first fails
with EINTR and ends up waiting for one second before serving the
next client.  The sleep() was placed by the original author per
suggestion from the list to avoid spinning on failing select,
but at least this EINTR situation should not result in "at most
one client per second" service limit.

I am not sure if this is the right fix, but WTH.  The king
penguin says that serious people would run the daemon under
inetd anyway, and I agree with that.

Signed-off-by: Junio C Hamano <junkio@cox.net>
daemon.c

index b7d60918ebab7816d8711b927aeae7dfab32fd2e..932d908bad3587b8ae7868112d587eaca775a303 100644 (file)
--- a/daemon.c
+++ b/daemon.c
@@ -294,8 +294,11 @@ static int serve(int port)
                fds = fds_init;
                
                if (select(maxfd + 1, &fds, NULL, NULL, NULL) < 0) {
-                       error("select failed, resuming: %s", strerror(errno));
-                       sleep(1);
+                       if (errno != EINTR) {
+                               error("select failed, resuming: %s",
+                                     strerror(errno));
+                               sleep(1);
+                       }
                        continue;
                }