This is a "call for help" patch.  The folks are
talking about installing git daemon, and while the problem I am
trying to address should not matter when the daemon is spawned
from inetd, I would like to get this resolved.  Help greatly


It appears that 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

I am not sure if this is the right fix, and I have not received
an answer from the original author of the patch.  I would
appreciate help from the folks on the list who are familiar with
the networking.

Signed-off-by: Junio C Hamano <[EMAIL PROTECTED]>

 daemon.c |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/daemon.c b/daemon.c
--- 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);
+                       }

To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at

Reply via email to