annotate proxy_request_buffering_ssl.t @ 1974:b5036a0f9ae0 default tip

Tests: improved compatibility when using recent "openssl" app. Starting with OpenSSL 3.0, "openssl genrsa" generates encrypted keys in PKCS#8 format instead of previously used PKCS#1 format. Further, since OpenSSL 1.1.0 such keys are using PBKDF2 hmacWithSHA256. Such keys are not supported by old SSL libraries, notably by OpenSSL before 1.0.0 (OpenSSL 0.9.8 only supports hmacWithSHA1) and by BoringSSL before May 21, 2019 (support for hmacWithSHA256 was added in 302a4dee6c), and trying to load such keys into nginx compiled with an old SSL library results in "unsupported prf" errors. To facilitate testing with old SSL libraries, keys are now generated with "openssl genrsa -traditional" if the flag is available.
author Maxim Dounin <mdounin@mdounin.ru>
date Mon, 06 May 2024 00:04:26 +0300
parents dbce8fb5f5f8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 ]
1488
dbce8fb5f5f8 Tests: align with OpenSSL security level 2.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1220
diff changeset
100 default_bits = 2048
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 '
1220
0af58b78df35 Tests: removed single quotes from system() calls.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1116
diff changeset
110 . "-config $d/openssl.conf -subj /CN=$name/ "
0af58b78df35 Tests: removed single quotes from system() calls.
Sergey Kandaurov <pluknet@nginx.com>
parents: 1116
diff changeset
111 . "-out $d/$name.crt -keyout $d/$name.key "
543
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 ###############################################################################