Mercurial > hg > nginx-vendor-current
diff src/http/ngx_http_write_filter_module.c @ 76:da9a3b14312d NGINX_0_1_38
nginx 0.1.38
*) Feature: the "limit_rate" directive is supported in in proxy and
FastCGI mode.
*) Feature: the "X-Accel-Limit-Rate" response header line is supported
in proxy and FastCGI mode.
*) Feature: the "break" directive.
*) Feature: the "log_not_found" directive.
*) Bugfix: the response status code was not changed when request was
redirected by the ""X-Accel-Redirect" header line.
*) Bugfix: the variables set by the "set" directive could not be used
in SSI.
*) Bugfix: the segmentation fault may occurred if the SSI page has more
than one remote subrequest.
*) Bugfix: nginx treated the backend response as invalid if the status
line in the header was transferred in two packets; bug appeared in
0.1.29.
*) Feature: the "ssi_types" directive.
*) Feature: the "autoindex_exact_size" directive.
*) Bugfix: the ngx_http_autoindex_module did not support the long file
names in UTF-8.
*) Feature: the IMAP/POP3 proxy.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Fri, 08 Jul 2005 00:00:00 +0400 |
parents | 0790a8599248 |
children | 71c46860eb55 |
line wrap: on
line diff
--- a/src/http/ngx_http_write_filter_module.c +++ b/src/http/ngx_http_write_filter_module.c @@ -47,6 +47,12 @@ ngx_http_write_filter(ngx_http_request_t ngx_connection_t *c; ngx_http_core_loc_conf_t *clcf; + c = r->connection; + + if (c->closed) { + return NGX_ERROR; + } + size = 0; flush = 0; last = 0; @@ -151,8 +157,6 @@ ngx_http_write_filter(ngx_http_request_t *ll = NULL; - c = r->connection; - ngx_log_debug3(NGX_LOG_DEBUG_HTTP, c->log, 0, "http write filter: l:%d f:%d s:%O", last, flush, size); @@ -197,19 +201,20 @@ ngx_http_write_filter(ngx_http_request_t sent = c->sent; - chain = c->send_chain(c, r->out, clcf->limit_rate); + chain = c->send_chain(c, r->out, r->limit_rate); ngx_log_debug1(NGX_LOG_DEBUG_HTTP, c->log, 0, "http write filter %p", chain); - if (clcf->limit_rate) { + if (r->limit_rate) { sent = c->sent - sent; c->write->delayed = 1; ngx_add_timer(r->connection->write, - (ngx_msec_t) (sent * 1000 / clcf->limit_rate)); + (ngx_msec_t) (sent * 1000 / r->limit_rate)); } if (chain == NGX_CHAIN_ERROR) { + c->closed = 1; return NGX_ERROR; }