Previously, r->headers_in.content_length_n was used, which is not 0 till
the request body is fully discarded, and the request might hang.
Adapted for nginx: the same change is applied to the HTTP/2 proxy
module (proxy_http_version 2), which is not present in freenginx and
used r->headers_in.content_length_n in the same way. With an HTTP/2
upstream, the stale length resulted in the request being rejected
by the upstream, since the stream was closed without the body.
Co-authored-by: Elijah Zupancic <e.zupancic@f5.com>
Signed-off-by: Elijah Zupancic <e.zupancic@f5.com>
Origin: <https://freenginx.org/hg/nginx/rev/
51e0dc7137843feda75b497773f598d3836c60a1>
ctx->internal_body_length = -1;
ctx->internal_chunked = 1;
+ } else if (r->discard_body) {
+ ctx->internal_body_length = 0;
+
} else {
ctx->internal_body_length = r->headers_in.content_length_n;
}
} else if (r->headers_in.chunked && r->reading_body) {
ctx->ctx.internal_body_length = -1;
+ } else if (r->discard_body) {
+ ctx->ctx.internal_body_length = 0;
+
} else {
ctx->ctx.internal_body_length = r->headers_in.content_length_n;
}