Commit 5188d27a authored by Graham Leggett's avatar Graham Leggett
Browse files

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
parent d217d1a1
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -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]
+10 −3
Original line number Diff line number Diff line
@@ -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;
                }