blob: db2153c0ea1339e6c775af1c23fc0708666ad0f4 [file] [log] [blame]
package TestFilter::in_bbs_msg;
use strict;
use warnings FATAL => 'all';
use base qw(Apache2::Filter);
use Apache2::RequestRec ();
use Apache2::RequestIO ();
use APR::Brigade ();
use APR::Bucket ();
use Apache2::Const -compile => 'OK';
use APR::Const -compile => ':common';
use Apache::TestTrace;
my $from_url = '/input_filter.html';
my $to_url = '/TestFilter__in_bbs_msg';
sub handler : FilterConnectionHandler {
my ($filter, $bb, $mode, $block, $readbytes) = @_;
debug "FILTER CALLED";
$filter->next->get_brigade($bb, $mode, $block, $readbytes);
for (my $b = $bb->first; $b; $b = $bb->next($b)) {
last if $b->is_eos;
if ($b->read(my $data)) {
next unless $data =~ s|GET $from_url|GET $to_url|;
debug "GET line rewritten to be:\n$data";
my $nb = APR::Bucket->new($bb->bucket_alloc, $data);
$b->insert_before($nb);
$b->delete;
$b = $nb;
}
# XXX: currently a bug in httpd doesn't allow to remove
# the first connection filter. once it's fixed adjust the test
# to test that it was invoked only once.
# debug "removing the filter";
# $filter->remove; # this filter is no longer needed
}
Apache2::Const::OK;
}
sub response {
my $r = shift;
$r->content_type('text/plain');
$r->puts("1..1\nok 1\n");
Apache2::Const::OK;
}
1;
__END__
<NoAutoConfig>
<VirtualHost TestFilter::in_bbs_msg>
PerlModule TestFilter::in_bbs_msg
PerlInputFilterHandler TestFilter::in_bbs_msg
<Location /TestFilter__in_bbs_msg>
SetHandler modperl
PerlResponseHandler TestFilter::in_bbs_msg::response
</Location>
</VirtualHost>
</NoAutoConfig>