On Tuesday, March 22, 2011 15:43:07 Clément OUDOT wrote: > Can this behaviour comes from the DirectoryIndex and mod_dir?
I assume you call add_output_filter in My::Package? Now, mod_dir uses subrequests for all of your DirectoryIndex documents. The first it finds, it redirects to using ap_internal_fast_redirect(). This is a very hackish function that tries to magically turn the subreq into the main request. It copies a bunch of values from the subreq into the main req. One of these values is the output filter list. So, after the operation your main req looks mostly like the subreq. Another detail that hits you here is that the HeaderParser phase is called only for the main request. Now put these two together, you start a request for dir/. My::Package installs the output filter in its header parser phase. mod_dir jumps in and issues a subreq for dir/index.pl. The subreq skips the header parser phase. ap_internal_fast_redirect copies the output filter chain (without your filter) from the subreq to the main one. Your registry script index.pl is evaluated but the output filter is gone. What could be done? I think the cleanest way would be to either move My::Package to another phase, fixup for example. If that's not possible you can set a flag in $r->pnotes when the filter in installed. Then you need a fixup handler that looks if the flag is set in $r->main->pnotes and reinstalls the filter if so. Torsten Förtsch -- Need professional modperl support? Hire me! (http://foertsch.name) Like fantasy? http://kabatinte.net