HTTP/2: fixed saving preread buffer to temp file (ticket #1143).

Previously, a request body bigger than "client_body_buffer_size" wasn't written
into a temporary file if it has been pre-read entirely.  The preread buffer
is freed after processing, thus subsequent use of it might result in sending
corrupted body or cause a segfault.
This commit is contained in:
Valentin Bartenev 2016-11-28 19:19:21 +03:00
parent 4c6e31a857
commit 89f92b3243

View File

@ -3575,6 +3575,9 @@ ngx_http_v2_read_request_body(ngx_http_request_t *r,
rb->buf = ngx_create_temp_buf(r->pool, (size_t) len);
} else {
/* enforce writing body to file */
r->request_body_in_file_only = 1;
rb->buf = ngx_calloc_buf(r->pool);
if (rb->buf != NULL) {