]> granicus.if.org Git - apache/commitdiff
Get IPv6 vhosts working (again ?).
authorJeff Trawick <trawick@apache.org>
Tue, 20 Nov 2001 18:27:07 +0000 (18:27 +0000)
committerJeff Trawick <trawick@apache.org>
Tue, 20 Nov 2001 18:27:07 +0000 (18:27 +0000)
There were a couple of bogus IPv4-specific comparisons which prevented
the data structures from being built correctly in ap_fini_vhost_config().
One of these (INADDR_ANY) can be easily rewritten to work with IPv6.  The
other (DEFAULT_VHOST_ADDR) isn't necessary for IPv6.  Note that this is
because we don't support the various flavors of _default_ that
Apache-1.3+KAME-patch supports.

PR:      8118

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@92054 13f79535-47bb-0310-9956-ffa450edef68

CHANGES
server/vhost.c

diff --git a/CHANGES b/CHANGES
index ea66fbb2e69bcefb81f5ac170cc3d33205cdfd3f..20a8b5657117974a735adf889cb49aff9f7b901f 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,5 +1,7 @@
 Changes with Apache 2.0.29-dev
 
+  *) Fix a problem with IPv6 vhosts.  PR #8118  [Jeff Trawick]
+
   *) Optimization for the BNDM string-search function in
      mod_include.  [Brian Pane]
 
index 56cf8ec1a5fbd4de437556c7b105f087222132cc..ce1a130b868ad2750e64dcfa29d78ebc061a3d7f 100644 (file)
@@ -615,9 +615,11 @@ AP_DECLARE(void) ap_fini_vhost_config(apr_pool_t *p, server_rec *main_s)
         has_default_vhost_addr = 0;
         for (sar = s->addrs; sar; sar = sar->next) {
             ipaddr_chain *ic;
+            char inaddr_any[16] = {0}; /* big enough to handle IPv4 or IPv6 */
 
-            if (sar->host_addr->sa.sin.sin_addr.s_addr == DEFAULT_VHOST_ADDR
-                || sar->host_addr->sa.sin.sin_addr.s_addr == INADDR_ANY) {
+            if ((sar->host_addr->family == AF_INET &&
+                 sar->host_addr->sa.sin.sin_addr.s_addr == DEFAULT_VHOST_ADDR)
+                || !memcmp(sar->host_addr->ipaddr_ptr, inaddr_any, sar->host_addr->ipaddr_len)) {
                 ic = find_default_server(sar->host_port);
                 if (!ic || !add_name_vhost_config(p, main_s, s, sar, ic)) {
                     if (ic && ic->sar->host_port != 0) {