httpd-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From minf...@apache.org
Subject svn commit: r654968 - in /httpd/httpd/trunk: CHANGES modules/proxy/mod_proxy_http.c server/protocol.c
Date Fri, 09 May 2008 22:40:01 GMT
Author: minfrin
Date: Fri May  9 15:40:01 2008
New Revision: 654968

URL: http://svn.apache.org/viewvc?rev=654968&view=rev
Log:
core, mod_proxy: If a kept_body is present, it becomes safe for
subrequests to support message bodies. Make sure that safety
checks within the core and within the proxy are not triggered
when kept_body is present. This makes it possible to embed
proxied POST requests within mod_include.

Modified:
    httpd/httpd/trunk/CHANGES
    httpd/httpd/trunk/modules/proxy/mod_proxy_http.c
    httpd/httpd/trunk/server/protocol.c

Modified: httpd/httpd/trunk/CHANGES
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/CHANGES?rev=654968&r1=654967&r2=654968&view=diff
==============================================================================
--- httpd/httpd/trunk/CHANGES [utf-8] (original)
+++ httpd/httpd/trunk/CHANGES [utf-8] Fri May  9 15:40:01 2008
@@ -2,6 +2,12 @@
 Changes with Apache 2.3.0
 [ When backported to 2.2.x, remove entry from this file ]
 
+  *) core, mod_proxy: If a kept_body is present, it becomes safe for
+     subrequests to support message bodies. Make sure that safety
+     checks within the core and within the proxy are not triggered
+     when kept_body is present. This makes it possible to embed
+     proxied POST requests within mod_include. [Graham Leggett]
+
   *) mod_auth_form: Make sure the input filter stack is properly set
      up before reading the login form. Make sure the kept body filter
      is correctly inserted to ensure the body can be read a second

Modified: httpd/httpd/trunk/modules/proxy/mod_proxy_http.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/proxy/mod_proxy_http.c?rev=654968&r1=654967&r2=654968&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/proxy/mod_proxy_http.c (original)
+++ httpd/httpd/trunk/modules/proxy/mod_proxy_http.c Fri May  9 15:40:01 2008
@@ -266,6 +266,10 @@
     apr_brigade_length(bb, 0, &transferred);
     if (transferred != -1)
         conn->worker->s->transferred += transferred;
+char tmp[1024000];
+apr_size_t tlen = 1024000;
+apr_brigade_flatten(bb, tmp, &tlen);
+printf(tmp, NULL);
     status = ap_pass_brigade(origin->output_filters, bb);
     if (status != APR_SUCCESS) {
         ap_log_error(APLOG_MARK, APLOG_ERR, status, r->server,
@@ -893,8 +897,11 @@
      * 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.
+     * 
+     * An exception: when a kept_body is present, then subrequest CAN use
+     * pass request bodies, and we DONT skip the body.
      */
-    if (r->main) {
+    if (!r->kept_body && r->main) {
         /* XXX: Why DON'T sub-requests use keepalives? */
         p_conn->close++;
         if (old_cl_val) {

Modified: httpd/httpd/trunk/server/protocol.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/server/protocol.c?rev=654968&r1=654967&r2=654968&view=diff
==============================================================================
--- httpd/httpd/trunk/server/protocol.c (original)
+++ httpd/httpd/trunk/server/protocol.c Fri May  9 15:40:01 2008
@@ -1084,8 +1084,8 @@
     /* did the original request have a body?  (e.g. POST w/SSI tags)
      * if so, make sure the subrequest doesn't inherit body headers
      */
-    if (apr_table_get(r->headers_in, "Content-Length")
-        || apr_table_get(r->headers_in, "Transfer-Encoding")) {
+    if (!r->kept_body && (apr_table_get(r->headers_in, "Content-Length")
+        || apr_table_get(r->headers_in, "Transfer-Encoding"))) {
         clone_headers_no_body(rnew, r);
     } else {
         /* no body (common case).  clone headers the cheap way */



Mime
View raw message