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 >