annotate proxy_request_buffering_ssl.t @ 572:ca54b445d982

Tests: masked nginx bug in proxy next upstream. When iterating through several next upstreams per a worker cycle, a previously reported event about upstream connection error may be improperly applied to the next upstream, thus leading to the invalid connection error. E.g., in kqueue, where the problem is visible, this is caused by "ev->instance" that does not tolerate more than one next upstream at once, and kevents placed on the kqueue separately for read and write events. The change is to limit test case to the only one next upstream.
author Sergey Kandaurov <pluknet@nginx.com>
date Thu, 14 May 2015 11:54:24 +0300
parents 907e89fba9c3
children 68a6678abae2
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 {
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
43 listen 127.0.0.1:8080;
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";
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
52 proxy_pass https://127.0.0.1:8081;
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";
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
57 proxy_pass https://127.0.0.1:8081;
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 {
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
63 proxy_pass https://127.0.0.1:8081;
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 {
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
66 proxy_pass https://127.0.0.1:8081/404;
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 {
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
76 listen 127.0.0.1:8081 ssl;
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";
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
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 / {
545
dbf8fb0f3d30 Tests: fixed unbuffered request body tests.
Sergey Kandaurov <pluknet@nginx.com>
parents: 543
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 ]
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
100 default_bits = 2048
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
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
150 my $s = get_body('/preread', 8082, 10);
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
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
163 $s = get_body('/preread', 8082, 15, '01234');
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
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
231 alarm(0);
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
232 };
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 if ($@) {
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
235 log_in("died: $@");
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
236 return undef;
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
237 }
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
238
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
239 $client->sysread(my $buf, 1024);
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
240 $buf =~ s/.*?\x0d\x0a?\x0d\x0a?(.*)/$1/ms;
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
241
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
242 my $f = { preread => $buf };
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
243 $f->{upload} = sub {
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
244 my $buf = shift;
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 eval {
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
247 local $SIG{ALRM} = sub { die "timeout\n" };
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
248 local $SIG{PIPE} = sub { die "sigpipe\n" };
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
249 alarm(5);
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
250
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
251 $s->write($buf);
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
252 $client->sysread($buf, 1024);
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
253
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
254 alarm(0);
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
255 };
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
256 alarm(0);
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
257 if ($@) {
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
258 log_in("died: $@");
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
259 return undef;
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
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
262 return $buf;
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
263 };
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
264 $f->{http_end} = sub {
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
265 my $buf = '';
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
266
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
267 $client->write(<<EOF);
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
268 HTTP/1.1 200 OK
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
269 Connection: close
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
270 X-Port: $port
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
271
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
272 OK
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
273 EOF
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
274
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
275 $client->close;
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
276
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
277 eval {
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
278 local $SIG{ALRM} = sub { die "timeout\n" };
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
279 local $SIG{PIPE} = sub { die "sigpipe\n" };
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
280 alarm(5);
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 $s->sysread($buf, 1024);
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 alarm(0);
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
285 };
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
286 alarm(0);
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
287 if ($@) {
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
288 log_in("died: $@");
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
289 return undef;
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
290 }
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 return $buf;
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 return $f;
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
295 }
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
296
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
297 ###############################################################################