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
+++ b/lib/Test/Nginx/HTTP2.pm
@@ -28,7 +28,7 @@ my %cframe = (
 	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 test_fin {
 
 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})) };