From: Charles McGarvey Date: Sat, 17 Aug 2013 19:32:49 +0000 (-0600) Subject: fix a response header parsing crash bug X-Git-Tag: v0.03~1 X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fp5-Plack-App-Proxy-WebSocket;a=commitdiff_plain;h=037a08a1536d8202293cbcb920cc8d55defb8be1 fix a response header parsing crash bug Thank you @Getty for reporting. --- diff --git a/lib/Plack/App/Proxy/WebSocket.pm b/lib/Plack/App/Proxy/WebSocket.pm index acbcdbc..25f5a15 100644 --- a/lib/Plack/App/Proxy/WebSocket.pm +++ b/lib/Plack/App/Proxy/WebSocket.pm @@ -8,7 +8,7 @@ use AnyEvent::Handle; use AnyEvent::Socket; use HTTP::Headers; use HTTP::Request; -use HTTP::Parser::XS qw/parse_http_response HEADERS_AS_ARRAYREF/; +use HTTP::Parser::XS qw/parse_http_response HEADERS_AS_HASHREF/; use Plack::Request; use URI; @@ -121,11 +121,11 @@ sub call { $buffer .= $buf; my ($ret, $http_version, $status, $message, $headers) = - parse_http_response($buffer, HEADERS_AS_ARRAYREF); + parse_http_response($buffer, HEADERS_AS_HASHREF); $server->push_shutdown if $ret == -2; return if $ret < 0; - $headers = [$self->response_headers($headers)] unless $status == 101; + $headers = [$self->response_headers(HTTP::Headers->new(%$headers))] unless $status == 101; $writer = $res->([$status, $headers]); $writer->write(substr($buffer, $ret)); $buffer = undef;