By uncommenting just one line from the default config you can get to
this misconfiguration:
NameVirtualHost *:80
<VirtualHost _default_:443>
</VirtualHost>
which is not handled properly by the vhost code - httpd serves requests
with c->base_server == NULL, httpd -tS segfaults, etc.
The check below in vhost.c:remove_unused_name_vhosts seems to be the
cause: it stops traversing default_list if it finds any _default_ vhost,
so the bogus ipaddr_chain structure further on is never removed; I don't
see what this check is for.
--- server/vhost.c 11 Mar 2004 19:46:35 -0000 1.85
+++ server/vhost.c 11 Mar 2004 20:34:20 -0000
@@ -500,12 +500,6 @@
ic->sar->virthost, ic->sar->host_port);
*pic = ic->next;
}
- else if (ic->names == NULL) {
- /* if server != NULL and names == NULL then we're done
- * looking at NameVirtualHosts
- */
- break;
- }
else {
pic = &ic->next;
}
with this applied the bogus ipaddr_chain is found and removed:
[Thu Mar 11 20:36:38 2004] [warn] NameVirtualHost *:80 has no VirtualHosts
and everything seems to work fine. I'm not really familiar with this
code - any comments?
joe