Passing requests to SCGI uses a recalculated size of a request body
as per changes made in
d60b8d10f (1.3.9) to support CONTENT_LENGTH
with chunked body requests. This, however, is not compatible with
unbuffered mode introduced later in
7ec559df5 (1.7.11), where such
an approach may not always represent complete request body.
The fix is to use r->headers_in.content_length_n representing either
original Content-Length, if any, or a recalculated value from request
body filters, such as chunked body filter.
Reported by Mufeed VH.
u_char buffer[NGX_OFF_T_LEN];
content_length_n = 0;
- body = r->upstream->request_bufs;
- while (body) {
- content_length_n += ngx_buf_size(body->buf);
- body = body->next;
+ if (r->headers_in.content_length_n > 0) {
+ content_length_n = r->headers_in.content_length_n;
}
content_length.data = buffer;