diff src/os/unix/ngx_freebsd_sendfile_chain.c @ 163:fb61ba77beba

nginx-0.0.1-2003-10-28-18:45:41 import
author Igor Sysoev <igor@sysoev.ru>
date Tue, 28 Oct 2003 15:45:41 +0000
parents 46eb23d9471d
children c42be4185301
line wrap: on
line diff
--- a/src/os/unix/ngx_freebsd_sendfile_chain.c
+++ b/src/os/unix/ngx_freebsd_sendfile_chain.c
@@ -25,8 +25,8 @@ ngx_chain_t *ngx_freebsd_sendfile_chain(
 {
     int              rc, eintr, eagain;
     char            *prev;
+    off_t            sent, fprev;
     ssize_t          hsize, fsize, size;
-    off_t            sent, fprev;
     struct iovec    *iov;
     struct sf_hdtr   hdtr;
     ngx_err_t        err;
@@ -67,15 +67,14 @@ ngx_chain_t *ngx_freebsd_sendfile_chain(
 
             if (prev == cl->hunk->pos) {
                 iov->iov_len += cl->hunk->last - cl->hunk->pos;
-                prev = cl->hunk->last;
 
             } else {
                 ngx_test_null(iov, ngx_push_array(&header), NGX_CHAIN_ERROR);
                 iov->iov_base = cl->hunk->pos;
                 iov->iov_len = cl->hunk->last - cl->hunk->pos;
-                prev = cl->hunk->last;
             }
 
+            prev = cl->hunk->last;
             hsize += cl->hunk->last - cl->hunk->pos;
         }
 
@@ -118,14 +117,14 @@ ngx_chain_t *ngx_freebsd_sendfile_chain(
 
             if (prev == cl->hunk->pos) {
                 iov->iov_len += cl->hunk->last - cl->hunk->pos;
-                prev = cl->hunk->last;
 
             } else {
                 ngx_test_null(iov, ngx_push_array(&trailer), NGX_CHAIN_ERROR);
                 iov->iov_base = cl->hunk->pos;
                 iov->iov_len = cl->hunk->last - cl->hunk->pos;
-                prev = cl->hunk->last;
             }
+
+            prev = cl->hunk->last;
         }
 
         /*
@@ -182,6 +181,7 @@ ngx_log_debug(c->log, "NOPUSH");
                                   "sendfile() sent only %qd bytes", sent);
 
                 } else {
+                    c->write->error = 1;
                     ngx_log_error(NGX_LOG_CRIT, c->log, err,
                                   "sendfile() failed");
                     return NGX_CHAIN_ERROR;
@@ -206,6 +206,7 @@ ngx_log_debug(c->log, "NOPUSH");
                     ngx_log_error(NGX_LOG_INFO, c->log, err, "writev() EINTR");
 
                 } else {
+                    c->write->error = 1;
                     ngx_log_error(NGX_LOG_CRIT, c->log, err, "writev() failed");
                     return NGX_CHAIN_ERROR;
                 }