From b31fef4ee02c663afb2f4be538ca6b7a2f0a6c07 Mon Sep 17 00:00:00 2001 From: Joe Orton Date: Mon, 13 Sep 2004 13:16:32 +0000 Subject: [PATCH] * server/core.c (default_handler): Fix the test for whether to split a file into several buckets: it is needed regardless of whether sendfile is enabled, and APR_HAS_LARGE_FILES is not sufficient to determine whether sizeof(apr_off_t) is greater than sizeof(apr_off_t). PR: 28898 git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@105111 13f79535-47bb-0310-9956-ffa450edef68 --- server/core.c | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/server/core.c b/server/core.c index e6c664396c..ae8d0a4d9d 100644 --- a/server/core.c +++ b/server/core.c @@ -3681,17 +3681,13 @@ static int default_handler(request_rec *r) } bb = apr_brigade_create(r->pool, c->bucket_alloc); -#if APR_HAS_LARGE_FILES -#if APR_HAS_SENDFILE - if ((d->enable_sendfile != ENABLE_SENDFILE_OFF) && -#else - if ( -#endif - (r->finfo.size > AP_MAX_SENDFILE)) { - /* APR_HAS_LARGE_FILES issue; must split into mutiple buckets, - * no greater than MAX(apr_size_t), and more granular than that - * in case the brigade code/filters attempt to read it directly. - */ + + /* For platforms where the size of the file may be larger than + * that which can be stored in a single bucket (whether the + * length field is an apr_size_t), split it into several + * buckets */ + if (sizeof(apr_off_t) > sizeof(apr_size_t) + && r->finfo.size > AP_MAX_SENDFILE) { apr_off_t fsize = r->finfo.size; e = apr_bucket_file_create(fd, 0, AP_MAX_SENDFILE, r->pool, c->bucket_alloc); @@ -3705,7 +3701,6 @@ static int default_handler(request_rec *r) e->length = (apr_size_t)fsize; /* Resize just the last bucket */ } else -#endif e = apr_bucket_file_create(fd, 0, (apr_size_t)r->finfo.size, r->pool, c->bucket_alloc); -- 2.50.1