Mercurial > hg > nginx
diff src/http/ngx_http_request.h @ 7914:9cf043a5d9ca
Request body: reading body buffering in filters.
If a filter wants to buffer the request body during reading (for
example, to check an external scanner), it can now do so. To make
it possible, the code now checks rb->last_saved (introduced in the
previous change) along with rb->rest == 0.
Since in HTTP/2 this requires flow control to avoid overflowing the
request body buffer, so filters which need buffering have to set
the rb->filter_need_buffering flag on the first filter call. (Note
that each filter is expected to call the next filter, so all filters
will be able set the flag if needed.)
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Sun, 29 Aug 2021 22:22:02 +0300 |
parents | 185c86b830ef |
children | f8f6b9fee66a fac88e160653 |
line wrap: on
line diff
--- a/src/http/ngx_http_request.h Sun Aug 29 22:21:03 2021 +0300 +++ b/src/http/ngx_http_request.h Sun Aug 29 22:22:02 2021 +0300 @@ -302,6 +302,8 @@ ngx_chain_t *busy; ngx_http_chunked_t *chunked; ngx_http_client_body_handler_pt post_handler; + unsigned filter_need_buffering:1; + unsigned last_sent:1; unsigned last_saved:1; } ngx_http_request_body_t;