Mercurial > hg > nginx-vendor-1-0
diff src/http/ngx_http_write_filter_module.c @ 146:36af50a5582d NGINX_0_3_20
nginx 0.3.20
*) Bugfix: in SSI handling.
*) Bugfix: the ngx_http_memcached_module did not support the keys in
the "/usr?args" form.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Wed, 11 Jan 2006 00:00:00 +0300 |
parents | 91372f004adf |
children | 13710a1813ad |
line wrap: on
line diff
--- a/src/http/ngx_http_write_filter_module.c +++ b/src/http/ngx_http_write_filter_module.c @@ -179,20 +179,24 @@ ngx_http_write_filter(ngx_http_request_t } if (c->write->delayed) { + c->buffered |= NGX_HTTP_WRITE_BUFFERED; return NGX_AGAIN; } - if (size == 0 && !c->buffered) { + 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); + } while (r->out); + + c->buffered &= ~NGX_HTTP_WRITE_BUFFERED; return NGX_OK; } @@ -232,7 +236,14 @@ ngx_http_write_filter(ngx_http_request_t r->out = chain; - if (chain || (c->buffered && r->postponed == NULL)) { + if (chain) { + c->buffered |= NGX_HTTP_WRITE_BUFFERED; + return NGX_AGAIN; + } + + c->buffered &= ~NGX_HTTP_WRITE_BUFFERED; + + if ((c->buffered & NGX_LOWLEVEL_BUFFERED) && r->postponed == NULL) { return NGX_AGAIN; }