You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by rp...@apache.org on 2005/12/18 12:17:40 UTC

svn commit: r357454 - in /httpd/httpd/branches/2.0.x: CHANGES modules/http/http_core.c

Author: rpluem
Date: Sun Dec 18 03:17:32 2005
New Revision: 357454

URL: http://svn.apache.org/viewcvs?rev=357454&view=rev
Log:
Backport of r357328 from trunk:

* Fix ap_http_chunk_filter to create correct chunks in the case that a
  flush bucket is pre- and postfixed by data buckets in the brigade.

Submitted by: Ruediger Pluem
Reviewed by: Justin Erenkrantz, Joe Orton, Jim Jagielski

Modified:
    httpd/httpd/branches/2.0.x/CHANGES
    httpd/httpd/branches/2.0.x/modules/http/http_core.c

Modified: httpd/httpd/branches/2.0.x/CHANGES
URL: http://svn.apache.org/viewcvs/httpd/httpd/branches/2.0.x/CHANGES?rev=357454&r1=357453&r2=357454&view=diff
==============================================================================
--- httpd/httpd/branches/2.0.x/CHANGES [utf-8] (original)
+++ httpd/httpd/branches/2.0.x/CHANGES [utf-8] Sun Dec 18 03:17:32 2005
@@ -1,6 +1,9 @@
                                                          -*- coding: utf-8 -*-
 Changes with Apache 2.0.56
 
+  *) Chunk filter: Fix chunk filter to create correct chunks in the case that
+     a flush bucket is surrounded by data buckets. [Ruediger Pluem]
+
   *) SECURITY: CVE-2005-3352 (cve.mitre.org)
      mod_imap: Escape untrusted referer header before outputting in HTML
      to avoid potential cross-site scripting.  Change also made to

Modified: httpd/httpd/branches/2.0.x/modules/http/http_core.c
URL: http://svn.apache.org/viewcvs/httpd/httpd/branches/2.0.x/modules/http/http_core.c?rev=357454&r1=357453&r2=357454&view=diff
==============================================================================
--- httpd/httpd/branches/2.0.x/modules/http/http_core.c (original)
+++ httpd/httpd/branches/2.0.x/modules/http/http_core.c Sun Dec 18 03:17:32 2005
@@ -124,6 +124,8 @@
             }
             if (APR_BUCKET_IS_FLUSH(e)) {
                 flush = e;
+                more = apr_brigade_split(b, APR_BUCKET_NEXT(e));
+                break;
             }
             else if (e->length == (apr_size_t)-1) {
                 /* unknown amount of data (e.g. a pipe) */