httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stefan Fritsch>
Subject Issues with <If >
Date Sat, 08 Jan 2011 21:52:48 GMT

there are some serious problems with how <If ...> is implemented right 

1) It is hooked into ap_file_walk() which is only called in the 
map_to_storage hook. This means that it is not executed for non-file 
requests like ProxyPass'ed requests. This reduces its usefulness a 
great deal.

2) ap_file_walk() will happily reuse a cached file walk result if the 
file name is identical (see the 'strcmp(test_file, cache->cached) == 
0' check). While I haven't been able to trigger wrong behaviour so 
far, I am pretty sure that this will give the wrong result for <If> in 
some corner cases.

3) <If > can be used at VHost level and inside <Directory> blocks. But 
it cannot be used inside <Location> blocks (trying to do so will give 
a startup error), which reduces the usefulness even more.

4) <If > blocks inside <Files> blocks are silently ignored.

I am open for ideas how to solve these problems. One idea I had is the 

Create a new function ap_if_walk() that handles the <If> sections and 
is called after ap_location_walk(). Store the <If> sections in a 
separate array core_dir_config->sec_if, just like <Files> sections are 
stored in core_dir_config->sec_files. This should allow to use <If> 
inside <Location>, <Directory>, and <Files>. It may be surprising that 
all <If> sections would be applied last, even if they appeared inside 
<Directory>. But I think this could be solved with documentation.

More ideas? Comments?


View raw message