This was a key reason for my mod_dir patch that broke Brian's request, below.
This is also a mod_negotiation bug, we simply hadn't realized it yet.

From: "Brian Akins" <[EMAIL PROTECTED]>
Sent: Tuesday, February 12, 2002 7:35 AM


> I've been playing with 2.0.31 and I've noticed something strange.  All of our 
> .html and .htm files are server-parsed and should also have an expire time 
> set.  ...
>
> A request for http://foo/ does not get parsed or get expiry headers set.  
> However, http://foo/index.hml works as expected.
> 
> This just doesn't seem right,  I have been toying with porting some of our 
> modules to Apache 2, but I obviously don't understand what's going here.  Why 
> isn't http://foo/ recognized as text/html?

No, it is not right, and yes - http://foo/ should be appropriately recognized.
We are evidently not moving enough info from the subreq to the parent request
in ap_fast_internal_redirect(); at least the filter chain, and some meta data 
related to the expires date....

Set{Input|Output}Filter[ByType] all set up filters in the typemap hook.  It
appears we did not copy these from the internal DefaultIndex subrequest back 
into the main request - we needed to.  I'm not certain where the expires date
is cached; the output headers?  In any case, perhaps the entire headers need to 
slide from the sub request to the main request.

A better answer is possibly to drop ap_internal_fast_redirect altogether (and
changing both mod_dir and mod_negotiation to never use the beast again) - that
includes Apache 1.3.  This code, while normalized, is not much better than
it was playing 1.3 negotiation.  The code has been a source of vulnerabilities
which I fixed, and other 'bugs' - most of which I'd fixed.  Who knows how many
more lurk, waiting to be 'discovered'.

Axe ap_internal_fast_redirect()?  Are any 3rd party modules taking advantage
of this hack from negotiation?

Bill

Reply via email to