annotate ignore_invalid_headers.t @ 1542:451e787aad76

Tests: reworked libgd version detection. The "libgd-config" binary is deprecated in recent versions and may not exist or have unexpected output. More, it may not present within older versions, as well, if installed separately, which previously broke test assumptions. The fix is change the fallback to skip tests. In addition, recent Perl GD module (2.57) started to export libgd version, which is now also consulted.
author Sergey Kandaurov <pluknet@nginx.com>
date Mon, 13 Jan 2020 18:15:35 +0300
parents d8684b300d22
children 5ac6efbe5552
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
d8684b300d22 Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
28 my $t = Test::Nginx->new()->has(qw/http proxy/)->plan(9)
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 TODO: {
d8684b300d22 Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
105 local $TODO = 'not yet' unless $t->has_version('1.17.5');
d8684b300d22 Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
106
d8684b300d22 Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
107 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
108 . 'Host: localhost' . CRLF
d8684b300d22 Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
109 . 'coo: foo' . CRLF
d8684b300d22 Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
110 . '</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
111
d8684b300d22 Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
112 }
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;
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 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
117 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
118
d8684b300d22 Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
119 # 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
120
d8684b300d22 Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
121 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
122 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
123
d8684b300d22 Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
124 ###############################################################################
d8684b300d22 Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
125
d8684b300d22 Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
126 sub get {
d8684b300d22 Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
127 my ($msg, $port) = @_;
d8684b300d22 Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
128
d8684b300d22 Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
129 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
130 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
131 decode_base64($headers);
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 ###############################################################################
d8684b300d22 Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
135
d8684b300d22 Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
136 sub http_daemon {
d8684b300d22 Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
137 my $once = 1;
d8684b300d22 Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
138 my $server = IO::Socket::INET->new(
d8684b300d22 Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
139 Proto => 'tcp',
d8684b300d22 Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
140 LocalHost => '127.0.0.1:' . port(8085),
d8684b300d22 Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
141 Listen => 5,
d8684b300d22 Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
142 Reuse => 1
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 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
145
d8684b300d22 Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
146 local $SIG{PIPE} = 'IGNORE';
d8684b300d22 Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
147
d8684b300d22 Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
148 while (my $client = $server->accept()) {
d8684b300d22 Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
149 $client->autoflush(1);
d8684b300d22 Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
150
d8684b300d22 Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
151 my $headers = '';
d8684b300d22 Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
152 my $uri = '';
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 while (<$client>) {
d8684b300d22 Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
155 $headers .= $_;
d8684b300d22 Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
156 last if (/^\x0d?\x0a?$/);
d8684b300d22 Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
157 }
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 $headers = encode_base64($headers, "");
d8684b300d22 Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
160
d8684b300d22 Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
161 print $client <<EOF;
d8684b300d22 Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
162 HTTP/1.1 200 OK
d8684b300d22 Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
163 Connection: close
d8684b300d22 Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
164 X-Headers: $headers
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 EOF
d8684b300d22 Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
167
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 }
d8684b300d22 Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
170
d8684b300d22 Tests: ignore_invalid_headers, underscores_in_headers directives.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
171 ###############################################################################