You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by rj...@apache.org on 2013/10/03 20:31:22 UTC
svn commit: r1528958 - in /httpd/httpd/branches/2.4.x: CHANGES STATUS
server/vhost.c
Author: rjung
Date: Thu Oct 3 18:31:22 2013
New Revision: 1528958
URL: http://svn.apache.org/r1528958
Log:
Wildcard name-based vhosts printed twice in apachectl -S
PR54948
Proposed by: covener
Reviewed by: jim, rjung
Backport of r1485675 and r1525000 from trunk.
Modified:
httpd/httpd/branches/2.4.x/CHANGES
httpd/httpd/branches/2.4.x/STATUS
httpd/httpd/branches/2.4.x/server/vhost.c
Modified: httpd/httpd/branches/2.4.x/CHANGES
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/CHANGES?rev=1528958&r1=1528957&r2=1528958&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/CHANGES [utf-8] (original)
+++ httpd/httpd/branches/2.4.x/CHANGES [utf-8] Thu Oct 3 18:31:22 2013
@@ -2,6 +2,9 @@
Changes with Apache 2.4.7
+ *) core: apachectl -S prints wildcard name-based virtual hosts twice.
+ PR54948 [Eric Covener]
+
*) mod_auth_basic: Add AuthBasicUseDigestAlgorithm directive to
allow migration of passwords from digest to basic authentication.
[Chris Darroch]
Modified: httpd/httpd/branches/2.4.x/STATUS
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/STATUS?rev=1528958&r1=1528957&r2=1528958&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/STATUS (original)
+++ httpd/httpd/branches/2.4.x/STATUS Thu Oct 3 18:31:22 2013
@@ -97,12 +97,6 @@ RELEASE SHOWSTOPPERS:
PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
[ start all new proposals below, under PATCHES PROPOSED. ]
- * core: name-based vhosts printed twice in apachectl -S since
- dropping NameVirtualHost directive.
- trunk patch: http://svn.apache.org/r1485675 , http://svn.apache.org/r1525000
- 2.4.x patch: http://people.apache.org/~covener/patches/httpd-2.4.x-nvh-duplicated.diff
- +1: covener, jim, rjung
-
* worker MPM: Don't forcibly kill worker threads if the child process is
exiting gracefully.
trunk: http://svn.apache.org/r1526220
Modified: httpd/httpd/branches/2.4.x/server/vhost.c
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.4.x/server/vhost.c?rev=1528958&r1=1528957&r2=1528958&view=diff
==============================================================================
--- httpd/httpd/branches/2.4.x/server/vhost.c (original)
+++ httpd/httpd/branches/2.4.x/server/vhost.c Thu Oct 3 18:31:22 2013
@@ -577,14 +577,22 @@ AP_DECLARE(void) ap_fini_vhost_config(ap
*/
for (s = main_s->next; s; s = s->next) {
+ server_addr_rec *sar_prev = NULL;
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 */
-
+ /* XXX: this treats 0.0.0.0 as a "default" server which matches no-exact-match for IPv6 */
if (!memcmp(sar->host_addr->ipaddr_ptr, inaddr_any, sar->host_addr->ipaddr_len)) {
ic = find_default_server(sar->host_port);
- if (!ic || sar->host_port != ic->sar->host_port) {
+
+ if (ic && sar->host_port == ic->sar->host_port) { /* we're a match for an existing "default server" */
+ if (!sar_prev || memcmp(sar_prev->host_addr->ipaddr_ptr, inaddr_any, sar_prev->host_addr->ipaddr_len)
+ || sar_prev->host_port != sar->host_port) {
+ add_name_vhost_config(p, main_s, s, sar, ic);
+ }
+ }
+ else {
/* No default server, or we found a default server but
** exactly one of us is a wildcard port, which means we want
** two ip-based vhosts not an NVH with two names
@@ -592,6 +600,7 @@ AP_DECLARE(void) ap_fini_vhost_config(ap
ic = new_ipaddr_chain(p, s, sar);
ic->next = default_list;
default_list = ic;
+ add_name_vhost_config(p, main_s, s, sar, ic);
}
has_default_vhost_addr = 1;
}
@@ -609,8 +618,9 @@ AP_DECLARE(void) ap_fini_vhost_config(ap
ic->next = *iphash_table_tail[bucket];
*iphash_table_tail[bucket] = ic;
}
+ add_name_vhost_config(p, main_s, s, sar, ic);
}
- add_name_vhost_config(p, main_s, s, sar, ic);
+ sar_prev = sar;
}
/* Ok now we want to set up a server_hostname if the user was