comparison src/os/unix/ngx_freebsd_sendfile_chain.c @ 10:46833bd150cb NGINX_0_1_5

nginx 0.1.5 *) Bugfix: on Solaris and Linux there may be too many "recvmsg() returned not enough data" alerts. *) Bugfix: there were the "writev() failed (22: Invalid argument)" errors on Solaris in proxy mode without sendfile. On other platforms that do not support sendfile at all the process got caught in an endless loop. *) Bugfix: segmentation fault on Solaris in proxy mode and using sendfile. *) Bugfix: segmentation fault on Solaris. *) Bugfix: on-line upgrade did not work on Linux. *) Bugfix: the ngx_http_autoindex_module module did not escape the spaces, the quotes, and the percent signs in the directory listing. *) Change: the decrease of the copy operations. *) Feature: the userid_p3p directive.
author Igor Sysoev <http://sysoev.ru>
date Thu, 11 Nov 2004 00:00:00 +0300
parents 4b2dafa26fe2
children 6f8b0dc0f8dd
comparison
equal deleted inserted replaced
9:77eee314ddbd 10:46833bd150cb
263 } else { 263 } else {
264 eagain = 1; 264 eagain = 1;
265 } 265 }
266 266
267 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, err, 267 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, err,
268 "sendfile() sent only " OFF_T_FMT " bytes", 268 "sendfile() sent only %O bytes",
269 sent); 269 sent);
270 270
271 } else { 271 } else {
272 wev->error = 1; 272 wev->error = 1;
273 ngx_connection_error(c, err, "sendfile() failed"); 273 ngx_connection_error(c, err, "sendfile() failed");
288 288
289 return NGX_CHAIN_ERROR; 289 return NGX_CHAIN_ERROR;
290 } 290 }
291 291
292 ngx_log_debug4(NGX_LOG_DEBUG_EVENT, c->log, 0, 292 ngx_log_debug4(NGX_LOG_DEBUG_EVENT, c->log, 0,
293 "sendfile: %d, @" OFF_T_FMT " " OFF_T_FMT ":%d", 293 "sendfile: %d, @%O %O:%uz",
294 rc, file->file_pos, sent, fsize + hsize); 294 rc, file->file_pos, sent, fsize + hsize);
295 295
296 } else { 296 } else {
297 rc = writev(c->fd, header.elts, header.nelts); 297 rc = writev(c->fd, header.elts, header.nelts);
298 298
299 ngx_log_debug2(NGX_LOG_DEBUG_EVENT, c->log, 0, 299 ngx_log_debug2(NGX_LOG_DEBUG_EVENT, c->log, 0,
300 "writev: %d of " SIZE_T_FMT, rc, hsize); 300 "writev: %d of %uz", rc, hsize);
301 301
302 if (rc == -1) { 302 if (rc == -1) {
303 err = ngx_errno; 303 err = ngx_errno;
304 304
305 if (err == NGX_EAGAIN || err == NGX_EINTR) { 305 if (err == NGX_EAGAIN || err == NGX_EINTR) {