changeset 1274:0f0ad7acb314

Tests: basic HTTP/2 PUSH_PROMISE support.
author Sergey Kandaurov <pluknet@nginx.com>
date Tue, 30 Jan 2018 15:33:26 +0300
parents 9b737ad4260b
children d800b5ca9783
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
@@ -24,7 +24,7 @@ my %cframe = (
 #	2 => { name => 'PRIORITY', value => \&priority },
 	3 => { name => 'RST_STREAM', value => \&rst_stream },
 	4 => { name => 'SETTINGS', value => \&settings },
-#	5 => { name => 'PUSH_PROMISE', value => \&push_promise },
+	5 => { name => 'PUSH_PROMISE', value => \&push_promise },
 	6 => { name => 'PING', value => \&ping },
 	7 => { name => 'GOAWAY', value => \&goaway },
 	8 => { name => 'WINDOW_UPDATE', value => \&window_update },
@@ -402,6 +402,13 @@ sub settings {
 	return \%payload;
 }
 
+sub push_promise {
+	my ($ctx, $buf, $len, $flags) = @_;
+
+	{ promised => unpack("N", $buf),
+	  headers => hunpack($ctx, substr($buf, 4, $len), $len) };
+}
+
 sub ping {
 	my ($ctx, $buf, $len) = @_;
 	return { value => unpack "A$len", $buf };