Mercurial > hg > nginx-vendor-1-0
comparison src/os/unix/ngx_linux_sendfile_chain.c @ 126:df17fbafec8f NGINX_0_3_10
nginx 0.3.10
*) Change: the "valid_referers" directive and the "$invalid_referer"
variable were moved to the new ngx_http_referer_module from the
ngx_http_rewrite_module.
*) Change: the "$apache_bytes_sent" variable name was changed to
"$body_bytes_sent".
*) Feature: the "$sent_http_..." variables.
*) Feature: the "if" directive supports the "=" and "!=" operations.
*) Feature: the "proxy_pass" directive supports the HTTPS protocol.
*) Feature: the "proxy_set_body" directive.
*) Feature: the "post_action" directive.
*) Feature: the ngx_http_empty_gif_module.
*) Feature: the "worker_cpu_affinity" directive for Linux.
*) Bugfix: the "rewrite" directive did not unescape URI part in
redirect, now it is unescaped except the %00-%25 and %7F-%FF
characters.
*) Bugfix: nginx could not be built by the icc 9.0 compiler.
*) Bugfix: if the SSI was enabled for zero size static file, then the
chunked response was encoded incorrectly.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Tue, 15 Nov 2005 00:00:00 +0300 |
parents | 72eb30262aac |
children | 1898c6d03d90 |
comparison
equal
deleted
inserted
replaced
125:97504de1f89e | 126:df17fbafec8f |
---|---|
156 * there is a tiny chance to be interrupted, however, | 156 * there is a tiny chance to be interrupted, however, |
157 * we continue a processing with the TCP_NODELAY | 157 * we continue a processing with the TCP_NODELAY |
158 * and without the TCP_CORK | 158 * and without the TCP_CORK |
159 */ | 159 */ |
160 | 160 |
161 if (err != NGX_EINTR) { | 161 if (err != NGX_EINTR) { |
162 wev->error = 1; | 162 wev->error = 1; |
163 ngx_connection_error(c, err, | 163 ngx_connection_error(c, err, |
164 "setsockopt(TCP_NODELAY) failed"); | 164 "setsockopt(TCP_NODELAY) failed"); |
165 return NGX_CHAIN_ERROR; | 165 return NGX_CHAIN_ERROR; |
166 } | 166 } |
181 /* | 181 /* |
182 * there is a tiny chance to be interrupted, however, | 182 * there is a tiny chance to be interrupted, however, |
183 * we continue a processing without the TCP_CORK | 183 * we continue a processing without the TCP_CORK |
184 */ | 184 */ |
185 | 185 |
186 if (err != NGX_EINTR) { | 186 if (err != NGX_EINTR) { |
187 wev->error = 1; | 187 wev->error = 1; |
188 ngx_connection_error(c, err, | 188 ngx_connection_error(c, err, |
189 ngx_tcp_nopush_n " failed"); | 189 ngx_tcp_nopush_n " failed"); |
190 return NGX_CHAIN_ERROR; | 190 return NGX_CHAIN_ERROR; |
191 } | 191 } |
192 | 192 |
193 } else { | 193 } else { |
194 c->tcp_nopush = NGX_TCP_NOPUSH_SET; | 194 c->tcp_nopush = NGX_TCP_NOPUSH_SET; |
195 | 195 |
196 ngx_log_debug0(NGX_LOG_DEBUG_EVENT, c->log, 0, | 196 ngx_log_debug0(NGX_LOG_DEBUG_EVENT, c->log, 0, |
197 "tcp_nopush"); | 197 "tcp_nopush"); |
198 } | 198 } |
199 } | 199 } |
200 } | 200 } |
279 "writev() not ready"); | 279 "writev() not ready"); |
280 | 280 |
281 } else { | 281 } else { |
282 wev->error = 1; | 282 wev->error = 1; |
283 ngx_connection_error(c, err, "writev() failed"); | 283 ngx_connection_error(c, err, "writev() failed"); |
284 return NGX_CHAIN_ERROR; | 284 return NGX_CHAIN_ERROR; |
285 } | 285 } |
286 } | 286 } |
287 | 287 |
288 sent = rc > 0 ? rc : 0; | 288 sent = rc > 0 ? rc : 0; |
289 | 289 |
332 | 332 |
333 break; | 333 break; |
334 } | 334 } |
335 | 335 |
336 if (eintr) { | 336 if (eintr) { |
337 continue; | 337 continue; |
338 } | 338 } |
339 | 339 |
340 if (!complete) { | 340 if (!complete) { |
341 wev->ready = 0; | 341 wev->ready = 0; |
342 return cl; | 342 return cl; |
343 } | 343 } |
344 | 344 |
345 if (send >= limit || cl == NULL) { | 345 if (send >= limit || cl == NULL) { |