httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jess Holle <je...@ptc.com>
Subject Re: cvs commit: apr/network_io/win32 sockopt.c
Date Mon, 05 Apr 2004 16:11:40 GMT
While patching sockopt.c, I should point out the need for the following 
case in the Win32 sockopt.c's apr_socket_opt_set routine:

        case APR_SO_SNDBUF:
            if (setsockopt(sock->socketdes, SOL_SOCKET, SO_SNDBUF, (void
    *)&on, sizeof(int)) == -1) {
                return apr_get_netos_error();
            }
            break;

Without it one cannot set the send buffer size on Windows, which leads 
to a performance penalty on Windows.

--
Jess Holle

Justin Erenkrantz wrote:

> --On Saturday, April 3, 2004 5:15 PM +0000 jerenkrantz@apache.org wrote:
>
>> jerenkrantz    2004/04/03 09:15:52
>>
>>   Modified:    .        CHANGES
>>                network_io/unix sockopt.c
>>                network_io/win32 sockopt.c
>>   Log:
>>   Even if we do not check the value of APR_IPV6_V6ONLY before 
>> setting, we
>> still   must set the option cache if we're setting APR_IPV6_V6ONLY.
>> Otherwise,   later apr_socket_opt_get calls will fail.
>>
>>   This fixes Listen directives on IPv6 machines where IPV6_V6ONLY may be
>>   enabled (i.e. FreeBSD 5.x, OpenBSD, NetBSD) where it would not 
>> properly
>>   bind to the IPv4 socket.
>
>
> This fixes an issue we saw on hermes.apache.org where the Listen 
> directive wasn't binding to the correct interfaces.
>
> I was pretty sure that httpd was doing the right thing here, but it 
> was APR that lost the setting of APR_IPV6_V6ONLY - so httpd thought 
> that IPV6_V6ONLY was disabled when it really had already been 
> enabled.  Hence, it collapsed the IPv4 address into the IPv6 socket - 
> causing it not to bind to IPv4.  -- justin
>


Mime
View raw message