HTTP/2: fixed handling of fully preread request bodies. Previously, fully preread request body of a request without the "Content-Length" header was always written to a temporary file. Change-Id: I996d1be9aca1b7ec6b0c139111150d0b832abb12 Signed-off-by: Piotr Sikora <piotrsikora@google.com> Reviewed-on: https://nginx-review.googlesource.com/c/3540 Reviewed-by: Wayne Zhang <qiwzhang@google.com>
diff --git a/src/http/v2/ngx_http_v2.c b/src/http/v2/ngx_http_v2.c index 80520ee..04b3385 100644 --- a/src/http/v2/ngx_http_v2.c +++ b/src/http/v2/ngx_http_v2.c
@@ -3896,6 +3896,12 @@ { rb->buf = ngx_create_temp_buf(r->pool, (size_t) len); + } else if (len < 0 && stream->in_closed && stream->preread + && !r->request_body_in_file_only) + { + rb->buf = ngx_create_temp_buf(r->pool, + (size_t) ngx_buf_size(stream->preread)); + } else { rb->buf = ngx_calloc_buf(r->pool);