annotate h3_request_body_discard.t @ 1965:84f4d4930835

Tests: relaxed mail_imap_ssl.t cipher matching. Previously, exact match between cipher name in the log and the one from IO::Socket:SSL was needed, which might not be the case if nginx and Net::SSLeay are compiled with different SSL libraries, notably LibreSSL (which uses names like AEAD-AES256-GCM-SHA384 till 3.5.0), and OpenSSL or BoringSSL (which use TLS_AES_256_GCM_SHA384). In particular, this affects macOS, where Net::SSLeay compiled with LibreSSL 3.3.6 is shipped with the OS, while nginx is likely to be compiled with OpenSSL. Fix is to not require exact match but instead accept properly looking names as checked by a regular expression, similarly to how it is already tested in ssl.t and stream_ssl_variables.t.
author Maxim Dounin <mdounin@mdounin.ru>
date Mon, 06 May 2024 00:01:40 +0300
parents fe6f22da53ec
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1961
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
1 #!/usr/bin/perl
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
2
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
3 # (C) Maxim Dounin
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
4
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
5 # Tests for discarding request body with HTTP/3.
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
6
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
7 ###############################################################################
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
8
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
9 use warnings;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
10 use strict;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
11
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
12 use Test::More;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
13 use Socket qw/ CRLF /;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
14
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
15 BEGIN { use FindBin; chdir($FindBin::Bin); }
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
16
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
17 use lib 'lib';
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
18 use Test::Nginx;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
19 use Test::Nginx::HTTP3;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
20
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
21 ###############################################################################
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
22
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
23 select STDERR; $| = 1;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
24 select STDOUT; $| = 1;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
25
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
26 my $t = Test::Nginx->new()
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
27 ->has(qw/http http_v3 proxy rewrite addition memcached cryptx/)
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
28 ->has_daemon('openssl');
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
29
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
30 plan(skip_all => 'not yet') unless $t->has_version('1.27.0');
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
31
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
32 $t->plan(37)->write_file_expand('nginx.conf', <<'EOF');
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
33
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
34 %%TEST_GLOBALS%%
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
35
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
36 daemon off;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
37
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
38 events {
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
39 }
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
40
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
41 http {
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
42 %%TEST_GLOBALS_HTTP%%
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
43
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
44 ssl_certificate localhost.crt;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
45 ssl_certificate_key localhost.key;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
46
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
47 server {
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
48 listen 127.0.0.1:%%PORT_8980_UDP%% quic;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
49 server_name localhost;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
50
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
51 lingering_timeout 1s;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
52 add_header X-Body body:$content_length:$request_body:;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
53
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
54 client_max_body_size 1k;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
55
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
56 location / {
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
57 error_page 413 /error413;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
58 proxy_pass http://127.0.0.1:8082;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
59 }
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
60
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
61 location /error413 {
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
62 return 200 "custom error 413";
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
63 }
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
64
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
65 location /add {
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
66 return 200 "main response";
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
67 add_before_body /add/before;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
68 addition_types *;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
69 client_max_body_size 1m;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
70 }
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
71
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
72 location /add/before {
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
73 proxy_pass http://127.0.0.1:8081;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
74 }
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
75
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
76 location /memcached {
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
77 client_max_body_size 1m;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
78 error_page 502 /memcached/error502;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
79 memcached_pass 127.0.0.1:8083;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
80 set $memcached_key $request_uri;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
81 }
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
82
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
83 location /memcached/error502 {
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
84 proxy_pass http://127.0.0.1:8081;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
85 }
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
86
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
87 location /proxy {
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
88 client_max_body_size 3;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
89 error_page 413 /proxy/error413;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
90 error_page 400 /proxy/error400;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
91 error_page 502 /proxy/error502;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
92 proxy_pass http://127.0.0.1:8083;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
93 }
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
94
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
95 location /proxy/error413 {
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
96 proxy_pass http://127.0.0.1:8081;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
97 }
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
98
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
99 location /proxy/error400 {
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
100 proxy_pass http://127.0.0.1:8081;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
101 }
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
102
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
103 location /proxy/error502 {
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
104 proxy_pass http://127.0.0.1:8081;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
105 }
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
106
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
107 location /unbuf {
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
108 client_max_body_size 1m;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
109 error_page 502 /unbuf/error502;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
110 proxy_pass http://127.0.0.1:8083;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
111 proxy_request_buffering off;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
112 proxy_http_version 1.1;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
113 }
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
114
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
115 location /unbuf/error502 {
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
116 client_max_body_size 1m;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
117 proxy_pass http://127.0.0.1:8081;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
118 }
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
119
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
120 location /unbuf2 {
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
121 client_max_body_size 1m;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
122 error_page 400 /unbuf2/error400;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
123 proxy_pass http://127.0.0.1:8081;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
124 proxy_request_buffering off;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
125 proxy_http_version 1.1;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
126 }
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
127
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
128 location /unbuf2/error400 {
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
129 client_max_body_size 1m;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
130 proxy_pass http://127.0.0.1:8081;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
131 }
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
132
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
133 location /length {
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
134 client_max_body_size 1;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
135 error_page 413 /length/error413;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
136 error_page 502 /length/error502;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
137 proxy_pass http://127.0.0.1:8083;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
138 }
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
139
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
140 location /length/error413 {
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
141 return 200 "frontend body:$content_length:$request_body:";
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
142 }
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
143
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
144 location /length/error502 {
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
145 return 200 "frontend body:$content_length:$request_body:";
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
146 }
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
147 }
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
148
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
149 server {
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
150 listen 127.0.0.1:8081;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
151 server_name localhost;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
152
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
153 location / {
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
154 proxy_pass http://127.0.0.1:8082;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
155 proxy_set_header X-Body body:$content_length:$request_body:;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
156 }
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
157 }
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
158
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
159 server {
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
160 listen 127.0.0.1:8082;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
161 server_name localhost;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
162
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
163 return 200 "backend $http_x_body";
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
164 }
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
165
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
166 server {
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
167 listen 127.0.0.1:8083;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
168 server_name localhost;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
169
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
170 return 444;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
171 }
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
172 }
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
173
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
174 EOF
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
175
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
176 $t->write_file('openssl.conf', <<EOF);
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
177 [ req ]
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
178 default_bits = 2048
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
179 encrypt_key = no
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
180 distinguished_name = req_distinguished_name
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
181 [ req_distinguished_name ]
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
182 EOF
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
183
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
184 my $d = $t->testdir();
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
185
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
186 foreach my $name ('localhost') {
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
187 system('openssl req -x509 -new '
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
188 . "-config $d/openssl.conf -subj /CN=$name/ "
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
189 . "-out $d/$name.crt -keyout $d/$name.key "
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
190 . ">>$d/openssl.out 2>&1") == 0
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
191 or die "Can't create certificate for $name: $!\n";
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
192 }
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
193
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
194 $t->run();
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
195
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
196 ###############################################################################
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
197
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
198 # error_page 413 should work without redefining client_max_body_size
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
199
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
200 like(http3_get_body('/', '0123456789' x 128),
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
201 qr/status: 413.*custom error 413/s, 'custom error 413');
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
202
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
203 # subrequest after discarding body
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
204
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
205 like(http3_get('/add'),
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
206 qr/backend body:::.*main response/s, 'add');
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
207 like(http3_get_body('/add', '0123456789'),
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
208 qr/backend body:::.*main response/s, 'add small');
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
209 like(http3_get_body_incomplete('/add', 10000, '0123456789'),
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
210 qr/backend body:::.*main response/s, 'add long');
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
211 like(http3_get_body_nolen('/add', '0123456789'),
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
212 qr/backend body:::.*main response/s, 'add nolen');
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
213 like(http3_get_body_nolen('/add', '0', '123456789'),
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
214 qr/backend body:::.*main response/s, 'add nolen multi');
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
215 like(http3_get_body_incomplete_nolen('/add', 10000, '0123456789'),
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
216 qr/backend body:::.*main response/s, 'add chunked long');
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
217
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
218 # error_page 502 with proxy_pass after discarding body
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
219
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
220 like(http3_get('/memcached'),
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
221 qr/backend body:::/s, 'memcached');
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
222 like(http3_get_body('/memcached', '0123456789'),
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
223 qr/status: 502.*backend body:::/s, 'memcached small');
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
224 like(http3_get_body_incomplete('/memcached', 10000, '0123456789'),
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
225 qr/status: 502.*backend body:::/s, 'memcached long');
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
226 like(http3_get_body_nolen('/memcached', '0123456789'),
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
227 qr/status: 502.*backend body:::/s, 'memcached nolen');
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
228 like(http3_get_body_nolen('/memcached', '0', '123456789'),
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
229 qr/status: 502.*backend body:::/s, 'memcached nolen multi');
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
230 like(http3_get_body_incomplete_nolen('/memcached', 10000, '0123456789'),
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
231 qr/status: 502.*backend body:::/s, 'memcached nolen long');
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
232
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
233 # error_page 413 with proxy_pass
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
234
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
235 like(http3_get('/proxy'),
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
236 qr/status: 502.*backend body:::/s, 'proxy');
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
237 like(http3_get_body('/proxy', '0123456789'),
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
238 qr/status: 413.*backend body:::/s, 'proxy small');
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
239 like(http3_get_body_incomplete('/proxy', 10000, '0123456789'),
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
240 qr/status: 413.*backend body:::/s, 'proxy long');
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
241 like(http3_get_body_nolen('/proxy', '0123456789'),
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
242 qr/status: 413.*backend body:::/s, 'proxy nolen');
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
243 like(http3_get_body_nolen('/proxy', '0', '123456789'),
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
244 qr/status: 413.*backend body:::/s, 'proxy nolen multi');
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
245 like(http3_get_body_incomplete_nolen('/proxy', '0123456789'),
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
246 qr/status: 413.*backend body:::/s, 'proxy nolen long');
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
247
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
248 # error_page 400 with proxy_pass
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
249
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
250 like(http3_get_body_custom('/proxy', 1, ''),
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
251 qr/status: 400.*backend body:::/s, 'proxy too short');
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
252 like(http3_get_body_custom('/proxy', 1, '01'),
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
253 qr/status: 400.*backend body:::/s, 'proxy too long');
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
254 like(http3_get_body_custom('/proxy', 1, '01', more => 1),
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
255 qr/status: 400.*backend body:::/s, 'proxy too long more');
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
256
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
257 # error_page 502 after proxy with request buffering disabled
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
258
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
259 like(http3_get('/unbuf'),
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
260 qr/status: 502.*backend body:::/s, 'unbuf proxy');
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
261 like(http3_get_body_custom('/unbuf', 10, '0123456789', sleep => 0.1),
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
262 qr/status: 502.*backend body:::/s, 'unbuf proxy small');
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
263 like(http3_get_body_incomplete('/unbuf', 10000, '0123456789'),
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
264 qr/status: 502.*backend body:::/s, 'unbuf proxy long');
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
265 like(http3_get_body_nolen('/unbuf', '0123456789'),
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
266 qr/status: 502.*backend body:::/s, 'unbuf proxy nolen');
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
267 like(http3_get_body_nolen('/unbuf', '0', '123456789'),
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
268 qr/status: 502.*backend body:::/s, 'unbuf proxy nolen multi');
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
269 like(http3_get_body_incomplete_nolen('/unbuf', 10000, '0123456789'),
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
270 qr/status: 502.*backend body:::/s, 'unbuf proxy nolen long');
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
271
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
272 # error_page 400 after proxy with request buffering disabled
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
273
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
274 like(http3_get_body_custom('/unbuf2', 1, '', sleep => 0.1),
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
275 qr/status: 400.*backend body:::/s, 'unbuf too short');
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
276 like(http3_get_body_custom('/unbuf2', 1, '01', sleep => 0.1),
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
277 qr/status: 400.*backend body:::/s, 'unbuf too long');
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
278 like(http3_get_body_custom('/unbuf2', 1, '01', sleep => 0.1, more => 1),
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
279 qr/status: 400.*backend body:::/s, 'unbuf too long more');
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
280
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
281 # error_page 413 and $content_length
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
282 # (used in fastcgi_pass, grpc_pass, uwsgi_pass)
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
283
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
284 like(http3_get('/length'),
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
285 qr/status: 502.*frontend body:::/s, '$content_length');
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
286 like(http3_get_body('/length', '0123456789'),
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
287 qr/status: 413.*frontend body:::/s, '$content_length small');
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
288 like(http3_get_body_incomplete('/length', 10000, '0123456789'),
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
289 qr/status: 413.*frontend body:::/s, '$content_length long');
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
290 like(http3_get_body_nolen('/length', '0123456789'),
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
291 qr/status: 413.*frontend body:::/s, '$content_length nolen');
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
292 like(http3_get_body_nolen('/length', '0', '123456789'),
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
293 qr/status: 413.*frontend body:::/s, '$content_length nolen multi');
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
294 like(http3_get_body_incomplete_nolen('/length', 10000, '0123456789'),
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
295 qr/status: 413.*frontend body:::/s, '$content_length nolen long');
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
296
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
297 ###############################################################################
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
298
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
299 sub http3_get {
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
300 my ($uri) = @_;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
301
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
302 my $s = Test::Nginx::HTTP3->new();
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
303 my $sid = $s->new_stream({ path => $uri });
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
304 my $frames = $s->read(all => [{ sid => $sid, fin => 1 }]);
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
305
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
306 my ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
307 my (@data) = grep { $_->{type} eq "DATA" } @$frames;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
308
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
309 return join("\n", map { "$_: " . $frame->{headers}->{$_}; }
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
310 keys %{$frame->{headers}}) . "\n\n"
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
311 . join("", map { $_->{data} } @data);
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
312 }
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
313
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
314 sub http3_get_body {
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
315 my ($uri, $body) = @_;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
316
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
317 my $s = Test::Nginx::HTTP3->new();
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
318 my $sid = $s->new_stream({ path => $uri, body => $body });
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
319 my $frames = $s->read(all => [{ sid => $sid, fin => 1 }]);
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
320
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
321 my ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
322 my (@data) = grep { $_->{type} eq "DATA" } @$frames;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
323
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
324 return join("\n", map { "$_: " . $frame->{headers}->{$_}; }
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
325 keys %{$frame->{headers}}) . "\n\n"
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
326 . join("", map { $_->{data} } @data);
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
327 }
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
328
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
329 sub http3_get_body_nolen {
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
330 my ($uri, $body, $body2) = @_;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
331
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
332 my $s = Test::Nginx::HTTP3->new();
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
333 my $sid = $s->new_stream({ path => $uri, body_more => 1 });
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
334
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
335 if (defined $body2) {
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
336 select undef, undef, undef, 0.1;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
337 $s->h3_body($body, $sid, { body_more => 1 });
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
338 select undef, undef, undef, 0.1;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
339 $s->h3_body($body2, $sid);
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
340 } else {
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
341 select undef, undef, undef, 0.1;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
342 $s->h3_body($body, $sid);
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
343 }
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
344
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
345 my $frames = $s->read(all => [{ sid => $sid, fin => 1 }]);
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
346
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
347 my ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
348 my (@data) = grep { $_->{type} eq "DATA" } @$frames;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
349
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
350 return join("\n", map { "$_: " . $frame->{headers}->{$_}; }
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
351 keys %{$frame->{headers}}) . "\n\n"
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
352 . join("", map { $_->{data} } @data);
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
353 }
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
354
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
355 sub http3_get_body_incomplete {
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
356 my ($uri, $len, $body) = @_;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
357
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
358 my $s = Test::Nginx::HTTP3->new();
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
359 my $sid = $s->new_stream({
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
360 headers => [
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
361 { name => ':method', value => 'GET' },
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
362 { name => ':scheme', value => 'http' },
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
363 { name => ':path', value => $uri },
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
364 { name => ':authority', value => 'localhost' },
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
365 { name => 'content-length', value => $len },
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
366 ],
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
367 body_more => 1
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
368 });
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
369 $s->h3_body($body, $sid, { body_more => 1 });
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
370
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
371 my $frames = $s->read(all => [{ sid => $sid, fin => 1 }]);
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
372
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
373 my ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
374 my (@data) = grep { $_->{type} eq "DATA" } @$frames;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
375
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
376 return join("\n", map { "$_: " . $frame->{headers}->{$_}; }
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
377 keys %{$frame->{headers}}) . "\n\n"
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
378 . join("", map { $_->{data} } @data);
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
379 }
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
380
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
381 sub http3_get_body_incomplete_nolen {
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
382 my ($uri, $body) = @_;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
383
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
384 my $s = Test::Nginx::HTTP3->new();
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
385 my $sid = $s->new_stream({ path => $uri, body_more => 1 });
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
386 $s->h3_body($body, $sid, { body_more => 1 });
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
387
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
388 my $frames = $s->read(all => [{ sid => $sid, fin => 1 }]);
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
389
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
390 my ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
391 my (@data) = grep { $_->{type} eq "DATA" } @$frames;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
392
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
393 return join("\n", map { "$_: " . $frame->{headers}->{$_}; }
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
394 keys %{$frame->{headers}}) . "\n\n"
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
395 . join("", map { $_->{data} } @data);
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
396 }
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
397
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
398 sub http3_get_body_custom {
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
399 my ($uri, $len, $body, %extra) = @_;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
400
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
401 my $s = Test::Nginx::HTTP3->new();
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
402 my $sid = $s->new_stream({
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
403 headers => [
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
404 { name => ':method', value => 'GET' },
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
405 { name => ':scheme', value => 'http' },
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
406 { name => ':path', value => $uri },
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
407 { name => ':authority', value => 'localhost' },
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
408 { name => 'content-length', value => $len },
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
409 ],
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
410 body_more => 1
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
411 });
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
412 select undef, undef, undef, $extra{sleep} if $extra{sleep};
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
413 $s->h3_body($body, $sid, { body_more => 1 });
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
414 $s->h3_body('', $sid) unless $extra{more};
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
415
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
416 my $frames = $s->read(all => [{ sid => $sid, fin => 1 }]);
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
417
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
418 my ($frame) = grep { $_->{type} eq "HEADERS" } @$frames;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
419 my (@data) = grep { $_->{type} eq "DATA" } @$frames;
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
420
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
421 return join("\n", map { "$_: " . $frame->{headers}->{$_}; }
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
422 keys %{$frame->{headers}}) . "\n\n"
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
423 . join("", map { $_->{data} } @data);
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
424 }
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
425
fe6f22da53ec Tests: tests for usage of discarded body.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff changeset
426 ###############################################################################