]> git.kaiwu.me - nginx.git/commitdiff
Request body: do not create temp file if there's nothing to write.
authorRoman Arutyunyan <arut@nginx.com>
Fri, 10 Sep 2021 09:59:22 +0000 (12:59 +0300)
committerRoman Arutyunyan <arut@nginx.com>
Fri, 10 Sep 2021 09:59:22 +0000 (12:59 +0300)
Do this only when the entire request body is empty and
r->request_body_in_file_only is set.

The issue manifested itself with missing warning "a client request body is
buffered to a temporary file" when the entire rb->buf is full and all buffers
are delayed by a filter.

src/http/ngx_http_request_body.c

index 89a4c7492678589e44ea6312b4b58e99ca6823b9..ad3549f9802ba22880bf88df50cbcbdf3f642fbe 100644 (file)
@@ -1309,7 +1309,7 @@ ngx_http_request_body_save_filter(ngx_http_request_t *r, ngx_chain_t *in)
 
     if (rb->rest > 0) {
 
-        if (rb->buf && rb->buf->last == rb->buf->end
+        if (rb->bufs && rb->buf && rb->buf->last == rb->buf->end
             && ngx_http_write_request_body(r) != NGX_OK)
         {
             return NGX_HTTP_INTERNAL_SERVER_ERROR;