diff options
author | Maxim Dounin <mdounin@mdounin.ru> | 2012-09-05 15:06:47 +0000 |
---|---|---|
committer | Maxim Dounin <mdounin@mdounin.ru> | 2012-09-05 15:06:47 +0000 |
commit | 5867c81fe6c9485937fe87c43634cdaab29b483b (patch) | |
tree | 1d7477d316284d8e2e4e9293e9b919022cd1d889 /src | |
parent | 605a0ab2e1bbaba36e3d275e22b066238f87b4cb (diff) | |
download | nginx-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.c | 18 |
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; |