annotate proxy_request_buffering_ssl.t @ 549:e4ff43e00d84

Tests: refactored least_conn test. First, start long requests to busy both backends, and ensure that subsequent consecutive requests are balanced to the only backend with zero connections. This change aims to get rid of false negatives due timing issues.
author Sergey Kandaurov <pluknet@nginx.com>
date Fri, 17 Apr 2015 17:54:06 +0300
parents fa48f8a195a3
children 907e89fba9c3
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/)
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
28 ->has_daemon('openssl');
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
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
116 $t->try_run('no proxy_request_buffering')->plan(18);
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 TODO: {
546
fa48f8a195a3 Tests: adjusted proxy_request_buffering_ssl.t TODOs.
Sergey Kandaurov <pluknet@nginx.com>
parents: 545
diff changeset
157 local $TODO = 'not yet' unless $t->has_version('1.7.12');
543
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 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
160 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
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
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
164 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
165
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
166 }
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
167
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
168 $s = get_body('/preread', 8082, 15, '01234');
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
169 ok($s, 'preread');
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
170
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
171 SKIP: {
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
172 skip 'preread failed', 3 unless $s;
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
173
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
174 is($s->{preread}, '01234', 'preread - preread');
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 TODO: {
546
fa48f8a195a3 Tests: adjusted proxy_request_buffering_ssl.t TODOs.
Sergey Kandaurov <pluknet@nginx.com>
parents: 545
diff changeset
177 local $TODO = 'not yet' unless $t->has_version('1.7.12');
543
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 is($s->{upload}('56789'), '56789', 'preread - body part');
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
180 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
181
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
182 }
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
183
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
184 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
185
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
186 }
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
187
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
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
190 sub http_get_body {
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
191 my $uri = shift;
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
192 my $last = pop;
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
193 return http( join '', (map {
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
194 my $body = $_;
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
195 "GET $uri HTTP/1.1" . CRLF
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
196 . "Host: localhost" . CRLF
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
197 . "Content-Length: " . (length $body) . CRLF . CRLF
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
198 . $body
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
199 } @_),
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
200 "GET $uri HTTP/1.1" . CRLF
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
201 . "Host: localhost" . CRLF
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
202 . "Connection: close" . CRLF
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
203 . "Content-Length: " . (length $last) . CRLF . CRLF
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
204 . $last
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
205 );
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
206 }
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 sub get_body {
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
209 my ($url, $port, $length, $body) = @_;
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
210 my ($server, $client, $s);
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
211
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
212 $server = IO::Socket::INET->new(
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
213 Proto => 'tcp',
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
214 LocalHost => '127.0.0.1',
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
215 LocalPort => $port,
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
216 Listen => 5,
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
217 Reuse => 1
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
218 )
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
219 or die "Can't create listening socket: $!\n";
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 my $r = <<EOF;
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
222 GET $url HTTP/1.1
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
223 Host: localhost
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
224 Connection: close
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
225 Content-Length: $length
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
226
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
227 EOF
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 if (defined $body) {
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
230 $r .= $body;
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
231 }
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 $s = http($r, start => 1);
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 eval {
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
236 local $SIG{ALRM} = sub { die "timeout\n" };
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
237 local $SIG{PIPE} = sub { die "sigpipe\n" };
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
238 alarm(5);
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 $client = $server->accept();
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 alarm(0);
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
243 };
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
244 alarm(0);
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
245 if ($@) {
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
246 log_in("died: $@");
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
247 return undef;
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
248 }
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 $client->sysread(my $buf, 1024);
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
251 $buf =~ s/.*?\x0d\x0a?\x0d\x0a?(.*)/$1/ms;
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
252
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
253 my $f = { preread => $buf };
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
254 $f->{upload} = sub {
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
255 my $buf = shift;
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
256
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
257 eval {
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
258 local $SIG{ALRM} = sub { die "timeout\n" };
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
259 local $SIG{PIPE} = sub { die "sigpipe\n" };
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
260 alarm(5);
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 $s->write($buf);
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
263 $client->sysread($buf, 1024);
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
264
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
265 alarm(0);
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 alarm(0);
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
268 if ($@) {
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
269 log_in("died: $@");
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
270 return undef;
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
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
273 return $buf;
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 $f->{http_end} = sub {
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
276 my $buf = '';
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
277
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
278 $client->write(<<EOF);
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
279 HTTP/1.1 200 OK
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
280 Connection: close
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
281 X-Port: $port
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
282
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
283 OK
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
284 EOF
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 $client->close;
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
287
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
288 eval {
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
289 local $SIG{ALRM} = sub { die "timeout\n" };
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
290 local $SIG{PIPE} = sub { die "sigpipe\n" };
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
291 alarm(5);
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
292
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
293 $s->sysread($buf, 1024);
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
294
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
295 alarm(0);
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 alarm(0);
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
298 if ($@) {
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
299 log_in("died: $@");
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
300 return undef;
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
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
303 return $buf;
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
304 };
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
305 return $f;
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
306 }
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
307
a36757f66c75 Tests: unbuffered request body to ssl backend.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff changeset
308 ###############################################################################