httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "William A. Rowe, Jr." <>
Subject Re: cvs commit: httpd-2.0/modules/http http_request.c
Date Fri, 16 May 2003 15:54:40 GMT
At 10:17 AM 5/16/2003, André Malo wrote:

>Darn. Then we need an alternative solution. (Actually we need a clear
>distinction between main filter chain and subreq filter chain, but that
>would really break some compatibilities).
>The current code produces under some circumstances garbage (see

The problem is that we have;

 \- transport (e.g. ssl)
     \- protocol (e.g. http, headers, etc)
         \- response (e.g. deflate, charset, etc)
             \- content/body

We really should link subrequests back to the response chain, not at
the protocol chain, and never allow modules to affect the response filter 
or above on subrequest invocations.

But before we go off that deflate isn't inserted at the right point, I also
believe deflate needs to be intellegent.  If the subrequest turns out to
be deflated (e.g. a cgi with deflation of it's own) it would be really slick
if deflate 'undeflated' that subrequest content before adding it to the
main request stream.

>Here is a repost from an earlier mail about filter chain redesigning issues:
>The filter system should be considered for redesign anyway in a form that
>the subreq_core filter acts as data link between the subrequest and the
>caller. Given that figure:
>main stream
>                          /
>subreq stream            /
>------------------------x subreq_core_filter
>The subrequests should get their own filter stack. And the subreq core
>filter is the bottommost (!) within the subreq stack and redirects the data
>back to the main stream (filtering out the EOS buckets).
>At the moment any changes in the filter stack from within a subreq will
>have effect on the main filter stack, which is not so really cool.
>Which should perhaps be considered for 2.1 series in order to handle the
>filter stack cleanly.
>However, I've currently no real idea how to solve the bugfix otherwise :-(
>Any opinions?

The problem with two stacks is speed.  You have to throw all the buckets
across the gap back to the main filter stack, which wastes time for all
well-written modules, but saves you from the clunky module.


View raw message