On Wed, 17 Dec 2003, Brad Nicholes wrote:

> incompatibilities in the bucket code.  There are a number of places
> where file lengths are defined as apr_size_t rather than apr_off_t.
> What is the downside of redefining these variables as apr_off_t (ie.
> off64_t rather than off_t)?

We went back and forth on that a lot when writing it.  (Greg Stein and
Bill Rowe did most of the back-and-forth I think, but whatever.  ;)  The
way it's supposedly written now is that a brigade can contain as much as
an apr_off_t's worth of data, but a single bucket can contain only an
apr_size_t's worth.  If you have a large file, you're supposed to split it
into multiple file buckets and chain them together.  One stated reason for
that is that funcs like sendfile() only take a size_t's worth of data at a
time anyway.  AFAIK the main reason wass that some buckets just can't hold
more than a size_t of data no matter what you do, eg a heap bucket on a
32-bit machine, so to be consistent they're all that size.

> I guess the other question would be, is this even an issue? Do users
> expect to be able to download a file larger than 4gig or even 2gig?

I should certainly think so.  It's certainly been a very big issue for me
at times, since graphics people like myself tend to toss around huge
files.  :)

--Cliff

Reply via email to