summaryrefslogtreecommitdiffstats
path: root/modules/http
diff options
context:
space:
mode:
authorRyan Bloom <rbb@apache.org>2001-01-24 00:23:37 +0100
committerRyan Bloom <rbb@apache.org>2001-01-24 00:23:37 +0100
commit5de783433809e7e011d5826e6039514f97a6958b (patch)
tree6f67147b3625edfccc873a2c3d954d716017cdc6 /modules/http
parentFix the core_output_filter. It doesn't make any sense to send less than (diff)
downloadapache2-5de783433809e7e011d5826e6039514f97a6958b.tar.xz
apache2-5de783433809e7e011d5826e6039514f97a6958b.zip
Allow the core_output_filter to deal with multiple file buckets in the
same brigade. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@87801 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'modules/http')
-rw-r--r--modules/http/http_core.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/modules/http/http_core.c b/modules/http/http_core.c
index 2755949da4..aaa64f9065 100644
--- a/modules/http/http_core.c
+++ b/modules/http/http_core.c
@@ -3356,6 +3356,16 @@ static apr_status_t core_output_filter(ap_filter_t *f, apr_bucket_brigade *b)
else if (APR_BUCKET_IS_FILE(e) && (e->length >= AP_MIN_SENDFILE_BYTES)) {
apr_bucket_shared *s = e->data;
apr_bucket_file *a = s->data;
+
+ /* We can't handle more than one file bucket at a time
+ * so we split here and send the file we have already found.
+ */
+ if (fd) {
+ more = apr_brigade_split(b, APR_BUCKET_NEXT(e));
+ ap_save_brigade(f, &ctx->b, &more);
+ break;
+ }
+
fd = a->fd;
flen = e->length;
foffset = s->start;