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) {