On Wednesday 13 July 2011 01:24:34 Jeff Trawick wrote:
> On Mon, Jul 11, 2011 at 8:21 AM, Barry Scott <barry.sc...@onelan.co.uk> wrote:
> > We are porting our application to Fedora 15 and to systemd from SysV init.
> > The httpd configuraturation we are using work without problem on earlier
> > Fedora 13 systems.
> >
> > We are hitting an odd problem with httpd handling requests on localhost:80
> > over IPv4. The configuration allows access without authenication but we
> > get a 401 error. However repeat the request using IPv6 and it it works.
> >
> > If we restart httpd (systemctl restart httpd.service) the problem goes
> > away. We have a set of identical hardware running identical software
> > with identical config and not all systems show this problem. Leading me
> > to expect its a race condition during startup.
> >
> > Here is a fragment of the httpd.conf file:
> >
> > <VirtualHost 127.0.0.1:80 [::1]:80>
> >    ... rewrite rules ...
> >    <Location /XML>
> >
> >        #+ localhost auth file
> >        Order allow,deny
> >        Allow from 127.0.0.1
> >        Allow from ::1
> >        Satisfy Any
> >        #- localhost auth file
> >
> >    </Location>
> >    ...
> > </VirtualHost>
> >
> > I test this with:
> >
> > curl -4 http://localhost:80/XML/
> > curl -6 http://localhost:80/XML/
> 
> How does the client IP address show up in error and access logs?

I'm in the middle of instrumenting the code to find out what is going on.
I've attached an edited log show httpd coming up during boot and failing
followed by systemctl restart httpd.service after boot.
The attached log is the stdout from systemd starting httpd.service.

I have also made a change to the config to use port _default_:8080 for
the public facing server and 127.0.0.1:80 for the internal facing server.
With that change httpd will not start up.

You can see the failure log:

[823] info: [Tue Jul 12 17:51:43 2011] [error] (EAI 9)Address family for 
hostname not supported: Could not resolve host name 127.0.0.1 -- ignoring!

The lines with QQQ on them are my instrumentation. I've patched
httpd-2.2.17/server/vhost.c and apr-1.4.5/network_io/unix/sockaddr.c.

The instrumentation seems to show me that the httpd and apr code
is fine.

My next step is to instument glibc getaddrinfo to find out why it
returns EAI_ADDRFAMILY. Have you seen issues with getaddrinfo
elsewhere?

We are using kernel-PAE-2.6.38.8-93.fc15.i686 and glibc-2.14-2.i686

I can provide the patches and full config if that is useful.

Barry

[823] info: /etc/rc.d/init.d/functions: line 58: /dev/stderr: No such device or address
[823] info: Starting httpd: QQQ: apr_sockaddr_info_get( hostname=(null), family=2, port=0, flags=0x0 )
[823] info: QQQ: find_addresses (1)( hostname=(null), family=2, port=0, flags=0x0 )
[823] info: QQQ: find_addresses call_resolver family=2
[823] info: QQQ: call_resolver( hostname=(null), family=2, port=0, flags=0x0 )
[823] info: QQQ: call_resolver getaddrinfo( hostname=(null), servname=0 )
[823] info: QQQ: call_resolver ai_flags 0x1
[823] info: QQQ: call_resolver  error 0
[823] info: QQQ: call_resolver APR_SUCCESS
[823] info: QQQ: get_addresses( 127.0.0.1:80 )
[823] info: QQQ: apr_sockaddr_info_get( hostname=127.0.0.1, family=0, port=80, flags=0x0 )
[823] info: QQQ: find_addresses (1)( hostname=127.0.0.1, family=0, port=80, flags=0x0 )
[823] info: QQQ: find_addresses call_resolver family=0
[823] info: QQQ: call_resolver( hostname=127.0.0.1, family=0, port=80, flags=0x0 )
[823] info: QQQ: call_resolver getaddrinfo( hostname=127.0.0.1, servname=(null) )
[823] info: QQQ: call_resolver ai_flags 0x20
[823] info: QQQ: call_resolver  error -9
[823] info: [Tue Jul 12 17:51:43 2011] [error] (EAI 9)Address family for hostname not supported: Could not resolve host name 127.0.0.1 -- ignoring!
[823] info: QQQ: get_addresses( [::1]:80 )
[823] info: QQQ: apr_sockaddr_info_get( hostname=::1, family=0, port=80, flags=0x0 )
[823] info: QQQ: find_addresses (1)( hostname=::1, family=0, port=80, flags=0x0 )
[823] info: QQQ: find_addresses call_resolver family=0
[823] info: QQQ: call_resolver( hostname=::1, family=0, port=80, flags=0x0 )
[823] info: QQQ: call_resolver getaddrinfo( hostname=::1, servname=(null) )
[823] info: QQQ: call_resolver ai_flags 0x20
[823] info: QQQ: call_resolver  error 0
[823] info: QQQ: call_resolver APR_SUCCESS
[823] info: QQQ: get_addresses( _default_:8080 )
[823] info: QQQ: apr_sockaddr_info_get( hostname=255.255.255.255, family=2, port=8080, flags=0x0 )
[823] info: QQQ: find_addresses (1)( hostname=255.255.255.255, family=2, port=8080, flags=0x0 )
[823] info: QQQ: find_addresses call_resolver family=2
[823] info: QQQ: call_resolver( hostname=255.255.255.255, family=2, port=8080, flags=0x0 )
[823] info: QQQ: call_resolver getaddrinfo( hostname=255.255.255.255, servname=(null) )
[823] info: QQQ: call_resolver ai_flags 0x0
[823] info: QQQ: call_resolver  error 0
[823] info: QQQ: call_resolver APR_SUCCESS
[823] info: QQQ: get_addresses( _default_:443 )
[823] info: QQQ: apr_sockaddr_info_get( hostname=255.255.255.255, family=2, port=443, flags=0x0 )
[823] info: QQQ: find_addresses (1)( hostname=255.255.255.255, family=2, port=443, flags=0x0 )
[823] info: QQQ: find_addresses call_resolver family=2
[823] info: QQQ: call_resolver( hostname=255.255.255.255, family=2, port=443, flags=0x0 )
[823] info: QQQ: call_resolver getaddrinfo( hostname=255.255.255.255, servname=(null) )
[823] info: QQQ: call_resolver ai_flags 0x0
[823] info: QQQ: call_resolver  error 0
[823] info: QQQ: call_resolver APR_SUCCESS
[823] info: QQQ: apr_sockaddr_info_get( hostname=127.0.0.1, family=0, port=80, flags=0x0 )
[823] info: QQQ: find_addresses (1)( hostname=127.0.0.1, family=0, port=80, flags=0x0 )
[823] info: QQQ: find_addresses call_resolver family=0
[823] info: QQQ: call_resolver( hostname=127.0.0.1, family=0, port=80, flags=0x0 )
[823] info: QQQ: call_resolver getaddrinfo( hostname=127.0.0.1, servname=(null) )
[823] info: QQQ: call_resolver ai_flags 0x20
[823] info: QQQ: call_resolver  error -9
[823] info: [Tue Jul 12 17:51:43 2011] [crit] (EAI 9)Address family for hostname not supported: alloc_listener: failed to set up sockaddr for 127.0.0.1
[823] info: Syntax error on line 432 of /etc/httpd/conf/httpd.conf:
[823] info: Listen setup failed
[823] info: #033[60G[#033[0;31mFAILED#033[0;39m]




[1280] info: /etc/rc.d/init.d/functions: line 58: /dev/stderr: No such device or address
[1280] info: Starting httpd: QQQ: apr_sockaddr_info_get( hostname=(null), family=2, port=0, flags=0x0 )
[1280] info: QQQ: find_addresses (1)( hostname=(null), family=2, port=0, flags=0x0 )
[1280] info: QQQ: find_addresses call_resolver family=2
[1280] info: QQQ: call_resolver( hostname=(null), family=2, port=0, flags=0x0 )
[1280] info: QQQ: call_resolver getaddrinfo( hostname=(null), servname=0 )
[1280] info: QQQ: call_resolver ai_flags 0x1
[1280] info: QQQ: call_resolver  error 0
[1280] info: QQQ: call_resolver APR_SUCCESS
[1280] info: QQQ: get_addresses( 127.0.0.1:80 )
[1280] info: QQQ: apr_sockaddr_info_get( hostname=127.0.0.1, family=0, port=80, flags=0x0 )
[1280] info: QQQ: find_addresses (1)( hostname=127.0.0.1, family=0, port=80, flags=0x0 )
[1280] info: QQQ: find_addresses call_resolver family=0
[1280] info: QQQ: call_resolver( hostname=127.0.0.1, family=0, port=80, flags=0x0 )
[1280] info: QQQ: call_resolver getaddrinfo( hostname=127.0.0.1, servname=(null) )
[1280] info: QQQ: call_resolver ai_flags 0x20
[1280] info: QQQ: call_resolver  error 0
[1280] info: QQQ: call_resolver APR_SUCCESS
[1280] info: QQQ: get_addresses( [::1]:80 )
[1280] info: QQQ: apr_sockaddr_info_get( hostname=::1, family=0, port=80, flags=0x0 )
[1280] info: QQQ: find_addresses (1)( hostname=::1, family=0, port=80, flags=0x0 )
[1280] info: QQQ: find_addresses call_resolver family=0
[1280] info: QQQ: call_resolver( hostname=::1, family=0, port=80, flags=0x0 )
[1280] info: QQQ: call_resolver getaddrinfo( hostname=::1, servname=(null) )
[1280] info: QQQ: call_resolver ai_flags 0x20
[1280] info: QQQ: call_resolver  error 0
[1280] info: QQQ: call_resolver APR_SUCCESS
[1280] info: QQQ: get_addresses( _default_:8080 )
[1280] info: QQQ: apr_sockaddr_info_get( hostname=255.255.255.255, family=2, port=8080, flags=0x0 )
[1280] info: QQQ: find_addresses (1)( hostname=255.255.255.255, family=2, port=8080, flags=0x0 )
[1280] info: QQQ: find_addresses call_resolver family=2
[1280] info: QQQ: call_resolver( hostname=255.255.255.255, family=2, port=8080, flags=0x0 )
[1280] info: QQQ: call_resolver getaddrinfo( hostname=255.255.255.255, servname=(null) )
[1280] info: QQQ: call_resolver ai_flags 0x0
[1280] info: QQQ: call_resolver  error 0
[1280] info: QQQ: call_resolver APR_SUCCESS
[1280] info: QQQ: get_addresses( _default_:443 )
[1280] info: QQQ: apr_sockaddr_info_get( hostname=255.255.255.255, family=2, port=443, flags=0x0 )
[1280] info: QQQ: find_addresses (1)( hostname=255.255.255.255, family=2, port=443, flags=0x0 )
[1280] info: QQQ: find_addresses call_resolver family=2
[1280] info: QQQ: call_resolver( hostname=255.255.255.255, family=2, port=443, flags=0x0 )
[1280] info: QQQ: call_resolver getaddrinfo( hostname=255.255.255.255, servname=(null) )
[1280] info: QQQ: call_resolver ai_flags 0x0
[1280] info: QQQ: call_resolver  error 0
[1280] info: QQQ: call_resolver APR_SUCCESS
[1280] info: QQQ: apr_sockaddr_info_get( hostname=127.0.0.1, family=0, port=80, flags=0x0 )
[1280] info: QQQ: find_addresses (1)( hostname=127.0.0.1, family=0, port=80, flags=0x0 )
[1280] info: QQQ: find_addresses call_resolver family=0
[1280] info: QQQ: call_resolver( hostname=127.0.0.1, family=0, port=80, flags=0x0 )
[1280] info: QQQ: call_resolver getaddrinfo( hostname=127.0.0.1, servname=(null) )
[1280] info: QQQ: call_resolver ai_flags 0x20
[1280] info: QQQ: call_resolver  error 0
[1280] info: QQQ: call_resolver APR_SUCCESS
[1280] info: QQQ: apr_sockaddr_info_get( hostname=(null), family=0, port=443, flags=0x0 )
[1280] info: QQQ: find_addresses (1)( hostname=(null), family=0, port=443, flags=0x0 )
[1280] info: QQQ: find_addresses call_resolver family=0
[1280] info: QQQ: call_resolver( hostname=(null), family=0, port=443, flags=0x0 )
[1280] info: QQQ: call_resolver getaddrinfo( hostname=(null), servname=443 )
[1280] info: QQQ: call_resolver ai_flags 0x21
[1280] info: QQQ: call_resolver  error 0
[1280] info: QQQ: call_resolver APR_SUCCESS
[1280] info: QQQ: apr_sockaddr_info_get( hostname=(null), family=0, port=8080, flags=0x0 )
[1280] info: QQQ: find_addresses (1)( hostname=(null), family=0, port=8080, flags=0x0 )
[1280] info: QQQ: find_addresses call_resolver family=0
[1280] info: QQQ: call_resolver( hostname=(null), family=0, port=8080, flags=0x0 )
[1280] info: QQQ: call_resolver getaddrinfo( hostname=(null), servname=8080 )
[1280] info: QQQ: call_resolver ai_flags 0x21
[1280] info: QQQ: call_resolver  error 0
[1280] info: QQQ: call_resolver APR_SUCCESS
[1280] info: QQQ: apr_sockaddr_info_get( hostname=localhost.localdomain, family=0, port=0, flags=0x0 )
[1280] info: QQQ: find_addresses (1)( hostname=localhost.localdomain, family=0, port=0, flags=0x0 )
[1280] info: QQQ: find_addresses call_resolver family=0
[1280] info: QQQ: call_resolver( hostname=localhost.localdomain, family=0, port=0, flags=0x0 )
[1280] info: QQQ: call_resolver getaddrinfo( hostname=localhost.localdomain, servname=(null) )
[1280] info: QQQ: call_resolver ai_flags 0x20
[1280] info: QQQ: call_resolver  error 0
[1280] info: QQQ: call_resolver APR_SUCCESS
[1280] info: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName
[1280] info: QQQ: apr_sockaddr_info_get( hostname=(null), family=2, port=0, flags=0x0 )
[1280] info: QQQ: find_addresses (1)( hostname=(null), family=2, port=0, flags=0x0 )
[1280] info: QQQ: find_addresses call_resolver family=2
[1280] info: QQQ: call_resolver( hostname=(null), family=2, port=0, flags=0x0 )
[1280] info: QQQ: call_resolver getaddrinfo( hostname=(null), servname=0 )
[1280] info: QQQ: call_resolver ai_flags 0x1
[1280] info: QQQ: call_resolver  error 0
[1280] info: QQQ: call_resolver APR_SUCCESS
[1280] info: #033[60G[#033[0;32m  OK  #033[0;39m]

---------------------------------------------------------------------
The official User-To-User support forum of the Apache HTTP Server Project.
See <URL:http://httpd.apache.org/userslist.html> for more info.
To unsubscribe, e-mail: users-unsubscr...@httpd.apache.org
   "   from the digest: users-digest-unsubscr...@httpd.apache.org
For additional commands, e-mail: users-h...@httpd.apache.org

Reply via email to