From within an existing Perl handler/filter, you can dynamicallyinsert ('register') a new filter with the add_output_filter method on the request object:
$r->add_output_filter(\&callback);
And, you can remove a downstream filter (from within an upstream filter) with:
$next_f = $f->next; $next_f->remove;
And you can also do that from the FilterInitHandler phase http://perl.apache.org/docs/2.0/user/handlers/filters.html#Filter_Initialization_Phase
...or even any subsequent invocations of the current filter (i.e., for the current request) with:
$f->remove;
n.b. I'm not sure if it is possible to remove a downstream filter from within a handler, since it appears you need the $f (filter) object to do a remove... (can one reference the filter object from the request object?)
It's possible, since you can traverse the filter chain using the ->next http://perl.apache.org/docs/2.0/api/Apache/Filter.html#C_next_
and you can access the filter stack with ->input_filters:
http://perl.apache.org/docs/2.0/api/Apache/Connection.html#C_input_filters_
http://perl.apache.org/docs/2.0/api/Apache/RequestRec.html#C_input_filters_
and ->output_filters:
http://perl.apache.org/docs/2.0/api/Apache/Connection.html#C_output_filters_
http://perl.apache.org/docs/2.0/api/Apache/RequestRec.html#C_output_filters_
For more explanation that will probably put you on the right track, see: http://perl.apache.org/docs/2.0/api/Apache/Filter.html
and http://perl.apache.org/docs/2.0/user/handlers/filters.html
-- __________________________________________________________________ Stas Bekman JAm_pH ------> Just Another mod_perl Hacker http://stason.org/ mod_perl Guide ---> http://perl.apache.org mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com http://modperlbook.org http://apache.org http://ticketmaster.com