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.
This commit is contained in:
Roman Arutyunyan 2020-05-14 14:49:53 +03:00
parent 1c54340e0a
commit d69f678e9c
2 changed files with 20 additions and 8 deletions

View File

@ -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) {

View File

@ -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) {