Написал на перле следующий модуль (в конце сообщения).
Всё отлично работает, проверяет валидность, адекватно реагирует, НО... в случае валидности POST запроса с XML он не возвращается на обработку nginx'у (не происходит выдача нужного контента ни через proxy_pass, ни через fastcgi_pass, ни через root), возвращает 405 Not Allowed.
Пожалуйста подскажите как сделать что-бы продолжалась обработка запроса после проверки перловым модулем?
package onlyxml;
use nginx;
use strict;
use XML::Simple;
sub test {
my $r = shift;
if ($r->request_method eq "POST") {
if ($r->has_request_body(\&post)) {
return 400; # не валидный XML
} else {
return 401; # пустой запрос
}
} else {
return DECLINED; # не GET запросы
}
}
sub post {
my $r = shift;
$r->send_http_header;
my $xs = new XML::Simple();
my $hash;
eval {$hash = $xs->XMLin($r->request_body)};
if ($@){
return 400; # не валидный
} else {
### TODO: вернуть запрос nginx'у
return DECLINED; # Валидный xml
}
}
1;
__END__