httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Colm MacCarthaigh <c...@stdlib.net>
Subject Re: [vote] 2.1.9 as beta
Date Wed, 02 Nov 2005 10:44:02 GMT
On Wed, Nov 02, 2005 at 10:33:50AM +0000, Joe Orton wrote:
> On Wed, Nov 02, 2005 at 10:25:54AM +0000, Colm MacCarthaigh wrote:
> > Doing a complete fresh install from tarball I got caught out by the
> > largefile support. Although we no longer need any magic CFLAGS for httpd
> > itself to handle > 2GB files, we do for sendfile for to work
> > - at least on my platform (Linux IA64). 
> 
> What is the problem that you are seeing? 

If I configure and install httpd as normal, no CFLAGS, >2Gb downloads
don't work, and I get truncated results.

> > APR isn't picking up sendfile64 for me. Besides getting APR fixed, we
> > may need to handle this more gracefully within httpd for the cases where
> > the bundled apr isn't being used. If we don't have a sendfile capable of
> > sending >2GB files, we shouldn't try to use it for files >2GB.
> 
> This sounds very confused.  On 64-bit platforms there are never any 
> magic CFLAGS needed, no sendfile64() needed, and should be no problems 
> handling >2Gb files in the first place.

Doesn't seem to be that way on IA64, my sys/sendfile.h has:

    /* Send up to COUNT bytes from file associated with IN_FD starting at
       *OFFSET to descriptor OUT_FD.  Set *OFFSET to the IN_FD's file position
       following the read bytes.  If OFFSET is a null pointer, use the normal
       file position instead.  Return the number of written bytes, or -1 in
       case of error.  */
    #ifndef __USE_FILE_OFFSET64
    extern ssize_t sendfile (int __out_fd, int __in_fd, off_t *__offset,
                 size_t __count) __THROW;
    #else
    # ifdef __REDIRECT
    extern ssize_t __REDIRECT (sendfile,
                   (int __out_fd, int __in_fd, __off64_t *__offset,
                    size_t __count) __THROW,
                   sendfile64);
    # else
    #  define sendfile sendfile64
    # endif
    #endif
    #ifdef __USE_LARGEFILE64
    extern ssize_t sendfile64 (int __out_fd, int __in_fd, __off64_t *__offset,
                   size_t __count) __THROW;
    #endif

I'll see what I can narrow it down to. 

-- 
Colm MacCárthaigh                        Public Key: colm+pgp@stdlib.net

Mime
View raw message