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);