2010-11-27 8 views
0

Это связано с mod_perl.PerlInputFilterHandler вызывает себя снова и снова

У меня только один фильтр, указанный в моем теге местоположения.

<Location /testproj/AServlet> 
SetHandler modperl 
PerlInputFilterHandler MyApache2::Test3 
</Location> 

Здесь, когда я ударил http://localhost/testproj/AServlet URL в браузере. Он просто висит. Фильтр Test3 вызывает себя снова и снова. Я хочу выполнить тестовый фильтр только один раз и передать управление ресурсу «AServlet».

Что мне делать?

Спасибо.

ответ

1

Это потому, что вы не вызываете следующий фильтр в бригаде.

package TestFilter; 

use base qw(Apache2::Filter); 
use Apache2::Const qw(OK); 
use APR::Const qw(SUCCESS); 

sub handler { 
    my ($f, $bb, $mode, $block, $readbytes) = @_; 
    my $rv = $f->next->get_brigade($bb, $mode, $block, $readbytes); 
    return $rv unless $rv == APR::Const::SUCCESS; 

    # do you filtering stuff 

    return OK; 
} 

1;
+0

Thanks Jeremy. Код работает отлично и не называет себя снова, но не передает контроль на запрошенный ресурс («AServlet»). Он показывает, что страница не может быть отображена, без ошибок в журнале. – 2010-11-29 04:35:08