[comp.mail.misc] Why does smail3.1.21 not check queues in daemon mode ??

lh@aega84.UUCP (L. Hirschbiegel) (06/10/91)

Here is a question for all smail-3.1 gurus out there.
I'm running smail-3.1.21 on an ISC box (version 2.2.1). It (almost:-)runs
like a charm, but there still is a little problem I've noticed.

I start smail as "/usr/lib/sendmail -bd -q10m" for SMTP connections over
ethernet (TCP/IP v1.2 from ISC). This works fine, but smail refuses to
check the input queues after the specified time intervals. 
Trying to track down the problem I have found daemon_mode() in file "modes.c".

Right before calling accept() [ for the smtp service port ] the alarm timer
is set up. I've checked the time value arg for the alarm timer - it is indeed
correct (10 minutes). As far as I have seen from my debug outputs, the
alarm service handler is never called!  Amazing...
I'm pretty sure there is no other errno_return from accept when interrupted,
since

	as = accept(ls, (struct sockaddr *)&from, &len);
	if (as < 0 && errno != EINTR) {
		write_log(LOG_PANIC, "accept failed: %s", strerrno());
		continue;
	}

should create an entry in my panic_log for everything else than EINTR 
(which never happened).
Of course I could change the code to mark the socket as non-blocking and
check for EAGAIN, but I think this would increase system overhead notably.

Calling runq from cron is the way to go, but the original ISC sendmail (ugh!:-)
is doing it right when started in daemon mode. 
So, is there a bug in ISC's accept() ??
Or do I miss something in my smail configuration (although there isn't much to
configure here)?? 
Does it work on someone elses ISC box??
-- 
------------------------------------------------------------------------
L. Hirschbiegel, AEG - A84, Frankfurt (Germany) / email: unido!aega84!lh