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 2591)
@@ -1,85 +1,101 @@
-commit 3b081163d6250d893838d69d9a83f217c341d657
-Author: Greg Brockman <gdb@mit.edu>
-Date:   Fri Aug 6 23:19:15 2010 -0400
+From e90c8e59a93e5dde747e6dec7b960d2a6f2523ab Mon Sep 17 00:00:00 2001
+From: Alexander Chernyakhovsky <achernya@mit.edu>
+Date: Fri, 3 May 2013 22:43:28 -0400
+Subject: [PATCH] Export method to fixup a single virtual host
 
-    Add method to merge virtual host with a main server_rec
+Apache normally provides ap_fixup_virtual_hosts, which merges the
+configuration from the main server into each virtual host.  Refactor
+this code to allow merging the configuration into a single virtual
+host, and export this method for use in mod_vhost_ldap.
+
+Additionally, call the newly created method in the loop in
+ap_fixup_virtual_hosts.
+---
+ include/http_config.h |  9 ++++++++
+ server/config.c       | 58 ++++++++++++++++++++++++++++-----------------------
+ 2 files changed, 41 insertions(+), 26 deletions(-)
 
 diff --git a/include/http_config.h b/include/http_config.h
-index 5e9fd51..8e6f247 100644
+index 7ee3760..e3657ea 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, 
+@@ -1012,6 +1012,15 @@ 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.
++ * Setup all virtual hosts
 + * @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
++ * @param main_server The head of the server_rec list
++ * @param virt The individual virtual host to fix
 + */
 +AP_DECLARE(void) ap_fixup_virtual_host(apr_pool_t *p,
 +				       server_rec *main_server,
 +				       server_rec *virt);
-+
- /* For http_request.c... */
  
  /**
+  * Reserve some modules slots for modules loaded by other means than
 diff --git a/server/config.c b/server/config.c
-index 101d0e4..ef0f2ba 100644
+index c1aae17..254c5d2 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,
+@@ -2245,46 +2245,52 @@ AP_DECLARE(void) ap_merge_log_config(const struct ap_logconf *old_conf,
+     }
  }
- 
  
 -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)
  {
 -    server_rec *virt;
-+    merge_server_configs(p, main_server->module_config,
-+                         virt->module_config);
+     core_dir_config *dconf =
+         ap_get_core_module_config(main_server->lookup_defaults);
+     dconf->log = &main_server->log;
  
 -    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);
++    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);
-+    if (virt->server_admin == NULL)
-+        virt->server_admin = main_server->server_admin;
++    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->timeout == 0)
-+        virt->timeout = main_server->timeout;
++    if (virt->server_admin == NULL)
++	virt->server_admin = main_server->server_admin;
  
 -        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->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 == -1)
-+        virt->keep_alive = main_server->keep_alive;
++    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_max == -1)
-+        virt->keep_alive_max = main_server->keep_alive_max;
++    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;
-+    /* XXX: this is really something that should be dealt with by a
-+     * post-config api phase
-+     */
-+    ap_core_reorder_directories(p, virt);
-+}
++    if (virt->keep_alive_max == -1)
++	virt->keep_alive_max = main_server->keep_alive_max;
+ 
+-        ap_merge_log_config(&main_server->log, &virt->log);
++    ap_merge_log_config(&main_server->log, &virt->log);
+ 
+-        dconf = ap_get_core_module_config(virt->lookup_defaults);
+-        dconf->log = &virt->log;
++    dconf = ap_get_core_module_config(virt->lookup_defaults);
++    dconf->log = &virt->log;
  
 -        /* XXX: this is really something that should be dealt with by a
@@ -88,8 +104,14 @@
 -        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);
@@ -97,2 +119,5 @@
      ap_core_reorder_directories(p, main_server);
  }
+-- 
+1.8.1.2
+
