Mercurial > hg > nginx-tests
annotate proxy_duplicate_headers.t @ 1933:9bafe7cddd3c
Tests: improved QUIC key update tests with old keys.
On unsuccessful protection removal, it is now retried with old keys.
Otherwise, old keys are removed to ensure they're no longer in use.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Mon, 21 Aug 2023 17:26:47 +0400 |
parents | 735226e4c7fe |
children | a095b971fbcc |
rev | line source |
---|---|
1769
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
2 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
3 # (C) Maxim Dounin |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
4 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
5 # Test for http backend returning response with invalid and duplicate |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
6 # headers. |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
7 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
8 ############################################################################### |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
9 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
10 use warnings; |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
11 use strict; |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
12 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
13 use Test::More; |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
14 use Socket qw/ CRLF /; |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
15 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
16 BEGIN { use FindBin; chdir($FindBin::Bin); } |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
17 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
18 use lib 'lib'; |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
19 use Test::Nginx; |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
20 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
21 ############################################################################### |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
22 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
23 select STDERR; $| = 1; |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
24 select STDOUT; $| = 1; |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
25 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
26 my $t = Test::Nginx->new()->has(qw/http proxy/)->plan(8); |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
27 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
28 $t->write_file_expand('nginx.conf', <<'EOF'); |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
29 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
30 %%TEST_GLOBALS%% |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
31 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
32 daemon off; |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
33 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
34 events { |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
35 } |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
36 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
37 http { |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
38 %%TEST_GLOBALS_HTTP%% |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
39 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
40 server { |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
41 listen 127.0.0.1:8080; |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
42 server_name localhost; |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
43 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
44 location / { |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
45 proxy_pass http://127.0.0.1:8081; |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
46 proxy_read_timeout 1s; |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
47 } |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
48 } |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
49 } |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
50 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
51 EOF |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
52 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
53 $t->run_daemon(\&http_daemon); |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
54 $t->run()->waitforsocket('127.0.0.1:' . port(8081)); |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
55 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
56 ############################################################################### |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
57 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
58 like(http_get('/'), qr/200 OK/, 'normal'); |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
59 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
60 TODO: { |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
61 local $TODO = 'not yet' unless $t->has_version('1.23.0'); |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
62 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
63 like(http_get('/invalid-length'), qr/502 Bad/, 'invalid length'); |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
64 like(http_get('/duplicate-length'), qr/502 Bad/, 'duplicate length'); |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
65 like(http_get('/unknown-transfer-encoding'), qr/502 Bad/, |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
66 'unknown transfer encoding'); |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
67 like(http_get('/duplicate-transfer-encoding'), qr/502 Bad/, |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
68 'duplicate transfer encoding'); |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
69 like(http_get('/length-and-transfer-encoding'), qr/502 Bad/, |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
70 'length and transfer encoding'); |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
71 like(http_get('/transfer-encoding-and-length'), qr/502 Bad/, |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
72 'transfer encoding and length'); |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
73 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
74 like(http_get('/duplicate-expires'), qr/Expires: foo(?!.*bar)/s, |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
75 'duplicate expires ignored'); |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
76 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
77 } |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
78 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
79 ############################################################################### |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
80 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
81 sub http_daemon { |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
82 my $server = IO::Socket::INET->new( |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
83 Proto => 'tcp', |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
84 LocalAddr => '127.0.0.1:' . port(8081), |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
85 Listen => 5, |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
86 Reuse => 1 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
87 ) |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
88 or die "Can't create listening socket: $!\n"; |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
89 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
90 local $SIG{PIPE} = 'IGNORE'; |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
91 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
92 while (my $client = $server->accept()) { |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
93 $client->autoflush(1); |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
94 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
95 my $headers = ''; |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
96 my $uri = ''; |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
97 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
98 while (<$client>) { |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
99 $headers .= $_; |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
100 last if (/^\x0d?\x0a?$/); |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
101 } |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
102 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
103 $uri = $1 if $headers =~ /^\S+\s+([^ ]+)\s+HTTP/i; |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
104 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
105 if ($uri eq '/') { |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
106 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
107 print $client |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
108 'HTTP/1.1 200 OK' . CRLF . |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
109 'Connection: close' . CRLF . |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
110 'Content-Length: 0' . CRLF . CRLF; |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
111 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
112 } elsif ($uri eq '/invalid-length') { |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
113 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
114 print $client |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
115 'HTTP/1.1 200 OK' . CRLF . |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
116 'Connection: close' . CRLF . |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
117 'Content-Length: foo' . CRLF . CRLF; |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
118 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
119 } elsif ($uri eq '/duplicate-length') { |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
120 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
121 print $client |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
122 'HTTP/1.1 200 OK' . CRLF . |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
123 'Connection: close' . CRLF . |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
124 'Content-Length: 0' . CRLF . |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
125 'Content-Length: 0' . CRLF . CRLF; |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
126 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
127 } elsif ($uri eq '/unknown-transfer-encoding') { |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
128 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
129 print $client |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
130 'HTTP/1.1 200 OK' . CRLF . |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
131 'Connection: close' . CRLF . |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
132 'Transfer-Encoding: foo' . CRLF . CRLF; |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
133 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
134 } elsif ($uri eq '/duplicate-transfer-encoding') { |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
135 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
136 print $client |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
137 'HTTP/1.1 200 OK' . CRLF . |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
138 'Connection: close' . CRLF . |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
139 'Transfer-Encoding: chunked' . CRLF . |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
140 'Transfer-Encoding: chunked' . CRLF . CRLF . |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
141 '0' . CRLF . CRLF; |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
142 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
143 } elsif ($uri eq '/length-and-transfer-encoding') { |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
144 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
145 print $client |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
146 'HTTP/1.1 200 OK' . CRLF . |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
147 'Connection: close' . CRLF . |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
148 'Content-Length: 0' . CRLF . |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
149 'Transfer-Encoding: chunked' . CRLF . CRLF . |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
150 '0' . CRLF . CRLF; |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
151 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
152 } elsif ($uri eq '/transfer-encoding-and-length') { |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
153 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
154 print $client |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
155 'HTTP/1.1 200 OK' . CRLF . |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
156 'Connection: close' . CRLF . |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
157 'Transfer-Encoding: chunked' . CRLF . |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
158 'Content-Length: 0' . CRLF . CRLF . |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
159 '0' . CRLF . CRLF; |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
160 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
161 } elsif ($uri eq '/duplicate-expires') { |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
162 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
163 print $client |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
164 'HTTP/1.1 200 OK' . CRLF . |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
165 'Connection: close' . CRLF . |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
166 'Expires: foo' . CRLF . |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
167 'Expires: bar' . CRLF . CRLF; |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
168 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
169 } |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
170 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
171 close $client; |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
172 } |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
173 } |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
174 |
735226e4c7fe
Tests: tests for duplicate response headers.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
175 ############################################################################### |