[nginx] Request body: all read data are now sent to filters.
Maxim Dounin
mdounin at mdounin.ru
Thu Aug 6 03:42:49 UTC 2020
details: https://hg.nginx.org/nginx/rev/08ff2e10ae92
branches:
changeset: 7691:08ff2e10ae92
user: Maxim Dounin <mdounin at mdounin.ru>
date: Thu Aug 06 05:02:44 2020 +0300
description:
Request body: all read data are now sent to filters.
This is a prerequisite for the next change to allow large reads
on chunk boundaries.
diffstat:
src/http/ngx_http_request_body.c | 53 +++++++--------------------------------
1 files changed, 10 insertions(+), 43 deletions(-)
diffs (82 lines):
diff -r 8253424d1aff -r 08ff2e10ae92 src/http/ngx_http_request_body.c
--- a/src/http/ngx_http_request_body.c Thu Aug 06 05:02:22 2020 +0300
+++ b/src/http/ngx_http_request_body.c Thu Aug 06 05:02:44 2020 +0300
@@ -282,28 +282,12 @@ ngx_http_do_read_client_request_body(ngx
for ( ;; ) {
if (rb->buf->last == rb->buf->end) {
- if (rb->buf->pos != rb->buf->last) {
-
- /* pass buffer to request body filter chain */
-
- out.buf = rb->buf;
- out.next = NULL;
-
- rc = ngx_http_request_body_filter(r, &out);
+ /* update chains */
- if (rc != NGX_OK) {
- return rc;
- }
-
- } else {
+ rc = ngx_http_request_body_filter(r, NULL);
- /* update chains */
-
- rc = ngx_http_request_body_filter(r, NULL);
-
- if (rc != NGX_OK) {
- return rc;
- }
+ if (rc != NGX_OK) {
+ return rc;
}
if (rb->busy != NULL) {
@@ -355,17 +339,15 @@ ngx_http_do_read_client_request_body(ngx
rb->buf->last += n;
r->request_length += n;
- if (n == rest) {
- /* pass buffer to request body filter chain */
+ /* pass buffer to request body filter chain */
- out.buf = rb->buf;
- out.next = NULL;
+ out.buf = rb->buf;
+ out.next = NULL;
- rc = ngx_http_request_body_filter(r, &out);
+ rc = ngx_http_request_body_filter(r, &out);
- if (rc != NGX_OK) {
- return rc;
- }
+ if (rc != NGX_OK) {
+ return rc;
}
if (rb->rest == 0) {
@@ -386,21 +368,6 @@ ngx_http_do_read_client_request_body(ngx
if (!c->read->ready) {
- if (r->request_body_no_buffering
- && rb->buf->pos != rb->buf->last)
- {
- /* pass buffer to request body filter chain */
-
- out.buf = rb->buf;
- out.next = NULL;
-
- rc = ngx_http_request_body_filter(r, &out);
-
- if (rc != NGX_OK) {
- return rc;
- }
- }
-
clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
ngx_add_timer(c->read, clcf->client_body_timeout);
More information about the nginx-devel
mailing list