aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxim Dounin <mdounin@mdounin.ru>2015-03-23 21:09:12 +0300
committerMaxim Dounin <mdounin@mdounin.ru>2015-03-23 21:09:12 +0300
commitd21e644d80ed3a90220ee566e87b10780e027008 (patch)
treed56f9c72d3fac1372723593c76df43f93667b32d
parent4df7aa6f92e6c6f70002f72caaef6eb0ba6aea82 (diff)
downloadnginx-d21e644d80ed3a90220ee566e87b10780e027008.tar.gz
nginx-d21e644d80ed3a90220ee566e87b10780e027008.zip
Request body: free chain links in ngx_http_write_request_body().
-rw-r--r--src/http/ngx_http_request_body.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/http/ngx_http_request_body.c b/src/http/ngx_http_request_body.c
index 0a07dfa18..18a58d876 100644
--- a/src/http/ngx_http_request_body.c
+++ b/src/http/ngx_http_request_body.c
@@ -415,7 +415,7 @@ static ngx_int_t
ngx_http_write_request_body(ngx_http_request_t *r)
{
ssize_t n;
- ngx_chain_t *cl;
+ ngx_chain_t *cl, *ln;
ngx_temp_file_t *tf;
ngx_http_request_body_t *rb;
ngx_http_core_loc_conf_t *clcf;
@@ -478,8 +478,13 @@ ngx_http_write_request_body(ngx_http_request_t *r)
/* mark all buffers as written */
- for (cl = rb->bufs; cl; cl = cl->next) {
+ for (cl = rb->bufs; cl; /* void */) {
+
cl->buf->pos = cl->buf->last;
+
+ ln = cl;
+ cl = cl->next;
+ ngx_free_chain(r->pool, ln);
}
rb->bufs = NULL;