dougm 01/11/05 16:08:46 Modified: t/filter/TestFilter input_msg.pm Log: change filter logic to what is currently considered the "right way" Revision Changes Path 1.7 +21 -11 modperl-2.0/t/filter/TestFilter/input_msg.pm Index: input_msg.pm =================================================================== RCS file: /home/cvs/modperl-2.0/t/filter/TestFilter/input_msg.pm,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- input_msg.pm 2001/07/15 22:33:49 1.6 +++ input_msg.pm 2001/11/06 00:08:46 1.7 @@ -16,26 +16,36 @@ sub handler : FilterConnectionHandler { my($filter, $bb, $mode, $readbytes) = @_; - if ($bb->empty) { - my $rv = $filter->next->get_brigade($bb, $mode, $readbytes); + my $ctx_bb = APR::Brigade->new($filter->c->pool); - if ($rv != APR::SUCCESS) { - return $rv; - } + my $rv = $filter->next->get_brigade($ctx_bb, $mode, $readbytes); + + if ($rv != APR::SUCCESS) { + return $rv; } - for (my $bucket = $bb->first; $bucket; $bucket = $bb->next($bucket)) { + while (!$ctx_bb->empty) { my $data; - my $status = $bucket->read($data); + my $bucket = $ctx_bb->first; $bucket->remove; - if ($data and $data =~ s,GET $from_url,GET $to_url,) { - $bb->insert_tail(APR::Bucket->new($data)); - } - else { + if ($bucket->is_eos) { $bb->insert_tail($bucket); + last; } + + my $status = $bucket->read($data); + + if ($status != APR::SUCCESS) { + return $status; + } + + if ($data and $data =~ s,GET $from_url,GET $to_url,) { + $bucket = APR::Bucket->new($data); + } + + $bb->insert_tail($bucket); } Apache::OK;