Subject: Re: postfix broken by AF_LOCAL semantics change
To: Matt Thomas <matt@3am-software.com>
From: Jaromir Dolecek <jdolecek@NetBSD.org>
List: tech-kern
Date: 11/29/2003 14:03:16
Matt Thomas wrote:
> If connect succeed with any backpressure (as is the default behavior),
> then it quite easy for a swarm of requests to overwhelm an accepting
> server since his backlog can be exceeded before he even gets scheduled
> to run.  If you make the connect sleep until accepted, you can limit the
> overruns.   Part of the problem is that when the backlog is exceeded the
> error is ECONNREFUSED.  This makes it impossible for a client to 
> determine
> whether it was because there was no socket bound to the right name or 
> that
> socket accept queue became full.

This sounds reasonable and I don't see any API incompatibility
in this. Everyone agrees that connect() can block, right?
What exact API incompatibility you are referring to, Perry?
Doesn't postfix do something stupid such as assuming connect
to AF_LOCAL won't block?

Of course, the clients should only be put to sleep if the
socket is open in blocking (default) mode. Does your code
work this way, Matt?

Jaromir
-- 
Jaromir Dolecek <jdolecek@NetBSD.org>            http://www.NetBSD.cz/
-=- We should be mindful of the potential goal, but as the Buddhist -=-
-=- masters say, ``You may notice during meditation that you        -=-
-=- sometimes levitate or glow.   Do not let this distract you.''   -=-