]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
Further checks for non-body requests...
authorJim Jagielski <jim@apache.org>
Tue, 17 Aug 2010 14:43:45 +0000 (14:43 +0000)
committerJim Jagielski <jim@apache.org>
Tue, 17 Aug 2010 14:43:45 +0000 (14:43 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@986333 13f79535-47bb-0310-9956-ffa450edef68

modules/proxy/mod_proxy_http.c

index 1d721d9377914493437d673aa1152a0f323d6b52..2c93e361c3ca9e89581838e1dfbc92dc82f3521a 100644 (file)
@@ -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);