Mercurial > hg > nginx-tests
annotate ignore_invalid_headers.t @ 1940:aec72dcee93b
Tests: unconditional QUIC datagram expansion with Initial packets.
Used to get rid of "quic UDP datagram is too small for initial packet" messages.
In future, we may need this to reconsider to allow mocking with custom padding,
but for now suppressing such messages is sufficiently good enough.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Mon, 11 Dec 2023 14:01:49 +0400 |
parents | 2a0a6035a1af |
children |
rev | line source |
---|---|
1522
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
2 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
3 # (C) Sergey Kandaurov |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
4 # (C) Nginx, Inc. |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
5 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
6 # Tests for ignore_invalid_headers, underscores_in_headers directives. |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
7 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
8 ############################################################################### |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
9 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
10 use warnings; |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
11 use strict; |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
12 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
13 use Test::More; |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
14 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
15 use Socket qw/ CRLF /; |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
16 use MIME::Base64 qw/ encode_base64 decode_base64 /; |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
17 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
18 BEGIN { use FindBin; chdir($FindBin::Bin); } |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
19 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
20 use lib 'lib'; |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
21 use Test::Nginx; |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
22 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
23 ############################################################################### |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
24 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
25 select STDERR; $| = 1; |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
26 select STDOUT; $| = 1; |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
27 |
1715
3604ef83c1aa
Tests: added header name tests with forbidden characters.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1693
diff
changeset
|
28 my $t = Test::Nginx->new()->has(qw/http proxy/)->plan(12) |
1522
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
29 ->write_file_expand('nginx.conf', <<'EOF'); |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
30 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
31 %%TEST_GLOBALS%% |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
32 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
33 daemon off; |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
34 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
35 events { |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
36 } |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
37 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
38 http { |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
39 %%TEST_GLOBALS_HTTP%% |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
40 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
41 server { |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
42 listen 127.0.0.1:8080; |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
43 server_name localhost; |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
44 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
45 ignore_invalid_headers off; |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
46 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
47 location / { |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
48 proxy_pass http://127.0.0.1:8085; |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
49 } |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
50 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
51 location /v { |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
52 add_header X-Cookie $http_cookie; |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
53 } |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
54 } |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
55 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
56 server { |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
57 listen 127.0.0.1:8081; |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
58 server_name localhost; |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
59 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
60 location / { |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
61 proxy_pass http://127.0.0.1:8085; |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
62 } |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
63 } |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
64 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
65 server { |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
66 listen 127.0.0.1:8082; |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
67 server_name localhost; |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
68 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
69 underscores_in_headers on; |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
70 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
71 location / { |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
72 proxy_pass http://127.0.0.1:8085; |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
73 } |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
74 } |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
75 } |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
76 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
77 EOF |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
78 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
79 $t->write_file('index.html', ''); |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
80 $t->write_file('v', ''); |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
81 $t->run_daemon(\&http_daemon); |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
82 $t->run()->waitforsocket('127.0.0.1:' . port(8085)); |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
83 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
84 ############################################################################### |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
85 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
86 my $us = 'GET / HTTP/1.0' . CRLF |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
87 . 'x_foo: x-bar' . CRLF . CRLF; |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
88 my $us2 = 'GET / HTTP/1.0' . CRLF |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
89 . '_foo: x-bar' . CRLF . CRLF; |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
90 my $bad = 'GET / HTTP/1.0' . CRLF |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
91 . 'x.foo: x-bar' . CRLF . CRLF; |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
92 my $bad2 = 'GET / HTTP/1.0' . CRLF |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
93 . '.foo: x-bar' . CRLF . CRLF; |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
94 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
95 # ignore_invalid_headers off; |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
96 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
97 like(get($us, 8080), qr/x-bar/, 'off - underscore'); |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
98 like(get($us2, 8080), qr/x-bar/, 'off - underscore first'); |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
99 like(get($bad, 8080), qr/x-bar/, 'off - bad'); |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
100 like(get($bad2, 8080), qr/x-bar/, 'off - bad first'); |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
101 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
102 # ignore_invalid_headers off; headers parsing post 8f55cb5c7e79 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
103 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
104 unlike(http('GET /v HTTP/1.0' . CRLF |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
105 . 'Host: localhost' . CRLF |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
106 . 'coo: foo' . CRLF |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
107 . '</kie>: x-bar' . CRLF . CRLF), qr/x-bar/, 'off - several'); |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
108 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
109 # ignore_invalid_headers on; |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
110 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
111 unlike(get($us, 8081), qr/x-bar/, 'on - underscore'); |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
112 unlike(get($us2, 8081), qr/x-bar/, 'on - underscore first'); |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
113 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
114 # ignore_invalid_headers on; underscores_in_headers on; |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
115 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
116 like(get($us, 8082), qr/x-bar/, 'underscores_in_headers'); |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
117 like(get($us2, 8082), qr/x-bar/, 'underscores_in_headers - first'); |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
118 |
1715
3604ef83c1aa
Tests: added header name tests with forbidden characters.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1693
diff
changeset
|
119 # always invalid header characters |
3604ef83c1aa
Tests: added header name tests with forbidden characters.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1693
diff
changeset
|
120 |
3604ef83c1aa
Tests: added header name tests with forbidden characters.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1693
diff
changeset
|
121 my $bad3 = 'GET / HTTP/1.0' . CRLF |
3604ef83c1aa
Tests: added header name tests with forbidden characters.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1693
diff
changeset
|
122 . ':foo: x-bar' . CRLF . CRLF; |
3604ef83c1aa
Tests: added header name tests with forbidden characters.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1693
diff
changeset
|
123 my $bad4 = 'GET / HTTP/1.0' . CRLF |
3604ef83c1aa
Tests: added header name tests with forbidden characters.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1693
diff
changeset
|
124 . ' foo: x-bar' . CRLF . CRLF; |
3604ef83c1aa
Tests: added header name tests with forbidden characters.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1693
diff
changeset
|
125 my $bad5 = 'GET / HTTP/1.0' . CRLF |
3604ef83c1aa
Tests: added header name tests with forbidden characters.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1693
diff
changeset
|
126 . "foo\x02: x-bar" . CRLF . CRLF; |
3604ef83c1aa
Tests: added header name tests with forbidden characters.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1693
diff
changeset
|
127 |
3604ef83c1aa
Tests: added header name tests with forbidden characters.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1693
diff
changeset
|
128 like(http($bad3), qr/400 Bad/, 'colon first'); |
3604ef83c1aa
Tests: added header name tests with forbidden characters.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1693
diff
changeset
|
129 like(http($bad4), qr/400 Bad/, 'space'); |
3604ef83c1aa
Tests: added header name tests with forbidden characters.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1693
diff
changeset
|
130 like(http($bad5), qr/400 Bad/, 'control'); |
3604ef83c1aa
Tests: added header name tests with forbidden characters.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1693
diff
changeset
|
131 |
1522
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
132 ############################################################################### |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
133 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
134 sub get { |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
135 my ($msg, $port) = @_; |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
136 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
137 my $s = IO::Socket::INET->new('127.0.0.1:' . port($port)) or die; |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
138 my ($headers) = http($msg, socket => $s) =~ /X-Headers: (\w+)/; |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
139 decode_base64($headers); |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
140 } |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
141 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
142 ############################################################################### |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
143 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
144 sub http_daemon { |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
145 my $once = 1; |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
146 my $server = IO::Socket::INET->new( |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
147 Proto => 'tcp', |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
148 LocalHost => '127.0.0.1:' . port(8085), |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
149 Listen => 5, |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
150 Reuse => 1 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
151 ) |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
152 or die "Can't create listening socket: $!\n"; |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
153 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
154 local $SIG{PIPE} = 'IGNORE'; |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
155 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
156 while (my $client = $server->accept()) { |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
157 $client->autoflush(1); |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
158 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
159 my $headers = ''; |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
160 my $uri = ''; |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
161 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
162 while (<$client>) { |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
163 $headers .= $_; |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
164 last if (/^\x0d?\x0a?$/); |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
165 } |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
166 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
167 $headers = encode_base64($headers, ""); |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
168 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
169 print $client <<EOF; |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
170 HTTP/1.1 200 OK |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
171 Connection: close |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
172 X-Headers: $headers |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
173 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
174 EOF |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
175 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
176 } |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
177 } |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
178 |
d8684b300d22
Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
179 ############################################################################### |