With the reading of Apache_Clean module (which i see is streamed-oriented) and with ideas of Ambrosino, i am with this:
sub handler : FilterRequestHandler { my($f, $bb) = @_; my $rv; unless ($f->ctx) { $f->r->headers_out->unset('Content-Length'); $f->ctx({html => ''}); } while (!$bb->is_empty) { my $b = $bb->first; $b->remove; if ($b->read(my $data)) { $f->ctx->{html} .= $data; } if ($b->is_eos) { $this->MYFUNCTION(\$f->ctx->{html},$f->r,$f->c); #new bucket brigade to be filled with modified buckets my $nbb = APR::Brigade->new($f->c->pool,$f->c->bucket_alloc); #new bucket, a unique and big bucket, is it efficient? $b = APR::Bucket->new($bb->bucket_alloc,$f->ctx->{html}); $nbb->insert_tail($b); $rv = $f->next->pass_brigade($nbb); last; } } return $rv unless $rv == APR::Const::SUCCESS; Apache2::Const::OK; } Despite considerations about the efficacy of this procedure (i really suspect that a streaming-oriented approach could be indeed more efficient, but i am an ignorant), i cannot get a valid response. I get the typical 500 internal server error with no entries in logs, so i guess is something about the return value. Note: I'm having problems with my $mm = Apache2::Request->new($apache); my $mm = Apache2::Request->new($apache,POST_MAX => '50000'); Second line is causing the error: "Conflicting information". Very strange. 15 minutes before i had the same problem with my $mm = Apache2::Request->new($apache,POST_MAX => 50000); but i solved (during 10 minutes) with the commas my $mm = Apache2::Request->new($apache,POST_MAX => '50000'); but now it appears again. Without it i am sure that the above filter funcion is running right. --------------------------------------------------------- Juega y llévate una PS2 two: http://juegos.ya.com/consolas_y_pc/2005/09/concurso-ps2.html Ya.com ADSL 2MB + Llamadas 24 horas: desde 26,95 /mes + IVA. Navega y habla de forma ilimitada. Sin compromiso de permanencia. http://acceso.ya.com/ADSLllamadas/2mb