From: Roman Arutyunyan Date: Thu, 14 May 2020 11:49:53 +0000 (+0300) Subject: HTTP/3: move body parser call out of ngx_http_parse_chunked(). X-Git-Tag: release-1.25.0~4^2~705 X-Git-Url: http://git.kaiwu.me/postgresql/log/contrib/postgres_fdw/static/gitweb.js?a=commitdiff_plain;h=d69f678e9c788e2c2424eb6dc2fbacf8366213f6;p=nginx.git 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. --- diff --git a/src/http/ngx_http_parse.c b/src/http/ngx_http_parse.c index 92bcf12ad..f66593443 100644 --- a/src/http/ngx_http_parse.c +++ b/src/http/ngx_http_parse.c @@ -2185,12 +2185,6 @@ ngx_http_parse_chunked(ngx_http_request_t *r, ngx_buf_t *b, 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) { diff --git a/src/http/ngx_http_request_body.c b/src/http/ngx_http_request_body.c index b07d8562f..568f11f02 100644 --- a/src/http/ngx_http_request_body.c +++ b/src/http/ngx_http_request_body.c @@ -735,7 +735,16 @@ ngx_http_discard_request_body_filter(ngx_http_request_t *r, ngx_buf_t *b) 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 @@ ngx_http_request_body_chunked_filter(ngx_http_request_t *r, ngx_chain_t *in) 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) {