Mercurial > hg > nginx-tests
annotate proxy_available.t @ 1982:fb25cbe9d4ec
Tests: explicit Valgrind support.
Valgrind logging is done to a separate file, as it is not able to
follow stderr redirection within nginx or append to a file without
corrupting it. Further, Valgrind logging seems to interfere with
error suppression in tests, and catches various startup errors and
warnings, so the log is additionally filtered.
Since startup under Valgrind can be really slow, timeout in waitforfile()
was changed to 10 seconds.
Prodded by Robert Mueller.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Fri, 31 May 2024 06:23:00 +0300 |
parents | 4b80f1ab7fdc |
children | a095b971fbcc |
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 ############################################################################### |