Mercurial > hg > nginx-tests
changeset 1089:eedb96f717ff
Tests: reset headers context when parsing HEADERS frame.
This fixes parsing several HEADERS frames from different streams.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Wed, 07 Dec 2016 13:51:28 +0300 |
parents | 83b7b3f8b6c5 |
children | 9d6a0dbb889a |
files | lib/Test/Nginx/HTTP2.pm |
diffstat | 1 files changed, 8 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/lib/Test/Nginx/HTTP2.pm Tue Dec 06 15:19:27 2016 +0300 +++ b/lib/Test/Nginx/HTTP2.pm Wed Dec 07 13:51:28 2016 +0300 @@ -28,7 +28,7 @@ 6 => { name => 'PING', value => \&ping }, 7 => { name => 'GOAWAY', value => \&goaway }, 8 => { name => 'WINDOW_UPDATE', value => \&window_update }, - 9 => { name => 'CONTINUATION', value => \&headers }, + 9 => { name => 'CONTINUATION', value => \&continuation }, ); sub new { @@ -371,6 +371,13 @@ sub headers { my ($ctx, $buf, $len, $flags) = @_; + $ctx->{headers} = substr($buf, 0, $len); + return unless $flags & 0x4; + { headers => hunpack($ctx, $buf, $len) }; +} + +sub continuation { + my ($ctx, $buf, $len, $flags) = @_; $ctx->{headers} .= substr($buf, 0, $len); return unless $flags & 0x4; { headers => hunpack($ctx, $ctx->{headers}, length($ctx->{headers})) };