Index: /trunk/server/common/patches/httpd-fixup-vhost.patch
===================================================================
--- /trunk/server/common/patches/httpd-fixup-vhost.patch	(revision 1602)
+++ /trunk/server/common/patches/httpd-fixup-vhost.patch	(revision 1602)
@@ -0,0 +1,98 @@
+commit 3b081163d6250d893838d69d9a83f217c341d657
+Author: Greg Brockman <gdb@mit.edu>
+Date:   Fri Aug 6 23:19:15 2010 -0400
+
+    Add method to merge virtual host with a main server_rec
+
+diff --git a/include/http_config.h b/include/http_config.h
+index 5e9fd51..8e6f247 100644
+--- a/include/http_config.h
++++ b/include/http_config.h
+@@ -827,6 +827,16 @@ AP_DECLARE(void) ap_register_hooks(module *m, apr_pool_t *p);
+ AP_DECLARE(void) ap_fixup_virtual_hosts(apr_pool_t *p, 
+                                         server_rec *main_server);
+ 
++/**
++ * Setup a single virtual host by merging the main server_rec into it.
++ * @param p The pool to allocate from
++ * @param main_server The server_rec with which to merge
++ * @param virt The virtual host server_rec with some set of directives to override already set
++ */
++AP_DECLARE(void) ap_fixup_virtual_host(apr_pool_t *p,
++				       server_rec *main_server,
++				       server_rec *virt);
++
+ /* For http_request.c... */
+ 
+ /**
+diff --git a/server/config.c b/server/config.c
+index 101d0e4..ef0f2ba 100644
+--- a/server/config.c
++++ b/server/config.c
+@@ -1902,38 +1902,43 @@ AP_CORE_DECLARE(const char *) ap_init_virtual_host(apr_pool_t *p,
+ }
+ 
+ 
+-AP_DECLARE(void) ap_fixup_virtual_hosts(apr_pool_t *p, server_rec *main_server)
++AP_DECLARE(void) ap_fixup_virtual_host(apr_pool_t *p, server_rec *main_server,
++                                       server_rec *virt)
+ {
+-    server_rec *virt;
++    merge_server_configs(p, main_server->module_config,
++                         virt->module_config);
+ 
+-    for (virt = main_server->next; virt; virt = virt->next) {
+-        merge_server_configs(p, main_server->module_config,
+-                             virt->module_config);
++    virt->lookup_defaults =
++        ap_merge_per_dir_configs(p, main_server->lookup_defaults,
++                                 virt->lookup_defaults);
+ 
+-        virt->lookup_defaults =
+-            ap_merge_per_dir_configs(p, main_server->lookup_defaults,
+-                                     virt->lookup_defaults);
++    if (virt->server_admin == NULL)
++        virt->server_admin = main_server->server_admin;
+ 
+-        if (virt->server_admin == NULL)
+-            virt->server_admin = main_server->server_admin;
++    if (virt->timeout == 0)
++        virt->timeout = main_server->timeout;
+ 
+-        if (virt->timeout == 0)
+-            virt->timeout = main_server->timeout;
++    if (virt->keep_alive_timeout == 0)
++        virt->keep_alive_timeout = main_server->keep_alive_timeout;
+ 
+-        if (virt->keep_alive_timeout == 0)
+-            virt->keep_alive_timeout = main_server->keep_alive_timeout;
++    if (virt->keep_alive == -1)
++        virt->keep_alive = main_server->keep_alive;
+ 
+-        if (virt->keep_alive == -1)
+-            virt->keep_alive = main_server->keep_alive;
++    if (virt->keep_alive_max == -1)
++        virt->keep_alive_max = main_server->keep_alive_max;
+ 
+-        if (virt->keep_alive_max == -1)
+-            virt->keep_alive_max = main_server->keep_alive_max;
++    /* XXX: this is really something that should be dealt with by a
++     * post-config api phase
++     */
++    ap_core_reorder_directories(p, virt);
++}
+ 
+-        /* XXX: this is really something that should be dealt with by a
+-         * post-config api phase
+-         */
+-        ap_core_reorder_directories(p, virt);
+-    }
++AP_DECLARE(void) ap_fixup_virtual_hosts(apr_pool_t *p, server_rec *main_server)
++{
++    server_rec *virt;
++
++    for (virt = main_server->next; virt; virt = virt->next)
++        ap_fixup_virtual_host(p, main_server, virt);
+ 
+     ap_core_reorder_directories(p, main_server);
+ }
Index: /trunk/server/fedora/specs/httpd.spec.patch
===================================================================
--- /trunk/server/fedora/specs/httpd.spec.patch	(revision 1601)
+++ /trunk/server/fedora/specs/httpd.spec.patch	(revision 1602)
@@ -10,5 +10,5 @@
  Source0: http://www.apache.org/dist/httpd/httpd-%{version}.tar.gz
  Source1: index.html
-@@ -55,6 +55,13 @@
+@@ -55,6 +55,14 @@
  Conflicts: pcre < 4.0
  Requires: httpd-tools = %{version}-%{release}, apr-util-ldap
@@ -20,4 +20,5 @@
 +Patch1005: httpd-2.2.x-mod_ssl-sessioncaching.patch
 +Patch1006: httpd-suexec-cloexec.patch
++Patch1007: httpd-fixup-vhost.patch
 +
  %description
@@ -32,5 +33,5 @@
  
  %description -n mod_ssl
-@@ -129,6 +137,12 @@
+@@ -129,6 +137,13 @@
  # Patch in vendor/release string
  sed "s/@RELEASE@/%{vstring}/" < %{PATCH20} | patch -p1
@@ -41,4 +42,5 @@
 +%patch1005 -p1 -b .ssl-sessioncache
 +%patch1006 -p1 -b .cloexec
++%patch1007 -p1 -b .fixup-vhost
 +
  # Safety check: prevent build if defined MMN does not equal upstream MMN.
