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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 ###############################################################################