Mercurial > hg > nginx
changeset 8404:e5d4f057a6cb quic
HTTP/3: move body parser call out of ngx_http_parse_chunked().
The function ngx_http_parse_chunked() is also called from the proxy module to
parse the upstream response. It should always parse HTTP/1 body in this case.
author | Roman Arutyunyan <arut@nginx.com> |
---|---|
date | Thu, 14 May 2020 14:49:53 +0300 |
parents | c101438c69a4 |
children | d2759e4cc437 |
files | src/http/ngx_http_parse.c src/http/ngx_http_request_body.c |
diffstat | 2 files changed, 20 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/src/http/ngx_http_parse.c Tue May 19 15:41:41 2020 +0300 +++ b/src/http/ngx_http_parse.c Thu May 14 14:49:53 2020 +0300 @@ -2185,12 +2185,6 @@ sw_trailer_header_almost_done } state; -#if (NGX_HTTP_V3) - if (r->http_version == NGX_HTTP_VERSION_30) { - return ngx_http_v3_parse_request_body(r, b, ctx); - } -#endif - state = ctx->state; if (state == sw_chunk_data && ctx->size == 0) {
--- a/src/http/ngx_http_request_body.c Tue May 19 15:41:41 2020 +0300 +++ b/src/http/ngx_http_request_body.c Thu May 14 14:49:53 2020 +0300 @@ -735,7 +735,16 @@ for ( ;; ) { - rc = ngx_http_parse_chunked(r, b, rb->chunked); + switch (r->http_version) { +#if (NGX_HTTP_V3) + case NGX_HTTP_VERSION_30: + rc = ngx_http_v3_parse_request_body(r, b, rb->chunked); + break; +#endif + + default: /* HTTP/1.x */ + rc = ngx_http_parse_chunked(r, b, rb->chunked); + } if (rc == NGX_OK) { @@ -978,7 +987,16 @@ cl->buf->file_pos, cl->buf->file_last - cl->buf->file_pos); - rc = ngx_http_parse_chunked(r, cl->buf, rb->chunked); + switch (r->http_version) { +#if (NGX_HTTP_V3) + case NGX_HTTP_VERSION_30: + rc = ngx_http_v3_parse_request_body(r, cl->buf, rb->chunked); + break; +#endif + + default: /* HTTP/1.x */ + rc = ngx_http_parse_chunked(r, cl->buf, rb->chunked); + } if (rc == NGX_OK) {