diff options
| author | Sergey Kandaurov <pluknet@nginx.com> | 2019-09-04 13:33:51 +0300 |
|---|---|---|
| committer | Sergey Kandaurov <pluknet@nginx.com> | 2019-09-04 13:33:51 +0300 |
| commit | 5a2ce3f4ee55eb8903aa9481deaaf402d5a2e805 (patch) | |
| tree | 1052eb0f4fd8cdd4f95fbe542bd7902f4c893c2e /src/http/ngx_http_core_module.c | |
| parent | 77c01f10a1ab7796f57ef354fb1f078e09afe2c4 (diff) | |
| download | nginx-5a2ce3f4ee55eb8903aa9481deaaf402d5a2e805.tar.gz nginx-5a2ce3f4ee55eb8903aa9481deaaf402d5a2e805.tar.bz2 | |
Fixed "return" with discarding invalid chunked body.
When ngx_http_discard_request_body() call was added to ngx_http_send_response(),
there were no return codes other than NGX_OK and NGX_HTTP_INTERNAL_SERVER_ERROR.
Now it can also return NGX_HTTP_BAD_REQUEST, but ngx_http_send_response() still
incorrectly transforms it to NGX_HTTP_INTERNAL_SERVER_ERROR.
The fix is to propagate ngx_http_discard_request_body() errors.
Diffstat (limited to 'src/http/ngx_http_core_module.c')
| -rw-r--r-- | src/http/ngx_http_core_module.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c index 5a015ea33..aa03fd617 100644 --- a/src/http/ngx_http_core_module.c +++ b/src/http/ngx_http_core_module.c @@ -1660,8 +1660,10 @@ ngx_http_send_response(ngx_http_request_t *r, ngx_uint_t status, ngx_buf_t *b; ngx_chain_t out; - if (ngx_http_discard_request_body(r) != NGX_OK) { - return NGX_HTTP_INTERNAL_SERVER_ERROR; + rc = ngx_http_discard_request_body(r); + + if (rc != NGX_OK) { + return rc; } r->headers_out.status = status; |
