httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Colm MacCarthaigh <c...@stdlib.net>
Subject Re: 2.1.7 Available for Testing & Voting
Date Thu, 25 Aug 2005 13:25:11 GMT
On Thu, Aug 25, 2005 at 09:09:18AM -0400, Jeff Trawick wrote:
> >   Apache may fail to initialize on AIX with a generic Listen directive
> >   e.g. "Listen 10101" ->
> > 
> > (67)Address already in use: make_sock: could not bind to address [::]:10101
> 
> I don't know why this would be AIX-specific.
> 
> Server is configured with --enable-v4-mapped (default on most
> systems), which is supposed to mean "just get one darn socket and
> handle both IPv4 and IPv6 traffic to that port on that socket".
> 
> apr_sockaddr_info_get() is hard-coded (no control) to return a list of
> possible listening socket addresses when called from alloc_listener().
>  So we get IPv4 and IPv6 address back.
>
> In later make_sock for the IPv4 address, we set up the IPv4 socket
> fine.  In make_sock for the IPv6 address, since we're supposed to be
> capable of mapped addresses, we set IPV6_V6ONLY to 0.  So the bind
> fails since there is overlap.

The IPv4 address is bound to before the IPv6 one? Sounds like
getaddrinfo(AI_PASSIVE) is returning the addresses in an order which is
unexpected. 

RFC3493 says nothing about order of the list returned, so if AIX is
doing this, it's technically not a bug (though it differs from every
other implementation on the planet). Re-ordering the list may be 
neccessary.

-- 
Colm MacCárthaigh                        Public Key: colm+pgp@stdlib.net

Mime
View raw message