diff src/http/ngx_http_request_body.c @ 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 5649079a41f4
children 532fe796b0e2
line wrap: on
line diff
--- 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
 
         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
                            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) {