mirror of
https://github.com/nginx/nginx.git
synced 2024-11-28 08:09:00 +08:00
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.
This commit is contained in:
parent
bd7dad5b0e
commit
9edc93fe0e
@ -282,28 +282,12 @@ ngx_http_do_read_client_request_body(ngx_http_request_t *r)
|
|||||||
for ( ;; ) {
|
for ( ;; ) {
|
||||||
if (rb->buf->last == rb->buf->end) {
|
if (rb->buf->last == rb->buf->end) {
|
||||||
|
|
||||||
if (rb->buf->pos != rb->buf->last) {
|
/* update chains */
|
||||||
|
|
||||||
/* pass buffer to request body filter chain */
|
rc = ngx_http_request_body_filter(r, NULL);
|
||||||
|
|
||||||
out.buf = rb->buf;
|
if (rc != NGX_OK) {
|
||||||
out.next = NULL;
|
return rc;
|
||||||
|
|
||||||
rc = ngx_http_request_body_filter(r, &out);
|
|
||||||
|
|
||||||
if (rc != NGX_OK) {
|
|
||||||
return rc;
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
/* update chains */
|
|
||||||
|
|
||||||
rc = ngx_http_request_body_filter(r, NULL);
|
|
||||||
|
|
||||||
if (rc != NGX_OK) {
|
|
||||||
return rc;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rb->busy != NULL) {
|
if (rb->busy != NULL) {
|
||||||
@ -355,17 +339,15 @@ ngx_http_do_read_client_request_body(ngx_http_request_t *r)
|
|||||||
rb->buf->last += n;
|
rb->buf->last += n;
|
||||||
r->request_length += 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.buf = rb->buf;
|
||||||
out.next = NULL;
|
out.next = NULL;
|
||||||
|
|
||||||
rc = ngx_http_request_body_filter(r, &out);
|
rc = ngx_http_request_body_filter(r, &out);
|
||||||
|
|
||||||
if (rc != NGX_OK) {
|
if (rc != NGX_OK) {
|
||||||
return rc;
|
return rc;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rb->rest == 0) {
|
if (rb->rest == 0) {
|
||||||
@ -386,21 +368,6 @@ ngx_http_do_read_client_request_body(ngx_http_request_t *r)
|
|||||||
|
|
||||||
if (!c->read->ready) {
|
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);
|
clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
|
||||||
ngx_add_timer(c->read, clcf->client_body_timeout);
|
ngx_add_timer(c->read, clcf->client_body_timeout);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user