--- modules/proxy/mod_proxy.h.orig	2007-03-15 21:40:00.000000000 +0100
+++ modules/proxy/mod_proxy.h	2007-03-16 11:55:18.000000000 +0100
@@ -337,6 +337,7 @@
     char ping_timeout_set;
     int             lbset;      /* load balancer cluster set */
     char            retry_set;
+    char            forceclose;
 };
 
 /*
--- modules/proxy/mod_proxy.c.orig	2007-03-15 21:39:49.000000000 +0100
+++ modules/proxy/mod_proxy.c	2007-03-16 11:54:53.000000000 +0100
@@ -168,6 +168,14 @@
             return "KeepAlive must be On|Off";
         worker->keepalive_set = 1;
     }
+    else if (!strcasecmp(key, "forceclose")) {
+        if (!strcasecmp(val, "on"))
+            worker->forceclose = 1;
+        else if (!strcasecmp(val, "off"))
+            worker->forceclose = 0;
+        else
+            return "ForceClose must be On|Off";
+    }
     else if (!strcasecmp(key, "route")) {
         /* Worker route.
          */
--- modules/proxy/mod_proxy_ajp.c.orig	2007-03-16 11:56:47.000000000 +0100
+++ modules/proxy/mod_proxy_ajp.c	2007-03-16 11:59:13.000000000 +0100
@@ -533,7 +533,7 @@
     }
 
     backend->is_ssl = 0;
-    backend->close = 0;
+    backend->close = worker->forceclose;
 
     /* Step One: Determine Who To Connect To */
     status = ap_proxy_determine_connection(p, r, conf, worker, backend,
--- modules/proxy/mod_proxy_http.c.orig	2007-03-16 11:59:50.000000000 +0100
+++ modules/proxy/mod_proxy_http.c	2007-03-16 12:00:37.000000000 +0100
@@ -1674,6 +1674,8 @@
      */
     if (is_ssl)
         backend->close = 1;
+    else
+        backend->close = worker->forceclose;
 
     /* Step One: Determine Who To Connect To */
     if ((status = ap_proxy_determine_connection(p, r, conf, worker, backend,
