Mercurial > hg > nginx-quic
changeset 6375:e30c72b0dfda
HTTP/2: fixed request length accounting.
Now it includes not only the received body size,
but the size of headers block as well.
author | Valentin Bartenev <vbart@nginx.com> |
---|---|
date | Tue, 02 Feb 2016 16:33:55 +0300 |
parents | f598de1bfcd4 |
children | 0e0e2e522fa2 |
files | src/http/v2/ngx_http_v2.c |
diffstat | 1 files changed, 10 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/http/v2/ngx_http_v2.c +++ b/src/http/v2/ngx_http_v2.c @@ -1185,6 +1185,8 @@ ngx_http_v2_state_headers(ngx_http_v2_co return ngx_http_v2_connection_error(h2c, NGX_HTTP_V2_INTERNAL_ERROR); } + stream->request->request_length = h2c->state.length; + stream->in_closed = h2c->state.flags & NGX_HTTP_V2_END_STREAM_FLAG; stream->node = node; @@ -1751,7 +1753,6 @@ ngx_http_v2_handle_continuation(ngx_http return ngx_http_v2_connection_error(h2c, NGX_HTTP_V2_PROTOCOL_ERROR); } - h2c->state.length += ngx_http_v2_parse_length(head); h2c->state.flags |= p[4]; if (h2c->state.sid != ngx_http_v2_parse_sid(&p[5])) { @@ -1766,6 +1767,14 @@ ngx_http_v2_handle_continuation(ngx_http ngx_memcpy(pos, p, len); + len = ngx_http_v2_parse_length(head); + + h2c->state.length += len; + + if (h2c->state.stream) { + h2c->state.stream->request->request_length += len; + } + h2c->state.handler = handler; return pos; }