Messages in this thread | | | Date | Wed, 24 Jun 1998 22:39:39 -0400 (EDT) | From | "Richard B. Johnson" <> | Subject | Re: Sendmail 8.9.0 claims a Linux kernel bug |
| |
On 25 Jun 1998, Andi Kleen wrote:
> Ben Gertzfield <che@debian.org> writes: > > > From the Sendmail 8.9.0 Known Bugs List: > > > > * accept() problem on Linux. > > > > Apparently, the accept() in sendmail daemon loop can return ETIMEDOUT > > and cause sendmail to sleep for 5 seconds during which time no new > > connections will be accepted. An error is reported to syslog: > > > > Jun 9 17:14:12 hostname sendmail[207]: NOQUEUE: SYSERR(root): > > getrequests: accept: Connection timed out > > > > "Connection timed out" is not documented as a valid return from > > accept(2) and this is believed to be a bug in the Linux kernel. > > This is no kernel bug, but an intentional change from BSD/Solaris semantics. > Linux accept() returns errors for failed connection attempts unlike BSD which drops > them. > > It is a documentation bug if the manpage does not state that. > A previous version of sendmail sets up a timer and expects EINTR as its normal "waiting for connection" error, which it properly ignores. Anything else writes an error message then waits for 5 seconds before trying again. I note that it closes its socket also, which is a design bug. It is expensive to get a new socket. Accept should simply be called until it succeeds (with no time-out). This is a daemon which should sleep forever if there are no connection attempts.
This is sendmail-8.7.5. The code in daemon.c is, in my not too humble opinion, rather juvenile.
Cheers, Dick Johnson ***** FILE SYSTEM MODIFIED ***** Penguin : Linux version 2.1.105 on an i586 machine (66.15 BogoMips). Warning : It's hard to remain at the trailing edge of technology.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu
| |