On Mon, Feb 18, 2002 at 09:17:19PM -0800, Ian Holsman wrote:
> it doesn't do what it is supposed to do ALL the time.
> 
> for example.. take mod-status.
> 
> inside the handler it decides what type of content-type
> the program will return.

"bad module, fix module."

> this filterconfig won't be able to catch it.
> 
> I'm also sure that mod-cgi can not determine the content-type
> of a CGI program before the handler hook either.

Not much we can do here since the content-type is completely
unknown.

> so what I'm saying is this directive is going to confuse a WHOLE
> lot of people when it works some of the time.

No disagreement here, but I come back to "bad module, fix module."

> if this directive needs to be there (and I belive it should be)
> the filters themselves need to be added after the first bucket has been 
> passed to the brigade, as this is the only time we actually know for 
> certain what content-type we have.

I'm not terribly sure how workable this is.  I think that the
content-type needs to be set by the type_checker hook.  Then, the
fixups hook can be run knowing the content-type is valid.  If the
type_checker doesn't do what it says - mainly this:

"This routine is called to determine and/or set the various document
type information bits, like Content-type (via r->content_type),
language, et cetera."

Then we have issues.  But, I believe mod_status can be fixed
pretty trivially.  I'm not at all sure what to do about CGIs or
misbehaving modules.

>       *) add a filter (with a priority of -1 FTYPE_CONTENT) which just
>          checks the content-type and adds the other filter if it
>          passes.

If we have to do this, then I think our architecture is in poor
shape.  I don't think a filter is the right place to do this - there
is way too much overhead in a filter to do this logic.  And, we'd
also be adding a filter after we've sent data down the filter chain.

(Don't get me wrong, I see your rationale behind this, but if the
only way to do this is via another filter, we've got problems.)

I could be wrong, but I think the way I did it is the right way to
do this given what we have now.  Anyone else?  Am I wrong?  -- justin

Reply via email to