annotate ignore_invalid_headers.t @ 1585:bff287fbf347

Tests: added proxy_cookie_domain/path tests with "off" parameter.
author Sergey Kandaurov <pluknet@nginx.com>
date Thu, 23 Jul 2020 12:17:39 +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 ###############################################################################