]> granicus.if.org Git - apache/commitdiff
mod_buffer: Honour the flush bucket and flush the buffer in the
authorGraham Leggett <minfrin@apache.org>
Sun, 16 Nov 2008 22:41:53 +0000 (22:41 +0000)
committerGraham Leggett <minfrin@apache.org>
Sun, 16 Nov 2008 22:41:53 +0000 (22:41 +0000)
input filter. Make sure that metadata buckets are written to
the buffer, not to the final brigade.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@718132 13f79535-47bb-0310-9956-ffa450edef68

CHANGES
modules/filters/mod_buffer.c

diff --git a/CHANGES b/CHANGES
index be59cd1daec8afea727e2108b8cdbeb1f82ff3c8..d677d6918686b3bb21488715aa3cb7542d3ad938 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -2,6 +2,10 @@
 Changes with Apache 2.3.0
 [ When backported to 2.2.x, remove entry from this file ]
 
+  *) mod_buffer: Honour the flush bucket and flush the buffer in the
+     input filter. Make sure that metadata buckets are written to
+     the buffer, not to the final brigade. [Graham Leggett]
+
   *) mod_buffer: Optimise the buffering of heap buckets when the heap
      buckets stay exactly APR_BUCKET_BUFF_SIZE long. [Graham Leggett,
      Ruediger Pluem]
index 08a800f3e280f389193a55fef3c40d2b107ec2b9..f7e15a52e86f2da6c9c582b4a21014827990d899 100644 (file)
@@ -239,10 +239,17 @@ static apr_status_t buffer_in_filter(ap_filter_t *f, apr_bucket_brigade *bb,
                     break;
                 }
 
-                /* pass flush and metadata buckets through */
-                if (APR_BUCKET_IS_FLUSH(e) || APR_BUCKET_IS_METADATA(e)) {
+                /* flush buckets clear the buffer */
+                if (APR_BUCKET_IS_FLUSH(e)) {
                     APR_BUCKET_REMOVE(e);
-                    APR_BRIGADE_INSERT_TAIL(bb, e);
+                    APR_BRIGADE_INSERT_TAIL(ctx->bb, e);
+                    break;
+                }
+
+                /* pass metadata buckets through */
+                if (APR_BUCKET_IS_METADATA(e)) {
+                    APR_BUCKET_REMOVE(e);
+                    APR_BRIGADE_INSERT_TAIL(ctx->bb, e);
                     continue;
                 }