Mercurial > hg > nginx-tests
annotate proxy_request_buffering_ssl.t @ 1215:26884729e06b
Tests: cope with resolver resend in mail resolver tests.
Currently, if resolver didn't find PTR type in the answer section of PTR
response, it keeps the node in the resend queue until the next timer event.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Thu, 31 Aug 2017 19:09:04 +0300 |
parents | 8ef51dbb5d69 |
children | 0af58b78df35 |
rev | line source |
---|---|
543
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
2 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
3 # (C) Maxim Dounin |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
4 # (C) Sergey Kandaurov |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
5 # (C) Nginx, Inc. |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
6 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
7 # Tests for unbuffered request body to ssl backend. |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
8 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
9 ############################################################################### |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
10 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
11 use warnings; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
12 use strict; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
13 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
14 use Test::More; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
15 use Socket qw/ CRLF /; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
16 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
17 BEGIN { use FindBin; chdir($FindBin::Bin); } |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
18 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
19 use lib 'lib'; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
20 use Test::Nginx; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
21 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
22 ############################################################################### |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
23 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
24 select STDERR; $| = 1; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
25 select STDOUT; $| = 1; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
26 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
27 my $t = Test::Nginx->new()->has(qw/http http_ssl proxy rewrite/) |
568
907e89fba9c3
Tests: removed TODO and try_run() checks for legacy versions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
546
diff
changeset
|
28 ->has_daemon('openssl')->plan(18); |
543
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
29 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
30 $t->write_file_expand('nginx.conf', <<'EOF'); |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
31 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
32 %%TEST_GLOBALS%% |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
33 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
34 daemon off; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
35 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
36 events { |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
37 } |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
38 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
39 http { |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
40 %%TEST_GLOBALS_HTTP%% |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
41 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
42 server { |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
952
diff
changeset
|
43 listen 127.0.0.1:8080; |
543
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
44 server_name localhost; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
45 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
46 client_header_buffer_size 1k; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
47 proxy_request_buffering off; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
48 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
49 location / { |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
50 client_body_buffer_size 2k; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
51 add_header X-Body "$request_body"; |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
952
diff
changeset
|
52 proxy_pass https://127.0.0.1:8081; |
543
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
53 } |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
54 location /single { |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
55 client_body_in_single_buffer on; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
56 add_header X-Body "$request_body"; |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
952
diff
changeset
|
57 proxy_pass https://127.0.0.1:8081; |
543
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
58 } |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
59 location /discard { |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
60 return 200 "TEST\n"; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
61 } |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
62 location /preread { |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
952
diff
changeset
|
63 proxy_pass https://127.0.0.1:8081; |
543
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
64 } |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
65 location /error_page { |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
952
diff
changeset
|
66 proxy_pass https://127.0.0.1:8081/404; |
543
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
67 error_page 404 /404; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
68 proxy_intercept_errors on; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
69 } |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
70 location /404 { |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
71 return 200 "$request_body\n"; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
72 } |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
73 } |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
74 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
75 server { |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
952
diff
changeset
|
76 listen 127.0.0.1:8081 ssl; |
543
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
77 server_name localhost; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
78 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
79 ssl_certificate_key localhost.key; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
80 ssl_certificate localhost.crt; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
81 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
82 location /preread { |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
83 client_body_buffer_size 2k; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
84 add_header X-Body "$request_body"; |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
952
diff
changeset
|
85 proxy_pass http://127.0.0.1:8082/; |
545
dbf8fb0f3d30
Tests: fixed unbuffered request body tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
543
diff
changeset
|
86 proxy_request_buffering off; |
543
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
87 } |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
88 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
89 location / { |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
952
diff
changeset
|
90 proxy_pass http://127.0.0.1:8080/discard; |
543
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
91 } |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
92 location /404 { } |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
93 } |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
94 } |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
95 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
96 EOF |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
97 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
98 $t->write_file('openssl.conf', <<EOF); |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
99 [ req ] |
1116
8ef51dbb5d69
Tests: reduced OpenSSL default key length to 1024.
Sergey Kandaurov <pluknet@nginx.com>
parents:
974
diff
changeset
|
100 default_bits = 1024 |
543
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
101 encrypt_key = no |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
102 distinguished_name = req_distinguished_name |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
103 [ req_distinguished_name ] |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
104 EOF |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
105 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
106 my $d = $t->testdir(); |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
107 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
108 foreach my $name ('localhost') { |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
109 system('openssl req -x509 -new ' |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
110 . "-config '$d/openssl.conf' -subj '/CN=$name/' " |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
111 . "-out '$d/$name.crt' -keyout '$d/$name.key' " |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
112 . ">>$d/openssl.out 2>&1") == 0 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
113 or die "Can't create certificate for $name: $!\n"; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
114 } |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
115 |
568
907e89fba9c3
Tests: removed TODO and try_run() checks for legacy versions.
Sergey Kandaurov <pluknet@nginx.com>
parents:
546
diff
changeset
|
116 $t->run(); |
543
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
117 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
118 ############################################################################### |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
119 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
120 unlike(http_get('/'), qr/X-Body:/ms, 'no body'); |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
121 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
122 like(http_get_body('/', '0123456789'), |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
123 qr/X-Body: 0123456789\x0d?$/ms, 'body'); |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
124 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
125 like(http_get_body('/', '0123456789' x 128), |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
126 qr/X-Body: (0123456789){128}\x0d?$/ms, 'body in two buffers'); |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
127 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
128 like(http_get_body('/single', '0123456789' x 128), |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
129 qr/X-Body: (0123456789){128}\x0d?$/ms, 'body in single buffer'); |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
130 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
131 like(http_get_body('/error_page', '0123456789'), |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
132 qr/^0123456789$/m, 'body in error page'); |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
133 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
134 # pipelined requests |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
135 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
136 like(http_get_body('/', '0123456789', '0123456789' x 128, '0123456789' x 512, |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
137 'foobar'), qr/X-Body: foobar\x0d?$/ms, 'body pipelined'); |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
138 like(http_get_body('/', '0123456789' x 128, '0123456789' x 512, '0123456789', |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
139 'foobar'), qr/X-Body: foobar\x0d?$/ms, 'body pipelined 2'); |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
140 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
141 like(http_get_body('/discard', '0123456789', '0123456789' x 128, |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
142 '0123456789' x 512, 'foobar'), qr/(TEST.*){4}/ms, |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
143 'body discard'); |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
144 like(http_get_body('/discard', '0123456789' x 128, '0123456789' x 512, |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
145 '0123456789', 'foobar'), qr/(TEST.*){4}/ms, |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
146 'body discard 2'); |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
147 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
148 # interactive tests |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
149 |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
952
diff
changeset
|
150 my $s = get_body('/preread', port(8082), 10); |
543
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
151 ok($s, 'no preread'); |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
152 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
153 SKIP: { |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
154 skip 'no preread failed', 3 unless $s; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
155 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
156 is($s->{upload}('01234'), '01234', 'no preread - body part'); |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
157 is($s->{upload}('56789'), '56789', 'no preread - body part 2'); |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
158 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
159 like($s->{http_end}(), qr/200 OK/, 'no preread - response'); |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
160 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
161 } |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
162 |
974
882267679006
Tests: simplified parallel modifications in tests.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
952
diff
changeset
|
163 $s = get_body('/preread', port(8082), 15, '01234'); |
543
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
164 ok($s, 'preread'); |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
165 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
166 SKIP: { |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
167 skip 'preread failed', 3 unless $s; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
168 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
169 is($s->{preread}, '01234', 'preread - preread'); |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
170 is($s->{upload}('56789'), '56789', 'preread - body part'); |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
171 is($s->{upload}('abcde'), 'abcde', 'preread - body part 2'); |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
172 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
173 like($s->{http_end}(), qr/200 OK/, 'preread - response'); |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
174 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
175 } |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
176 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
177 ############################################################################### |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
178 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
179 sub http_get_body { |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
180 my $uri = shift; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
181 my $last = pop; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
182 return http( join '', (map { |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
183 my $body = $_; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
184 "GET $uri HTTP/1.1" . CRLF |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
185 . "Host: localhost" . CRLF |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
186 . "Content-Length: " . (length $body) . CRLF . CRLF |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
187 . $body |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
188 } @_), |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
189 "GET $uri HTTP/1.1" . CRLF |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
190 . "Host: localhost" . CRLF |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
191 . "Connection: close" . CRLF |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
192 . "Content-Length: " . (length $last) . CRLF . CRLF |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
193 . $last |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
194 ); |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
195 } |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
196 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
197 sub get_body { |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
198 my ($url, $port, $length, $body) = @_; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
199 my ($server, $client, $s); |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
200 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
201 $server = IO::Socket::INET->new( |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
202 Proto => 'tcp', |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
203 LocalHost => '127.0.0.1', |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
204 LocalPort => $port, |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
205 Listen => 5, |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
206 Reuse => 1 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
207 ) |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
208 or die "Can't create listening socket: $!\n"; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
209 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
210 my $r = <<EOF; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
211 GET $url HTTP/1.1 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
212 Host: localhost |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
213 Connection: close |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
214 Content-Length: $length |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
215 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
216 EOF |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
217 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
218 if (defined $body) { |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
219 $r .= $body; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
220 } |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
221 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
222 $s = http($r, start => 1); |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
223 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
224 eval { |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
225 local $SIG{ALRM} = sub { die "timeout\n" }; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
226 local $SIG{PIPE} = sub { die "sigpipe\n" }; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
227 alarm(5); |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
228 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
229 $client = $server->accept(); |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
230 |
837
68a6678abae2
Tests: improved logging for unbuffered request body tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
568
diff
changeset
|
231 log2c("(new connection $client)"); |
68a6678abae2
Tests: improved logging for unbuffered request body tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
568
diff
changeset
|
232 |
543
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
233 alarm(0); |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
234 }; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
235 alarm(0); |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
236 if ($@) { |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
237 log_in("died: $@"); |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
238 return undef; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
239 } |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
240 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
241 $client->sysread(my $buf, 1024); |
837
68a6678abae2
Tests: improved logging for unbuffered request body tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
568
diff
changeset
|
242 log2i($buf); |
68a6678abae2
Tests: improved logging for unbuffered request body tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
568
diff
changeset
|
243 |
543
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
244 $buf =~ s/.*?\x0d\x0a?\x0d\x0a?(.*)/$1/ms; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
245 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
246 my $f = { preread => $buf }; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
247 $f->{upload} = sub { |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
248 my $buf = shift; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
249 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
250 eval { |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
251 local $SIG{ALRM} = sub { die "timeout\n" }; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
252 local $SIG{PIPE} = sub { die "sigpipe\n" }; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
253 alarm(5); |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
254 |
837
68a6678abae2
Tests: improved logging for unbuffered request body tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
568
diff
changeset
|
255 log_out($buf); |
543
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
256 $s->write($buf); |
837
68a6678abae2
Tests: improved logging for unbuffered request body tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
568
diff
changeset
|
257 |
543
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
258 $client->sysread($buf, 1024); |
837
68a6678abae2
Tests: improved logging for unbuffered request body tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
568
diff
changeset
|
259 log2i($buf); |
543
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
260 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
261 alarm(0); |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
262 }; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
263 alarm(0); |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
264 if ($@) { |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
265 log_in("died: $@"); |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
266 return undef; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
267 } |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
268 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
269 return $buf; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
270 }; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
271 $f->{http_end} = sub { |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
272 my $buf = ''; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
273 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
274 $client->write(<<EOF); |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
275 HTTP/1.1 200 OK |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
276 Connection: close |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
277 X-Port: $port |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
278 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
279 OK |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
280 EOF |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
281 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
282 $client->close; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
283 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
284 eval { |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
285 local $SIG{ALRM} = sub { die "timeout\n" }; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
286 local $SIG{PIPE} = sub { die "sigpipe\n" }; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
287 alarm(5); |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
288 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
289 $s->sysread($buf, 1024); |
837
68a6678abae2
Tests: improved logging for unbuffered request body tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
568
diff
changeset
|
290 log_in($buf); |
543
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
291 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
292 alarm(0); |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
293 }; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
294 alarm(0); |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
295 if ($@) { |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
296 log_in("died: $@"); |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
297 return undef; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
298 } |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
299 |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
300 return $buf; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
301 }; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
302 return $f; |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
303 } |
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
304 |
837
68a6678abae2
Tests: improved logging for unbuffered request body tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
568
diff
changeset
|
305 sub log2i { Test::Nginx::log_core('|| <<', @_); } |
68a6678abae2
Tests: improved logging for unbuffered request body tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
568
diff
changeset
|
306 sub log2o { Test::Nginx::log_core('|| >>', @_); } |
68a6678abae2
Tests: improved logging for unbuffered request body tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
568
diff
changeset
|
307 sub log2c { Test::Nginx::log_core('||', @_); } |
68a6678abae2
Tests: improved logging for unbuffered request body tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
568
diff
changeset
|
308 |
543
a36757f66c75
Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
309 ############################################################################### |