httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ryan Bloom" <...@covalent.net>
Subject RE: How to achieve zero-copy when reading request headers?
Date Sat, 29 Jun 2002 12:42:25 GMT
> From: Brian Pane [mailto:bpane@pacbell.net]
> 
> On Sun, 2002-06-30 at 20:57, Justin Erenkrantz wrote:
> > On Fri, Jun 28, 2002 at 07:01:34PM -0700, Ryan Bloom wrote:
> > > Have you looked at which of these are causing the most performance
> > > problems?  It seems to me that the easiest thing to do, would be
to
> use
> > > a persistent brigade, which removes two steps from this.
> >
> > I'd really prefer that we decouple this persistent brigade from the
> > request_rec.  We used to have it coupled (req_cfg->bb) and it made
> > the code too confusing as other places started to rely on this
> > brigade.  So, I'd like to not go back down that road and figure out
> > a better scope for such a persistent brigade (a filter context seems
> > about right for the scope).
> 
> The brigade can't be in a filter context, because then it wouldn't be
> accessible from ap_rgetline_core().  The request_rec is the only place
> where we could easily put this brigade.  We just need to name it
> something like "temp_working_brigade" and document the fact that any
> function that puts things in that brigade must clear them out before
> it exits.

First, please don't put it in the request_rec, it should be placed
inside of core_request_config.  In fact, if you look at that structure,
it already has a brigade specifically for this function.  Second, please
don't rename that brigade.  If people can't read the docs to determine
that they aren't supposed to use that brigade, then let them shoot
themselves in the foot.  In order to find that brigade, they have to
read through http_core.h, and they have to define CORE_PRIVATE in their
module.  Just put a note in the docs that specifically state that 99.9%
of module authors shouldn't use that brigade, and that if they do then
most likely their filter won't work in all situations.  Or, and this is
probably better, remove the damned CORE_PRIVATE from our header files.
Move those definitions into server/*.h, and stop installing those
definitions on user's machines.  That will make it FAR more obvious that
those structures are private to the core and shouldn't be used by
modules.

Ryan



Mime
View raw message