On Tue, 1 May 2001 [EMAIL PROTECTED] wrote:

> > Why can't we just cache the open file descriptor (not apr_file_t,
> > but the actual descriptor) then build a bucket out of the request pool
> > (just as if we opend the file as part of the request processing)?
>
> Why not cache the apr_file_t?  It should be cache-able, and it would make
> things more portable, wouldn't it?  The only problem is that we might
> modify an apr_file_t during request processing, but we shouldn't be, so we
> should be okay.

We already cache the apr_file_t (and I'm assuming that it works).  We
already build a bucket out of it from the request pool.  That's not the
problem.  It's that file_read() builds an MMAP out of the
apr_file_t->pool, which is, I presume, why you suggest not caching the
apr_file_t.  But then apr_file_open becomes kind of useless, doesn't it?

The crux of the problem is the one line in file_read() that grabs the
apr_file_t's pool to put the MMAP in.  If we let apr_bucket_file_create()
take a pool parameter and store that in the apr_bucket_file, then
file_read() can create the MMAP in that pool (which presumably has at most
the lifespan of the apr_file_t's pool).  ap_send_fd() would always pass
the request pool to apr_bucket_file_create(), which is basically the same
idea as you (Bill) have suggested, just slanted in a different way.

Back to the polygons...

--Cliff

--------------------------------------------------------------
   Cliff Woolley
   [EMAIL PROTECTED]
   Charlottesville, VA


Reply via email to