It seems like this patch should be at a higher level. Don't we also have problems with POST to any other sort of included subrequest being transformed into a GET but retaining the content-length or other irrelevant (nasty) headers?
Is there a more appropriate place to make this correction for the benefit of all sorts of subrequest includes? Bill At 03:24 AM 11/8/2002, [EMAIL PROTECTED] wrote: >brianp 2002/11/08 01:24:00 > > Modified: . CHANGES > modules/proxy proxy_http.c > Log: > When doing a GET of a proxied URL as a subrequest within > a POSTed request, don't send the original POST's Content-Length > as part of the header for the GET. > > Revision Changes Path > 1.971 +4 -0 httpd-2.0/CHANGES > > Index: CHANGES > =================================================================== > RCS file: /home/cvs/httpd-2.0/CHANGES,v > retrieving revision 1.970 > retrieving revision 1.971 > diff -u -r1.970 -r1.971 > --- CHANGES 7 Nov 2002 23:11:09 -0000 1.970 > +++ CHANGES 8 Nov 2002 09:24:00 -0000 1.971 > @@ -1,5 +1,9 @@ > Changes with Apache 2.0.44 > > + *) Fix a bug in which mod_proxy sent an invalid Content-Length > + when a proxied URL was invoked as a server-side include within > + a page generated in response to a form POST. [Brian Pane] > + > *) Added code to process min and max file size directives and to > init the expirychk flag in mod_disk_cache. Added a clarifying > comment to cache_util. [Paul J. Reder] > > > > 1.164 +19 -0 httpd-2.0/modules/proxy/proxy_http.c > > Index: proxy_http.c > =================================================================== > RCS file: /home/cvs/httpd-2.0/modules/proxy/proxy_http.c,v > retrieving revision 1.163 > retrieving revision 1.164 > diff -u -r1.163 -r1.164 > --- proxy_http.c 25 Oct 2002 20:58:55 -0000 1.163 > +++ proxy_http.c 8 Nov 2002 09:24:00 -0000 1.164 > @@ -597,7 +597,26 @@ > || !apr_strnatcasecmp(headers_in[counter].key, >"If-None-Match")) { > continue; > } > + > + /* If you POST to a page that gets server-side parsed > + * by mod_include, and the parsing results in a reverse > + * proxy call, the proxied request will be a GET, but > + * its request_rec will have inherited the Content-Length > + * of the original request (the POST for the enclosing > + * page). We can't send the original POST's request body > + * as part of the proxied subrequest, so we need to avoid > + * sending the corresponding content length. Otherwise, > + * the server to which we're proxying will sit there > + * forever, waiting for a request body that will never > + * arrive. > + */ > + if ((r->method_number == M_GET) && headers_in[counter].key && > + !apr_strnatcasecmp(headers_in[counter].key, > + "Content-Length")) { > + continue; > + } > } > + > > buf = apr_pstrcat(p, headers_in[counter].key, ": ", > headers_in[counter].val, CRLF, > > >