aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaxim Dounin <mdounin@mdounin.ru>2012-09-05 15:06:47 +0000
committerMaxim Dounin <mdounin@mdounin.ru>2012-09-05 15:06:47 +0000
commit5867c81fe6c9485937fe87c43634cdaab29b483b (patch)
tree1d7477d316284d8e2e4e9293e9b919022cd1d889 /src
parent605a0ab2e1bbaba36e3d275e22b066238f87b4cb (diff)
downloadnginx-5867c81fe6c9485937fe87c43634cdaab29b483b.tar.gz
nginx-5867c81fe6c9485937fe87c43634cdaab29b483b.zip
Write filter: replaced unneeded loop with one to free chains.
Noted by Gabor Lekeny.
Diffstat (limited to 'src')
-rw-r--r--src/http/ngx_http_write_filter_module.c18
1 files changed, 7 insertions, 11 deletions
diff --git a/src/http/ngx_http_write_filter_module.c b/src/http/ngx_http_write_filter_module.c
index 72b1f9b2f..fd44bc659 100644
--- a/src/http/ngx_http_write_filter_module.c
+++ b/src/http/ngx_http_write_filter_module.c
@@ -185,18 +185,14 @@ ngx_http_write_filter(ngx_http_request_t *r, ngx_chain_t *in)
}
if (size == 0 && !(c->buffered & NGX_LOWLEVEL_BUFFERED)) {
- if (last) {
- r->out = NULL;
- c->buffered &= ~NGX_HTTP_WRITE_BUFFERED;
-
- return NGX_OK;
- }
-
- if (flush) {
- do {
- r->out = r->out->next;
- } while (r->out);
+ if (last || flush) {
+ for (cl = r->out; cl; /* void */) {
+ ln = cl;
+ cl = cl->next;
+ ngx_free_chain(r->pool, ln);
+ }
+ r->out = NULL;
c->buffered &= ~NGX_HTTP_WRITE_BUFFERED;
return NGX_OK;