Mercurial > hg > nginx-vendor-1-0
comparison src/http/ngx_http_write_filter_module.c @ 644:ad25218fd14b NGINX_1_0_12
nginx 1.0.12
*) Feature: the "TLSv1.1" and "TLSv1.2" parameters of the
"ssl_protocols" directive.
*) Feature: the "if" SSI command supports captures in regular
expressions.
*) Bugfix: the "if" SSI command did not work inside the "block" command.
*) Bugfix: in AIO error handling on FreeBSD.
*) Bugfix: in the OpenSSL library initialization.
*) Bugfix: the "worker_cpu_affinity" directive might not work.
*) Bugfix: the "limit_conn_log_level" and "limit_req_log_level"
directives might not work.
*) Bugfix: the "read_ahead" directive might not work combined with
"try_files" and "open_file_cache".
*) Bugfix: the "proxy_cache_use_stale" directive with "error" parameter
did not return answer from cache if there were no live upstreams.
*) Bugfix: a segmentation fault might occur in a worker process if small
time was used in the "inactive" parameter of the "proxy_cache_path"
directive.
*) Bugfix: responses from cache might hang.
*) Bugfix: in error handling while connecting to a backend.
Thanks to Piotr Sikora.
*) Bugfix: in the "epoll" event method.
Thanks to Yichun Zhang.
*) Bugfix: the $sent_http_cache_control variable might contain a wrong
value if the "expires" directive was used.
Thanks to Yichun Zhang.
*) 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: nginx could not be built on Solaris; the bug had appeared in
1.0.11.
*) Bugfix: in the ngx_http_scgi_module.
*) Bugfix: in the ngx_http_mp4_module.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Mon, 06 Feb 2012 00:00:00 +0400 |
parents | f39b9e29530d |
children |
comparison
equal
deleted
inserted
replaced
643:d81e1c257a02 | 644:ad25218fd14b |
---|---|
1 | 1 |
2 /* | 2 /* |
3 * Copyright (C) Igor Sysoev | 3 * Copyright (C) Igor Sysoev |
4 * Copyright (C) Nginx, Inc. | |
4 */ | 5 */ |
5 | 6 |
6 | 7 |
7 #include <ngx_config.h> | 8 #include <ngx_config.h> |
8 #include <ngx_core.h> | 9 #include <ngx_core.h> |
221 c->buffered |= NGX_HTTP_WRITE_BUFFERED; | 222 c->buffered |= NGX_HTTP_WRITE_BUFFERED; |
222 | 223 |
223 return NGX_AGAIN; | 224 return NGX_AGAIN; |
224 } | 225 } |
225 | 226 |
226 } else if (clcf->sendfile_max_chunk) { | 227 if (clcf->sendfile_max_chunk |
228 && (off_t) clcf->sendfile_max_chunk < limit) | |
229 { | |
230 limit = clcf->sendfile_max_chunk; | |
231 } | |
232 | |
233 } else { | |
227 limit = clcf->sendfile_max_chunk; | 234 limit = clcf->sendfile_max_chunk; |
228 | |
229 } else { | |
230 limit = 0; | |
231 } | 235 } |
232 | 236 |
233 sent = c->sent; | 237 sent = c->sent; |
234 | 238 |
235 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, c->log, 0, | 239 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, c->log, 0, |
260 if (nsent < 0) { | 264 if (nsent < 0) { |
261 nsent = 0; | 265 nsent = 0; |
262 } | 266 } |
263 } | 267 } |
264 | 268 |
265 delay = (ngx_msec_t) ((nsent - sent) * 1000 / r->limit_rate + 1); | 269 delay = (ngx_msec_t) ((nsent - sent) * 1000 / r->limit_rate); |
266 | 270 |
267 if (delay > 0) { | 271 if (delay > 0) { |
272 limit = 0; | |
268 c->write->delayed = 1; | 273 c->write->delayed = 1; |
269 ngx_add_timer(c->write, delay); | 274 ngx_add_timer(c->write, delay); |
270 } | 275 } |
271 | 276 } |
272 } else if (c->write->ready | 277 |
273 && clcf->sendfile_max_chunk | 278 if (limit |
274 && (size_t) (c->sent - sent) | 279 && c->write->ready |
275 >= clcf->sendfile_max_chunk - 2 * ngx_pagesize) | 280 && c->sent - sent >= limit - (off_t) (2 * ngx_pagesize)) |
276 { | 281 { |
277 c->write->delayed = 1; | 282 c->write->delayed = 1; |
278 ngx_add_timer(c->write, 1); | 283 ngx_add_timer(c->write, 1); |
279 } | 284 } |
280 | 285 |