nginx/src/http
Valentin Bartenev 5429140c01 HTTP/2: implemented preread buffer for request body (closes #959).
Previously, the stream's window was kept zero in order to prevent a client
from sending the request body before it was requested (see 887cca40ba6a for
details).  Until such initial window was acknowledged all requests with
data were rejected (see 0aa07850922f for details).

That approach revealed a number of problems:

 1. Some clients (notably MS IE/Edge, Safari, iOS applications) show an error
    or even crash if a stream is rejected;

 2. This requires at least one RTT for every request with body before the
    client receives window update and able to send data.

To overcome these problems the new directive "http2_body_preread_size" is
introduced.  It sets the initial window and configures a special per stream
preread buffer that is used to save all incoming data before the body is
requested and processed.

If the directive's value is lower than the default initial window (65535),
as previously, all streams with data will be rejected until the new window
is acknowledged.  Otherwise, no special processing is used and all requests
with data are welcome right from the connection start.

The default value is chosen to be 64k, which is bigger than the default
initial window.  Setting it to zero is fully complaint to the previous
behavior.
2016-05-24 17:37:52 +03:00
..
modules Realip: detect duplicate real_ip_header directive. 2016-05-23 19:17:24 +03:00
v2 HTTP/2: implemented preread buffer for request body (closes #959). 2016-05-24 17:37:52 +03:00
ngx_http_cache.h Cache: added watermark to reduce IO load when keys_zone is full. 2016-03-18 15:08:21 +03:00
ngx_http_config.h Copyright updated. 2012-01-18 15:07:43 +00:00
ngx_http_copy_filter_module.c Copy filter: fixed sendfile aio handlers to set ctx->aio. 2016-03-03 21:14:19 +03:00
ngx_http_core_module.c Realip: port support in X-Real-IP and X-Forwarded-For. 2016-05-23 18:44:23 +03:00
ngx_http_core_module.h Renamed "u" to "sockaddr" in listen options types. 2016-05-23 16:37:28 +03:00
ngx_http_file_cache.c Cache: fixed updating bypassed cached errors (ticket #827). 2016-05-16 20:37:38 +03:00
ngx_http_header_filter_module.c HTTP/2: the "421 Misdirected Request" response (closes #848). 2016-05-20 18:41:17 +03:00
ngx_http_parse.c Added overflow checks for version numbers (ticket #762). 2016-05-18 16:21:32 +03:00
ngx_http_postpone_filter_module.c Fixed error logging. 2013-05-21 17:30:19 +04:00
ngx_http_request_body.c HTTP/2: support for unbuffered upload of request body. 2016-04-01 15:57:10 +03:00
ngx_http_request.c HTTP/2: the "421 Misdirected Request" response (closes #848). 2016-05-20 18:41:17 +03:00
ngx_http_request.h HTTP/2: the "421 Misdirected Request" response (closes #848). 2016-05-20 18:41:17 +03:00
ngx_http_script.c Fixed logging. 2016-03-31 02:33:57 +03:00
ngx_http_script.h Copyright updated. 2012-01-18 15:07:43 +00:00
ngx_http_special_response.c HTTP/2: the "421 Misdirected Request" response (closes #848). 2016-05-20 18:41:17 +03:00
ngx_http_upstream_round_robin.c Style. 2016-03-30 11:52:16 +03:00
ngx_http_upstream_round_robin.h Upstream: fixed shared upstreams on win32. 2015-06-16 00:43:00 +03:00
ngx_http_upstream.c Improved EPOLLRDHUP handling. 2016-05-13 17:19:23 +03:00
ngx_http_upstream.h Upstream: proxy_next_upstream non_idempotent. 2016-03-28 19:50:19 +03:00
ngx_http_variables.c Added the $proxy_protocol_port variable. 2016-05-23 18:44:21 +03:00
ngx_http_variables.h Removed unused ngx_http_clear_variable() macro. 2013-03-21 16:06:13 +00:00
ngx_http_write_filter_module.c Fixed logging. 2016-03-31 02:33:57 +03:00
ngx_http.c Renamed "u" to "sockaddr" in listen options types. 2016-05-23 16:37:28 +03:00
ngx_http.h The HTTP/2 implementation (RFC 7240, 7241). 2015-09-11 20:13:06 +03:00