Commit 5ad1ebda authored by William A. Rowe Jr's avatar William A. Rowe Jr
Browse files

  Revert my commits 230595/230592, restoring Jeff's commit 171205.

  Taking this all to branches/proxy-reqbody-2.0.x/ for discussion.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.0.x@230701 13f79535-47bb-0310-9956-ffa450edef68
parent 657ed16e
Loading
Loading
Loading
Loading
+5 −0
Changes for CHANGES: 5 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -42,6 +42,11 @@ Changes with Apache 2.0.55
  *) mod_rewrite: use buffered I/O to improve performance with large
     RewriteMap txt: files.  [Greg Ames]
  *) proxy HTTP: Rework the handling of request bodies to handle
     chunked input and input filters which modify content length, and
     avoid spooling arbitrary-sized request bodies in memory.
     PR 15859.  [Jeff Trawick]
Changes with Apache 2.0.54
  *) mod_cache: Add CacheIgnoreHeaders directive.  PR 30399.
+22 −57
Changes for STATUS: 22 added lines, 57 removed lines.
Original line number Diff line number Diff line
@@ -104,23 +104,14 @@ CURRENT RELEASE NOTES:

RELEASE SHOWSTOPPERS:

    * Various fixes to T-E and C-L processing from trunk and
      backport this fix from 2.1-dev:

          http://people.apache.org/~wrowe/httpd-2.0.54-proxy-request.patch


      proxy HTTP: Rework the handling of request bodies to handle
      chunked input and input filters which modify content length, and
      avoid spooling arbitrary-sized request bodies in memory.
      PR: 15859 [Jeff Trawick]
    * Various fixes to T-E and C-L processing from trunk

      Refactor mod_proxy_http.c's Transfer-Encoding/Content-Length elections
      since they didn't follow RFC 2616, in fact didn't seem to make much
      sense at all.  Patch to migrate request-body-handling from trunk/ based
      on 2.1-dev request body handling behavior (although just a bit more
      conservative on the side of C-L spooling)...

          http://people.apache.org/~wrowe/httpd-2.0-proxy-request-3.patch
      Revert r219061 to properly test this patch, as r219061 masks the
      underlying bug (although it is a -good- patch in and of itself).

@@ -131,30 +122,10 @@ RELEASE SHOWSTOPPERS:
           the unrelated stuff removed.

           unrelated change: s/apr_strnatcasecmp/strcasecmp/
             wrowe notes: for correctness, will commit seperately
           unrelated change: s/b/bb/ on variable+parameter names a few times
             wrowe notes: for legibility, will commit seperately
           unrelated change: whitespaces changes all over the shop
             wrowe notes: for legibility, will commit seperately
           spurious change:? send_request_body() appears to have been inlined
             wrowe notes: to better integrate request handling, both performance
                          and legibility of the resulting code, matching trunk/
                          This is moot as the original backport is reverted.
           unrelated change: Via header handling
             wrowe notes: per the current mod_proxy_http.c behavior in trunk,
                          this request passing issue too should be fixed.
                          Can commit this seperately

           wrowe offers; this is a backport of cumulative changes, yes it's
           not unit by unit, as it is ment to *closely* reflect the current
           state of trunk/, to help developers identify what has been fixed
           in 2.0, and what is not in sync with trunk/.  If you prefer, some
           of the simple changes you mention, strcasecmp, bb, whitespace, will
           be layered one-at-a-time to improve the legibility of history.
           However, it was clearly impossible for most devs to even review the
           current state of code, never mind the patch.  This is the net-total
           change, as opposed to expecting developers to layer a set of four
           or five patches.

         trawick noted on list: we elected C-L not for efficiency, but because
                 it's the most widely supported [paraphrasing]
@@ -169,9 +140,7 @@ RELEASE SHOWSTOPPERS:
         wrowe   adds; After testing, I've determined one brigade isn't enough,
                 so I've extended this to a loop up to MAX_MEM_SPOOL, we will
                 fetch up enough body to fill MAX_MEM_SPOOL and hopefully
                 hit the C-L code path most of the time.  There is a small pad
                 in case an input filter cannot process enough of the body as
                 a single 'unit' and refuses to proceed without a larger buffer.
                 hit the C-L code path most of the time.

         trawick We are counting bytes in stream_reqbody_cl but filters can
                 change the size? [p]
@@ -198,11 +167,25 @@ RELEASE SHOWSTOPPERS:
                 the issues of correctly sending the body and choosing the
                 transport flavor.

    * TRACE must not have a request body per RFC2616; see the 
      http://people.apache.org/~wrowe/httpd-2.0-trace.patch below for one of two 
      alternatives.  The other alternative; simply hack mod_proxy.c to reject 
      TRACE when a body is seen, although wrowe believes the whole solution is
      the better option.
    * http://svn.apache.org/viewcvs?rev=171205&view=rev [committed]
      backport this fix from 2.1-dev:
      proxy HTTP: Rework the handling of request bodies to handle
      chunked input and input filters which modify content length, and
      avoid spooling arbitrary-sized request bodies in memory.
      PR: 15859

        +1 trawick, jerenkrantz, jim
        -1 wrowe
           This patch needs to be reverted or ammended by the patch above;
           this resulting code is more complex, yet equally faulty in it's
           C-L/T-E elections for a number of specific cases.  No opinion
           between the choice of reverting and re-backporting, or simply
           patching-the-patch.

    * TRACE must not have a request body per RFC2616; see the -trace.patch
      below for one of two alternatives.  The other alternative; simply
      hack mod_proxy.c to reject TRACE when a body is seen, again see that
      -trace.patch for an illustration.


PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
@@ -249,24 +232,6 @@ PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
          nd: I'm going to reverse the default
          jerenkrantz, striker: I'm confused as to the status of this backport.

    * Rewrite how proxy sends its request to allow input bodies to 
      morph the request bodies.  Previously, if an input filter
      changed the request body, the original C-L would be sent which
      would be incorrect.

      Due to HTTP compliance, we must either send the body T-E: chunked
      or include a C-L for the request body.  Connection: Close is not
      an option. 

      A newer version of this fix that acts even better (spools to disk) has
      been committed to trunk.  The equivalent patch for 2.0.x is at:
         http://www.apache.org/~trawick/20reqbody.txt

      +1: trawick, jerenkrantz, jim
     Previous votes (before trawick's recent 2.1 commits):
      +1: stoddard, striker, jim
      -1: brianp (we need a more robust solution than what's in 2.1 right now),

    * support/check_forensic: Fix tempfile usage
      svn rev 125495, 126224
      jerenkrantz says: r126224 fixes brokenness with r125495 on Solaris.
+484 −51

File changed.

Preview size limit exceeded, changes collapsed.