Here's a patch that removes the explicit discrimination against
keep-alives for sub requests.
--
Brian Akins
Lead Systems Engineer
CNN Internet Technologies
diff -ru httpd-2.1.9-beta/modules/proxy/mod_proxy_http.c
httpd-2.1.9-beta-new/modules/proxy/mod_proxy_http.c
--- httpd-2.1.9-beta/modules/proxy/mod_proxy_http.c 2005-10-21
17:54:27.000000000 -0400
+++ httpd-2.1.9-beta-new/modules/proxy/mod_proxy_http.c 2005-11-15
07:40:25.000000000 -0500
@@ -802,15 +802,9 @@
/* We have headers, let's figure out our request body... */
input_brigade = apr_brigade_create(p, bucket_alloc);
- /* sub-requests never use keepalives, and mustn't pass request bodies.
- * Because the new logic looks at input_brigade, we will self-terminate
- * input_brigade and jump past all of the request body logic...
- * Reading anything with ap_get_brigade is likely to consume the
- * main request's body or read beyond EOS - which would be unplesant.
+ /* sub-requests mustn't pass request bodies.
*/
if (r->main) {
- /* XXX: Why DON'T sub-requests use keepalives? */
- p_conn->close++;
if (old_cl_val) {
old_cl_val = NULL;
apr_table_unset(r->headers_in, "Content-Length");
@@ -1662,22 +1656,16 @@
"proxy: HTTP: serving URL %s", url);
- /* only use stored info for top-level pages. Sub requests don't share
- * in keepalives
- */
- if (!r->main) {
- backend = (proxy_conn_rec *) ap_get_module_config(c->conn_config,
+ backend = (proxy_conn_rec *) ap_get_module_config(c->conn_config,
&proxy_http_module);
- }
+
/* create space for state information */
if (!backend) {
if ((status = ap_proxy_acquire_connection(proxy_function, &backend,
worker, r->server)) != OK)
goto cleanup;
-
- if (!r->main) {
- ap_set_module_config(c->conn_config, &proxy_http_module, backend);
- }
+
+ ap_set_module_config(c->conn_config, &proxy_http_module, backend);
}
backend->is_ssl = is_ssl;