Skip to content

Commit

Permalink
HTTP/2: improved handling of END_STREAM in a separate DATA frame.
Browse files Browse the repository at this point in the history
The save body filter saves the request body to disk once the buffer is full.
Yet in HTTP/2 this might happen even if there is no need to save anything
to disk, notably when content length is known and the END_STREAM flag is
sent in a separate empty DATA frame.  Workaround is to provide additional
byte in the buffer, so saving the request body won't be triggered.

This fixes unexpected request body disk buffering in HTTP/2 observed after
the previous change when content length is known and the END_STREAM flag
is sent in a separate empty DATA frame.
  • Loading branch information
mdounin committed Aug 29, 2021
1 parent 78d9a3a commit 9f90d11
Showing 1 changed file with 3 additions and 0 deletions.
3 changes: 3 additions & 0 deletions src/http/v2/ngx_http_v2.c
Original file line number Diff line number Diff line change
Expand Up @@ -4034,6 +4034,9 @@ ngx_http_v2_read_request_body(ngx_http_request_t *r)

if (len < 0 || len > (off_t) clcf->client_body_buffer_size) {
len = clcf->client_body_buffer_size;

} else {
len++;
}

if (r->request_body_no_buffering && !stream->in_closed) {
Expand Down

0 comments on commit 9f90d11

Please sign in to comment.