about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--lib/Plack/Middleware/ETag.pm11
1 files changed, 4 insertions, 7 deletions
diff --git a/lib/Plack/Middleware/ETag.pm b/lib/Plack/Middleware/ETag.pm
index 0b491a7..72b8c30 100644
--- a/lib/Plack/Middleware/ETag.pm
+++ b/lib/Plack/Middleware/ETag.pm
@@ -18,13 +18,10 @@ sub call {
         $res,
         sub {
             my $res = shift;
-            return unless defined $res->[2];
-            return
-                if ( Plack::Util::header_exists( $headers, 'ETag' )
-                || $env->{REQUEST_METHOD} !~ /^(GET|HEAD)$/ );
-            my $sha     = Digest::SHA->new;
-            my $content = $res->[2];
-            $sha->add(@$content);
+            return if ( !defined $res->[2] || ref $res->[2] ne 'ARRAY' );
+            return if ( Plack::Util::header_exists( $headers, 'ETag' ) );
+            my $sha = Digest::SHA->new;
+            $sha->add( @{ $res->[2] } );
             Plack::Util::header_set( $headers, 'ETag', $sha->hexdigest );
             return;
         }