On Sat, Feb 21, 2004 at 11:00:25AM +0000, Alexis Huxley wrote: > I'm running apache 2.1dev, and I've posted to the -user list with > no response, so now I'm a bit stuck as to where next to try, so I'm > posting here. Apologies if this is the wrong place.
The bug is that the POD code is doing a name lookup on the first bound address, which doesn't seem to make much sense since the addresses of bound listeners are determined just before the POD is opened. It breaks on Linux systems where getaddrinfo will return AF_INET6 addresses but socket(AF_INET6...) fails. There's also some interaction with the new alloc_listener logic on HEAD I presume since nobody has complained about this with 2.0, not quite sure there. One-liner is below, proper fix is to remove the sa field from ap_pod_t and always use ap_listeners->bind_addr in its place, which I'll do unless anyone can think of a good reason to do a name lookup here. Index: server/mpm_common.c =================================================================== RCS file: /home/cvs/httpd-2.0/server/mpm_common.c,v retrieving revision 1.117 diff -u -r1.117 mpm_common.c --- server/mpm_common.c 25 Feb 2004 11:55:31 -0000 1.117 +++ server/mpm_common.c 4 Mar 2004 16:39:48 -0000 @@ -366,8 +366,7 @@ apr_file_pipe_timeout_set((*pod)->pod_in, 0); (*pod)->p = p; - apr_sockaddr_info_get(&(*pod)->sa, ap_listeners->bind_addr->hostname, - APR_UNSPEC, ap_listeners->bind_addr->port, 0, p); + (*pod)->sa = ap_listeners->bind_addr; /* close these before exec. */ apr_file_inherit_unset((*pod)->pod_in);