diff options
| author | Maxim Dounin <mdounin@mdounin.ru> | 2020-11-09 22:41:54 +0300 |
|---|---|---|
| committer | Maxim Dounin <mdounin@mdounin.ru> | 2020-11-09 22:41:54 +0300 |
| commit | a3b5ccd0566e618635303309dd8592aa4cfd7eaf (patch) | |
| tree | e980f78357a790cf3b8a9b8a414894e3682f62cb | |
| parent | 8ed303c055ee003285231b6d781bfe2dd9c0d3d1 (diff) | |
| download | nginx-a3b5ccd0566e618635303309dd8592aa4cfd7eaf.tar.gz nginx-a3b5ccd0566e618635303309dd8592aa4cfd7eaf.tar.bz2 | |
Request body: removed error assumption (ticket #2058).
Before introduction of request body filter in 42d9beeb22db, the only
possible return code from the ngx_http_request_body_filter() call
without actual buffers was NGX_HTTP_INTERNAL_SERVER_ERROR, and
the code in ngx_http_read_client_request_body() hardcoded the only
possible error to simplify the code of initial call to set rb->rest.
This is no longer true after introduction of request body filters though,
as a request body filter might need to return other errors, such as 403.
Fix is to preserve the error code actually returned by the call
instead of assuming 500.
| -rw-r--r-- | src/http/ngx_http_request_body.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/http/ngx_http_request_body.c b/src/http/ngx_http_request_body.c index 07e78d780..0cae88f77 100644 --- a/src/http/ngx_http_request_body.c +++ b/src/http/ngx_http_request_body.c @@ -137,8 +137,9 @@ ngx_http_read_client_request_body(ngx_http_request_t *r, } else { /* set rb->rest */ - if (ngx_http_request_body_filter(r, NULL) != NGX_OK) { - rc = NGX_HTTP_INTERNAL_SERVER_ERROR; + rc = ngx_http_request_body_filter(r, NULL); + + if (rc != NGX_OK) { goto done; } } |
