threads / patch / 1402

patchdaemon.c: squelch error message from EINTR

Subject: [PATCH] daemon.c: squelch error message from EINTR

## tl;dr

2 messages between Aug 3, 2005 and Aug 4, 2005. Diffs are folded; open one to read it.

replies: 1people: 2as markdown or json

Junio C Hamano· Aug 3, 2005, 06:20 UTC · lore

This is a "call for help" patch. The kernel.org 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 apprciated.

-jc

------------ 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 limit.

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 <junkio@cox.net>
---
 daemon.c |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)
34be43e7af874923cfa1c8baeaf19fa17bae4d30
Show changes to daemon.c +5 −2
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);
+			}
 			continue;
 		}
 
Petr Baudis· Aug 4, 2005, 20:29 UTC · re: Junio C Hamano · lore

Re: [PATCH] daemon.c: squelch error message from EINTR

Dear diary, on Wed, Aug 03, 2005 at 08:20:01AM CEST, I got a letter where Junio C Hamano <junkio@cox.net> told me that...

> 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.

I think it's fine. EINTR means it got a signal while waiting, it might be worthwhile checking by strace what signal it actually was - one thing coming on my mind is SIGPIPE or so, but I barely saw the code. Anyway, just sticking your hand in sand if you see this is probably fine.

-- 
				Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
If you want the holes in your knowledge showing up try teaching
someone.  -- Alan Cox

← back to recent threads