comparison src/http/ngx_http_write_filter_module.c @ 656:9d21dad0b5a1 NGINX_1_1_12

nginx 1.1.12 *) Change: a "proxy_pass" directive without URI part now uses changed URI after redirection with the "error_page" directive; Thanks to Lanshun Zhou. *) Feature: the "proxy/fastcgi/scgi/uwsgi_cache_lock", "proxy/fastcgi/scgi/uwsgi_cache_lock_timeout" directives. *) Feature: the "pcre_jit" directive. *) Feature: the "if" SSI command supports captures in regular expressions. *) Bugfix: the "if" SSI command did not work inside the "block" command. *) Bugfix: the "limit_conn_log_level" and "limit_req_log_level" directives might not work. *) Bugfix: the "limit_rate" directive did not allow to use full throughput, even if limit value was very high. *) Bugfix: the "sendfile_max_chunk" directive did not work, if the "limit_rate" directive was used. *) Bugfix: a "proxy_pass" directive without URI part always used original request URI if variables were used. *) Bugfix: a "proxy_pass" directive without URI part might use original request after redirection with the "try_files" directive; Thanks to Lanshun Zhou. *) Bugfix: in the ngx_http_scgi_module. *) Bugfix: in the ngx_http_mp4_module. *) Bugfix: nginx could not be built on Solaris; the bug had appeared in 1.1.9.
author Igor Sysoev <http://sysoev.ru>
date Mon, 26 Dec 2011 00:00:00 +0400
parents f39b9e29530d
children d0f7a625f27c
comparison
equal deleted inserted replaced
655:189afff6503f 656:9d21dad0b5a1
221 c->buffered |= NGX_HTTP_WRITE_BUFFERED; 221 c->buffered |= NGX_HTTP_WRITE_BUFFERED;
222 222
223 return NGX_AGAIN; 223 return NGX_AGAIN;
224 } 224 }
225 225
226 } else if (clcf->sendfile_max_chunk) { 226 if (clcf->sendfile_max_chunk
227 && (off_t) clcf->sendfile_max_chunk < limit)
228 {
229 limit = clcf->sendfile_max_chunk;
230 }
231
232 } else {
227 limit = clcf->sendfile_max_chunk; 233 limit = clcf->sendfile_max_chunk;
228
229 } else {
230 limit = 0;
231 } 234 }
232 235
233 sent = c->sent; 236 sent = c->sent;
234 237
235 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, c->log, 0, 238 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, c->log, 0,
260 if (nsent < 0) { 263 if (nsent < 0) {
261 nsent = 0; 264 nsent = 0;
262 } 265 }
263 } 266 }
264 267
265 delay = (ngx_msec_t) ((nsent - sent) * 1000 / r->limit_rate + 1); 268 delay = (ngx_msec_t) ((nsent - sent) * 1000 / r->limit_rate);
266 269
267 if (delay > 0) { 270 if (delay > 0) {
271 limit = 0;
268 c->write->delayed = 1; 272 c->write->delayed = 1;
269 ngx_add_timer(c->write, delay); 273 ngx_add_timer(c->write, delay);
270 } 274 }
271 275 }
272 } else if (c->write->ready 276
273 && clcf->sendfile_max_chunk 277 if (limit
274 && (size_t) (c->sent - sent) 278 && c->write->ready
275 >= clcf->sendfile_max_chunk - 2 * ngx_pagesize) 279 && c->sent - sent >= limit - (off_t) (2 * ngx_pagesize))
276 { 280 {
277 c->write->delayed = 1; 281 c->write->delayed = 1;
278 ngx_add_timer(c->write, 1); 282 ngx_add_timer(c->write, 1);
279 } 283 }
280 284