summaryrefslogtreecommitdiff
path: root/modules/proxy
diff options
context:
space:
mode:
authorJim Jagielski <jim@apache.org>2010-08-17 14:43:45 +0000
committerJim Jagielski <jim@apache.org>2010-08-17 14:43:45 +0000
commitef0da3905822302c815af17f3d98ccef4ad2df94 (patch)
treec3b426fc280fc598a9b0eb8681502a336e7fd631 /modules/proxy
parent2a204ae83e9e73beb57887c43618aeee010d4a67 (diff)
downloadhttpd-ef0da3905822302c815af17f3d98ccef4ad2df94.tar.gz
Further checks for non-body requests...
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@986333 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'modules/proxy')
-rw-r--r--modules/proxy/mod_proxy_http.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/modules/proxy/mod_proxy_http.c b/modules/proxy/mod_proxy_http.c
index 1d721d9377..2c93e361c3 100644
--- a/modules/proxy/mod_proxy_http.c
+++ b/modules/proxy/mod_proxy_http.c
@@ -704,8 +704,15 @@ int ap_proxy_http_request(apr_pool_t *p, request_rec *r,
* Send the HTTP/1.1 request to the remote server
*/
+ /*
+ * To be compliant, we only use 100-Continue for requests with no bodies.
+ * We also make sure we won't be talking HTTP/1.0 as well.
+ */
do_100_continue = (worker->ping_timeout_set
&& !r->header_only
+ && !r->kept_body
+ && !(apr_table_get(r->headers_in, "Content-Length"))
+ && !(apr_table_get(r->headers_in, "Transfer-Encoding"))
&& (PROXYREQ_REVERSE == r->proxyreq)
&& !(apr_table_get(r->subprocess_env, "force-proxy-request-1.0")));
@@ -1397,10 +1404,12 @@ apr_status_t ap_proxy_http_process_response(apr_pool_t * p, request_rec *r,
do_100_continue = (worker->ping_timeout_set
&& !r->header_only
+ && !r->kept_body
+ && !(apr_table_get(r->headers_in, "Content-Length"))
+ && !(apr_table_get(r->headers_in, "Transfer-Encoding"))
&& (PROXYREQ_REVERSE == r->proxyreq)
&& !(apr_table_get(r->subprocess_env, "force-proxy-request-1.0")));
-
bb = apr_brigade_create(p, c->bucket_alloc);
pass_bb = apr_brigade_create(p, c->bucket_alloc);