Subject: Re: postfix broken by AF_LOCAL semantics change
To: Dion van der Grijp <dvdgrijp@mbox3.singnet.com.sg>
From: Matt Thomas <matt@3am-software.com>
List: tech-kern
Date: 11/29/2003 04:50:50
On Nov 29, 2003, at 3:27 AM, Dion van der Grijp wrote:

> On Sat, Nov 29, 2003 at 02:07:47AM -0800, Matt Thomas wrote:
>>
>> On Nov 28, 2003, at 10:06 PM, Perry E.Metzger wrote:
>>
>>>
>>> Okay, having tested a reverted kernel, I can confirm that this was
>>> indeed breaking Postfix -- it doubtless breaks other things too.  
>>> I've
>>> consulted with a couple of people and determined that the change
>>> renders us API incompatible with the semantics on all BSDs, Linux and
>>> Solaris. I'm therefore going to revert it for now.
>>
>> I restored my change since it is needed.  However, it is no longer the
>> default behavior but must be enabled via the LOCAL_CONNWAIT socket
>> option.
>> -- 
>
> Could you please elaborate on the need?

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.
-- 
Matt Thomas                     email: matt@3am-software.com
3am Software Foundry              www: http://3am-software.com/bio/matt/
Cupertino, CA              disclaimer: I avow all knowledge of this 
message.