You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by jo...@apache.org on 2004/09/13 15:16:33 UTC

cvs commit: httpd-2.0/server core.c

jorton      2004/09/13 06:16:33

  Modified:    server   core.c
  Log:
  * 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
  
  Revision  Changes    Path
  1.284     +7 -12     httpd-2.0/server/core.c
  
  Index: core.c
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/server/core.c,v
  retrieving revision 1.283
  retrieving revision 1.284
  diff -d -w -u -r1.283 -r1.284
  --- core.c	17 Jul 2004 08:29:48 -0000	1.283
  +++ core.c	13 Sep 2004 13:16:32 -0000	1.284
  @@ -3681,17 +3681,13 @@
           }
   
           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 @@
               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);