You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by Srebrenko Sehic <ha...@insecure.dk> on 2005/05/02 23:30:06 UTC

Activating/decativating PerlOutputFilterHandler "on-the-fly"

Hi ppl,

I have a couple of PerlOutputFilterHandler directives registered in my
httpd.conf <VirtualHost> conigurations.

Is there any way to activate/deactivate these filters without editing
httpd.conf and restarting Apache?

I'm running Apache 2.0.54 with mod_perl2_RC5.

TIA,

// haver

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

Posted by Stas Bekman <st...@stason.org>.
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@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com

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

Posted by Jeff Ambrosino <jb...@gmail.com>.
>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;

...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?)

For more explanation that will probably put you on the right track, see:
http://perl.apache.org/docs/2.0/api/Apache/Filter.html

cheers
Jeff

On 5/2/05, Srebrenko Sehic <ha...@insecure.dk> wrote:
> Hi ppl,
> 
> I have a couple of PerlOutputFilterHandler directives registered in my
> httpd.conf <VirtualHost> conigurations.
> 
> Is there any way to activate/deactivate these filters without editing
> httpd.conf and restarting Apache?
> 
> I'm running Apache 2.0.54 with mod_perl2_RC5.
> 
> TIA,
> 
> // haver
>