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: [EMAIL PROTECTED]
