Mercurial > hg > nginx-tests
annotate proxy_available.t @ 1951:1867428f1673
Tests: fixed h3_limit_req.t spurious failures.
In the "reset stream - cancellation" test, HTTP/3 stream is closed without
sending the request body when the request is waiting in the limit_req
module, and this results in error 444. However, when the request is received
with some minor delay due to system load, it is not delayed by limit_req,
and the stream is closed during reading the request body, which results
in error 400 instead, breaking the test.
Fix is to introduce yet another request before the "reset stream" test,
so the stream in question is always delayed by limit_req.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Thu, 14 Mar 2024 02:25:49 +0300 |
parents | 4b80f1ab7fdc |
children |
rev | line source |
---|---|
1779
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
2 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
3 # (C) Sergey Kandaurov |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
4 # (C) Nginx, Inc. |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
5 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
6 # Tests for http proxy module with available bytes counting. |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
7 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
8 ############################################################################### |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
9 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
10 use warnings; |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
11 use strict; |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
12 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
13 use Test::More; |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
14 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
15 use IO::Select; |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
16 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
17 BEGIN { use FindBin; chdir($FindBin::Bin); } |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
18 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
19 use lib 'lib'; |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
20 use Test::Nginx qw/ :DEFAULT http_end /; |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
21 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
22 ############################################################################### |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
23 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
24 select STDERR; $| = 1; |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
25 select STDOUT; $| = 1; |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
26 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
27 my $t = Test::Nginx->new()->has(qw/http proxy/)->plan(2); |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
28 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
29 $t->write_file_expand('nginx.conf', <<'EOF'); |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
30 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
31 %%TEST_GLOBALS%% |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
32 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
33 daemon off; |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
34 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
35 events { |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
36 } |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
37 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
38 http { |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
39 %%TEST_GLOBALS_HTTP%% |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
40 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
41 server { |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
42 listen 127.0.0.1:8080; |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
43 server_name localhost; |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
44 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
45 location /buffered { |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
46 proxy_pass http://127.0.0.1:8081; |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
47 proxy_buffer_size 512; |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
48 } |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
49 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
50 location /unbuffered { |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
51 proxy_pass http://127.0.0.1:8082; |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
52 proxy_buffer_size 512; |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
53 proxy_buffering off; |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
54 } |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
55 } |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
56 } |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
57 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
58 EOF |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
59 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
60 $t->run_daemon(\&http_daemon, port(8081)); |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
61 $t->run_daemon(\&http_daemon, port(8082)); |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
62 $t->run(); |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
63 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
64 $t->waitforsocket('127.0.0.1:' . port(8081)); |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
65 $t->waitforsocket('127.0.0.1:' . port(8082)); |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
66 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
67 ############################################################################### |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
68 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
69 # ticket #2367: socket leaks with EPOLLRDHUP |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
70 # due to missing rev->ready reset on rev->available == 0 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
71 # |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
72 # to reproduce leaks, the first part of the response should fit proxy buffer |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
73 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
74 my $s = http_get('/buffered', start => 1); |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
75 IO::Select->new($s)->can_read(3); |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
76 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
77 $t->reload(); |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
78 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
79 TODO: { |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
80 local $TODO = 'not yet' if $^O eq 'linux' and !$t->has_version('1.23.1'); |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
81 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
82 like(http_end($s), qr/AND-THIS/, 'zero available - buffered'); |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
83 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
84 } |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
85 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
86 $s = http_get('/unbuffered', start => 1); |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
87 IO::Select->new($s)->can_read(3); |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
88 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
89 $t->stop(); |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
90 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
91 like(http_end($s), qr/AND-THIS/, 'zero available - unbuffered'); |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
92 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
93 $t->todo_alerts() if $^O eq 'linux' and !$t->has_version('1.23.1'); |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
94 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
95 ############################################################################### |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
96 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
97 sub http_daemon { |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
98 my ($port) = @_; |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
99 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
100 my $server = IO::Socket::INET->new( |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
101 Proto => 'tcp', |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
102 LocalHost => "127.0.0.1:$port", |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
103 Listen => 5, |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
104 Reuse => 1 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
105 ) |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
106 or die "Can't create listening socket: $!\n"; |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
107 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
108 local $SIG{PIPE} = 'IGNORE'; |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
109 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
110 while (my $client = $server->accept()) { |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
111 $client->autoflush(1); |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
112 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
113 my $headers = ''; |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
114 my $uri = ''; |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
115 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
116 while (<$client>) { |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
117 $headers .= $_; |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
118 last if (/^\x0d?\x0a?$/); |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
119 } |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
120 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
121 next if $headers eq ''; |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
122 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
123 my $r = <<EOF; |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
124 HTTP/1.1 200 OK |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
125 Connection: close |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
126 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
127 EOF |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
128 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
129 $r = $r . 'x' x (512 - length($r)); |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
130 print $client $r; |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
131 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
132 select undef, undef, undef, 1.1; |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
133 print $client 'AND-THIS'; |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
134 } |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
135 } |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
136 |
4b80f1ab7fdc
Tests: socket leaks with zero available bytes (ticket #2367).
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
137 ############################################################################### |