---
name: "HTTP::Proxy::FilterStack"
section: "3pm"
platform: "linux"
package: "libhttp-proxy-perl"
version: "0.304-5"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/HTTP::Proxy::FilterStack"
---

# HTTP::Proxy::FilterStack(3pm)

A class to manage filter stacks

## NAME

HTTP::Proxy::FilterStack - A class to manage filter stacks

## DESCRIPTION

This class is used internally by HTTP::Proxy to manage its four filter stacks.

From the point of view of HTTP::Proxy::FilterStack, a filter is actually a (`"matchsub"`, `"filterobj"`) pair. The match subroutine (generated by HTTP::Proxy's `"push_filter()"` method) is run against the current HTTP::Message object to find out which filters must be kept in the stack when handling this message.

The filter stack maintains a set of buffers where the filters can store data. This data is appended at the beginning of the next chunk of data, until all the data has been sent.

## METHODS

The class provides the following methods:

- new( $isbody )

  Create a new instance of HTTP::Proxy::FilterStack. If `$isbody` is true, then the stack will manage body filters (subclasses of HTTP::Proxy::BodyFilter).

- select\_filters( $message )

  `$message` is the current HTTP::Message handled by the proxy. It is used (with the help of each filter's match subroutine) to select the subset of filters that will be applied on the given message.

- filter( @args )

  This method calls all the currently selected filters in turn, with the appropriate arguments.

- **filter\_last()**

  This method calls all the currently selected filters in turn, to filter the data remaining in the buffers in a single pass.

- **will\_modify()**

  Return a boolean value indicating if the list of selected filters in the stack will modify the body content. The value is computed from the result of calling `"will_modify()"` on all selected filters.

- **all()**

  Return a list of all filters in the stack.

- **eod()**

  Used for END OF DATA bookkeeping.

- **push()**

  Push the given `"[ match, filterobj ]"` pairs at the top of the stack.

- insert( $idx, @pairs )

  Insert the given `"[ match, filterobj ]"` pairs at position `$idx` in the stack.

- remove( $idx )

  Remove the `"[ match, filterobj ]"` pair at position `$idx` in the stack.

## AUTHOR

Philippe "BooK" Bruhat, \<book@cpan.org\>.

## COPYRIGHT

Copyright 2002-2015, Philippe Bruhat.

## LICENSE

This module is free software; you can redistribute it or modify it under the same terms as Perl itself.
