validate content-length with plack
http://github.com/tokuhirom/p5-plack-middleware-validatecontentlength
I wrote broken webapp, it outputs invalid content-length. Then, I want validator :P
package Plack::Middleware::ValidateContentLength;
use strict;
use warnings;
use parent qw/Plack::Middleware/;
use Plack::Util qw//;
sub call {
my ( $self, $env ) = @_;
my $res = $self->app->($env);
my $header_length = Plack::Util::header_get($res->[1], 'Content-Length');
if ($header_length) {
my $body_length = Plack::Util::content_length($res->[2]);
if ($header_length != $body_length) {
print STDERR "INVALID CONTENT LENGTH: header: $header_length, body: $body_length, $env->{PATH_INFO}\n";
return [500, [], ['Content Length Error']];
}
}
return $res;
}
1;
__END__
=head1 SYNOPSIS
plackup -e 'enable "ValidateContentLength"' -e '[200, ["Content-Length" => 3], ["NOT OK"]]'
(I will not release this middleware :-) This is just quick hack. )
Published: 2010-04-26(Mon) 14:57