package Book::InputFilterGET2HEAD; use strict; use warnings; use base qw(Apache::Filter); use APR::Brigade (); use APR::Bucket (); use Apache::Const -compile => 'OK'; use APR::Const -compile => ':common'; sub handler : FilterConnectionHandler { my($filter, $bb, $mode, $block, $readbytes) = @_; return Apache::DECLINED if $filter->ctx; my $rv = $filter->next->get_brigade($bb, $mode, $block, $readbytes); return $rv unless $rv == APR::SUCCESS; for (my $b = $bb->first; $b; $b = $bb->next($b)) { my $data; my $status = $b->read($data); return $status unless $status == APR::SUCCESS; warn("data: $data\n"); if ($data and $data =~ s|^GET|HEAD|) { my $bn = APR::Bucket->new($data); $b->insert_after($bn); $b->remove; # no longer needed $filter->ctx(1); # flag that that we have done the job last; } } Apache::OK; } 1;