Mercurial > hg > nginx-tests
annotate proxy_duplicate_headers.t @ 1847:a9704b9ed7a2
Tests: removed multiple server certificates from ssl_ocsp.t.
Multiple server certificates are not needed to test OCSP verification of
client certificates (in contrast to OCSP stapling, where server certificates
are verified, and different staples should be correctly returned with
different server certificates). And using multiple server certificates
causes issues when testing with LibreSSL due to broken sigalgs-based
server certificate selection in LibreSSL with TLSv1.3.
Accordingly, the test is simplified to do not use multiple server
certificates.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Thu, 23 Mar 2023 19:50:26 +0300 |
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 ############################################################################### |