comparison lib/Test/Nginx/HTTP2.pm @ 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 24e175025ad8
children 6d065c9a3b1f
comparison
equal deleted inserted replaced
1273:9b737ad4260b 1274:0f0ad7acb314
22 0 => { name => 'DATA', value => \&data }, 22 0 => { name => 'DATA', value => \&data },
23 1 => { name => 'HEADERS', value => \&headers }, 23 1 => { name => 'HEADERS', value => \&headers },
24 # 2 => { name => 'PRIORITY', value => \&priority }, 24 # 2 => { name => 'PRIORITY', value => \&priority },
25 3 => { name => 'RST_STREAM', value => \&rst_stream }, 25 3 => { name => 'RST_STREAM', value => \&rst_stream },
26 4 => { name => 'SETTINGS', value => \&settings }, 26 4 => { name => 'SETTINGS', value => \&settings },
27 # 5 => { name => 'PUSH_PROMISE', value => \&push_promise }, 27 5 => { name => 'PUSH_PROMISE', value => \&push_promise },
28 6 => { name => 'PING', value => \&ping }, 28 6 => { name => 'PING', value => \&ping },
29 7 => { name => 'GOAWAY', value => \&goaway }, 29 7 => { name => 'GOAWAY', value => \&goaway },
30 8 => { name => 'WINDOW_UPDATE', value => \&window_update }, 30 8 => { name => 'WINDOW_UPDATE', value => \&window_update },
31 9 => { name => 'CONTINUATION', value => \&continuation }, 31 9 => { name => 'CONTINUATION', value => \&continuation },
32 ); 32 );
398 $payload{$id} = unpack "\@$skip N", $buf; $skip += 4; 398 $payload{$id} = unpack "\@$skip N", $buf; $skip += 4;
399 399
400 $ctx->{iws} = $payload{$id} if $id == 4; 400 $ctx->{iws} = $payload{$id} if $id == 4;
401 } 401 }
402 return \%payload; 402 return \%payload;
403 }
404
405 sub push_promise {
406 my ($ctx, $buf, $len, $flags) = @_;
407
408 { promised => unpack("N", $buf),
409 headers => hunpack($ctx, substr($buf, 4, $len), $len) };
403 } 410 }
404 411
405 sub ping { 412 sub ping {
406 my ($ctx, $buf, $len) = @_; 413 my ($ctx, $buf, $len) = @_;
407 return { value => unpack "A$len", $buf }; 414 return { value => unpack "A$len", $buf };