patch to apache for IPv6 only httpd

Philip M. Gollucci pgollucci at p6m7g8.com
Mon Aug 13 14:33:01 UTC 2012


What happens if you try to bind to an ip address the machine doesn't have
whether v4 or v6 with this patch ?


On Sun, Aug 12, 2012 at 11:53 PM, Curtis Villamizar <curtis at occnc.com>wrote:

>
> In message <50282D58.5070605 at FreeBSD.org>
> Olli Hauer writes:
>
> > On 2012-08-11 23:22, Curtis Villamizar wrote:
> > > FYI-
> > >
> > > This very simple patch prevents an assert when httpd is run on a
> > > server that has no IPv4 address.  An example is a BSD jail running
> > > with only an IPv6 address on the interface (no loopback so no
> > > 127.0.0.1 address to bind to).
> > >
> > > Copy the patch below into the files directory as
> > > /usr/ports/www/apache22/files/patch-server__config.c
> > >
> > > The port maintainer is on the Cc.  No bug has been reported.
> > >
> > > BTW- I noticed this a long time ago.  I don't remember if I reported
> > > it or forgot to.  Appologies if this is a duplicate.  It is not in the
> > > httpd-2.2.22.tar.bz2 tarball, in the distinfo dated 23 July 2012.
> > >
> > > Curtis
> > >
> > >
> > > --- ./server/config.c.orig  2010-10-07 09:56:54.000000000 -0700
> > > +++ ./server/config.c       2011-09-26 21:20:35.000000000 -0700
> > > @@ -1979,6 +1979,9 @@
> > >      /* NOT virtual host; don't match any real network interface */
> > >      rv = apr_sockaddr_info_get(&s->addrs->host_addr,
> > >                                 NULL, APR_INET, 0, 0, p);
> > > +    if (rv != APR_SUCCESS)
> > > +        rv = apr_sockaddr_info_get(&s->addrs->host_addr,
> > > +                                   NULL, APR_UNSPEC, 0, 0, p);
> > >      ap_assert(rv == APR_SUCCESS); /* otherwise: bug or no storage */
> > >
> > >      s->addrs->host_port = 0; /* matches any port */
> >
> > Hi Curtis,
> >
> > Is this patch also relevant if apache22 was build with
> > -DWITH_IPV6_V6ONLY ?
> >
> > --
> > olli
>
>
> No.  Apache was not built with -DWITH_IPV6_V6ONLY.  It is apache built
> with dual stack support though I don't think the code is any different
> if built with WITH_IPV6_V6ONLY.  Nothing here is conditionally
> compiled.  I also checked the .h where APR_INET is defined (in
> srclib/apr/include/apr_network_io.h).  It is unconditionally defined
> to AF_INET.
>
> The code compiles but the server fails to run, giving an assert when
> starting up.  Its a simple patch.  APR_INET6 could be used instead of
> APR_UNSPEC in the patch.
>
> Curtis
> _______________________________________________
> freebsd-apache at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-apache
> To unsubscribe, send any mail to "freebsd-apache-unsubscribe at freebsd.org"
>



-- 
---------------------------------------------------------------------------------------------
1024D/DB9B8C1C B90B FBC3 A3A1 C71A 8E70  3F8C 75B8 8FFB DB9B 8C1C
Philip M. Gollucci (pgollucci at p6m7g8.com) c: 703.336.9354
Member,                           Apache Software Foundation
Committer,                        FreeBSD Foundation
Consultant,                       P6M7G8 Inc.
Director Operations,      Ridecharge Inc.

Work like you don't need the money,
love like you'll never get hurt,
and dance like nobody's watching.


More information about the freebsd-apache mailing list