From 8944de6fc2bbefdba72b5d7a5c849c0b7ad1740a Mon Sep 17 00:00:00 2001 From: Graham Leggett Date: Sun, 16 Nov 2008 22:41:53 +0000 Subject: [PATCH] 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. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@718132 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 4 ++++ modules/filters/mod_buffer.c | 13 ++++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/CHANGES b/CHANGES index be59cd1dae..d677d69186 100644 --- 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] diff --git a/modules/filters/mod_buffer.c b/modules/filters/mod_buffer.c index 08a800f3e2..f7e15a52e8 100644 --- a/modules/filters/mod_buffer.c +++ b/modules/filters/mod_buffer.c @@ -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; } -- 2.50.1