Mercurial > hg > nginx
changeset 5926:08bfc7188a41
Write filter: fixed handling of sync bufs (ticket #132).
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Fri, 28 Nov 2014 16:58:39 +0300 |
parents | c76d851c5e7a |
children | ac2a8e4d8f01 |
files | src/http/ngx_http_write_filter_module.c |
diffstat | 1 files changed, 11 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/http/ngx_http_write_filter_module.c Fri Nov 28 16:57:50 2014 +0300 +++ b/src/http/ngx_http_write_filter_module.c Fri Nov 28 16:58:39 2014 +0300 @@ -48,7 +48,7 @@ ngx_http_write_filter(ngx_http_request_t *r, ngx_chain_t *in) { off_t size, sent, nsent, limit; - ngx_uint_t last, flush; + ngx_uint_t last, flush, sync; ngx_msec_t delay; ngx_chain_t *cl, *ln, **ll, *chain; ngx_connection_t *c; @@ -62,6 +62,7 @@ size = 0; flush = 0; + sync = 0; last = 0; ll = &r->out; @@ -105,6 +106,10 @@ flush = 1; } + if (cl->buf->sync) { + sync = 1; + } + if (cl->buf->last_buf) { last = 1; } @@ -157,6 +162,10 @@ flush = 1; } + if (cl->buf->sync) { + sync = 1; + } + if (cl->buf->last_buf) { last = 1; } @@ -188,7 +197,7 @@ && !(c->buffered & NGX_LOWLEVEL_BUFFERED) && !(last && c->need_last_buf)) { - if (last || flush) { + if (last || flush || sync) { for (cl = r->out; cl; /* void */) { ln = cl; cl = cl->next;