Re: Activating/decativating PerlOutputFilterHandler "on-the-fly"

[prev] [thread] [next] [Date index for 2005/05/03]

From: Stas Bekman
Subject: Re: Activating/decativating PerlOutputFilterHandler "on-the-fly"
Date: 06:36 on 03 May 2005
Jeff Ambrosino wrote:
>>From within an existing Perl handler/filter, you can dynamically
> insert ('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:stas@xxxxxx.xxx http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com

Re: Activating/decativating PerlOutputFilterHandler "on-the-fly"
Stas Bekman 06:36 on 03 May 2005

Generated at 10:25 on 04 May 2005 by mariachi v0.52