httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "William A. Rowe, Jr." <>
Subject Re: svn commit: r735093 - /httpd/httpd/trunk/server/mpm/winnt/child.c
Date Mon, 19 Jan 2009 17:33:09 GMT
Rainer Jung wrote:
> On 16.01.2009 20:30, wrote:
>> Author: wrowe
>> Date: Fri Jan 16 11:30:42 2009
>> New Revision: 735093
>> URL:
>> Log:
>> Introduce Win32 AcceptFilter handling.
>> Divided into 3 classes, this implements the first two;
>>   * AcceptFilter 'data' - much as on Unix, accept will not complete
>>     until data is ready to be accepted.  Unlike Unix, it will actually
>>     fetch the first bucket full of data from the tcp socket, and this
>>     patch implements passing that bucket into the core net brigade
>>     in front of the accepted socket.
>>   * AcceptFilter 'connect' - just as in Apache 2.2, accept will not
>>     complete until three way handshake is complete and the endpoints
>>     are resolved, and quickly grabs the endpoint addresses using the
>>     AcceptEx API (which some people have problems with).  This will
>>     not be the default.
>>   * AcceptFilter 'none' [not yet implemented] - will be the traditional
>>     select/WSAAccept style processing for broken network socket stacks
>>     and more trivial tcp style connections.  If AcceptEx appears to be
>>     a problem, the listener will be able to downgrade to 'none'.

> I built trunk on XP today. When trying to run it, I get a restart loop
> for the child process, and the error log contains repetitions of:

> [Sun Jan 18 19:20:43 2009] [notice] Child 4556: Starting thread to
> listen on port 8000.
> [Sun Jan 18 19:20:43 2009] [error] (OS 10038)Ein Vorgang bezog sich auf
> ein Objekt, das kein Socket ist.  : Child 4556: Encountered too many
> AcceptEx faults accepting client connections. Possible causes: dynamic
> address renewal, or incompatible VPN or firewall software.

I'd love to know what leads into this WSAENOTSOCK ... failing to recycle
the socket or the listener socket falling apart.  Needs review, maybe some
extra magic to log this distinction.

The "falling back on 'none'" is going to be a problem till I finish that
code this week.  I'm actually attacking two problems, having each listen
thread pay attention to up to 62 different sockets, and adding the required
classic accept() logic.  So... this listener may be accepting on both the
classic listen logic and the AcceptEx logic on different listeners at the
same time.

Restructuring the code is a little painful, but I should get through this
by the end of the week.

Curiosity, XP SP? -- and did you tweak apr.h(w) to enable IPV6?

> Since it is my first trunk build on Windows (and  don't have VC6), I
> could have well made a mistake. Just wanted to let you know the result,
> in case you get the same.

Yes; there is more work to be done here.  But thank you for the notes and
I don't believe there is any difference here for VC12 vs. later compilers
or c runtimes.

View raw message