changeset 781:d0a3444c21a6

Tests: added HTTP/2 test for invalid header name (ticket #831).
author Sergey Kandaurov <pluknet@nginx.com>
date Fri, 13 Nov 2015 01:51:02 +0300
parents 5a0bba53854b
children 37396c3bc097
files h2.t
diffstat 1 files changed, 21 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/h2.t
+++ b/h2.t
@@ -32,7 +32,7 @@ plan(skip_all => 'IO::Socket::SSL too ol
 
 my $t = Test::Nginx->new()->has(qw/http http_ssl http_v2 proxy cache/)
 	->has(qw/limit_conn rewrite realip shmem/)
-	->has_daemon('openssl')->plan(286);
+	->has_daemon('openssl')->plan(287);
 
 # Some systems may have also a bug in not treating zero writev iovcnt as EINVAL
 
@@ -2713,6 +2713,26 @@ is($frame->{length}, 4, 'newline in requ
 is($frame->{flags}, 0, 'newline in request header - RST_STREAM flags');
 is($frame->{code}, 1, 'newline in request header - RST_STREAM code');
 
+# invalid header name as seen with underscore should not lead to ignoring rest
+
+TODO: {
+local $TODO = 'not yet';
+
+$sess = new_session();
+$sid = new_stream($sess, { headers => [
+	{ name => ':method', value => 'GET', mode => 0 },
+	{ name => ':scheme', value => 'http', mode => 0 },
+	{ name => ':path', value => '/', mode => 0 },
+	{ name => ':authority', value => 'localhost', mode => 1 },
+	{ name => 'x_foo', value => "x-bar", mode => 2 },
+	{ name => 'referer', value => "see-this", mode => 1 }]});
+$frames = h2_read($sess, all => [{ type => 'RST_STREAM' }]);
+
+($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
+is($frame->{headers}->{'x-referer'}, 'see-this', 'after invalid header name');
+
+}
+
 # GOAWAY on SYN_STREAM with even StreamID
 
 $sess = new_session();