summaryrefslogtreecommitdiffhomepage
path: root/src/http/ngx_http_core_module.c
diff options
context:
space:
mode:
authorSergey Kandaurov <pluknet@nginx.com>2019-09-04 13:33:51 +0300
committerSergey Kandaurov <pluknet@nginx.com>2019-09-04 13:33:51 +0300
commit5a2ce3f4ee55eb8903aa9481deaaf402d5a2e805 (patch)
tree1052eb0f4fd8cdd4f95fbe542bd7902f4c893c2e /src/http/ngx_http_core_module.c
parent77c01f10a1ab7796f57ef354fb1f078e09afe2c4 (diff)
downloadnginx-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.c6
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;