diff src/os/unix/ngx_freebsd_sendfile_chain.c @ 216:f1d0e5f09c1e

nginx-0.0.1-2003-12-25-23:26:58 import
author Igor Sysoev <igor@sysoev.ru>
date Thu, 25 Dec 2003 20:26:58 +0000
parents e0c502f15852
children 05592fd7a436
line wrap: on
line diff
--- a/src/os/unix/ngx_freebsd_sendfile_chain.c
+++ b/src/os/unix/ngx_freebsd_sendfile_chain.c
@@ -26,7 +26,7 @@ ngx_chain_t *ngx_freebsd_sendfile_chain(
     char            *prev;
     off_t            sent, fprev;
     size_t           hsize, fsize, size;
-    ngx_int_t        eintr, eagain;
+    ngx_int_t        eintr, eagain, level;
     struct iovec    *iov;
     struct sf_hdtr   hdtr;
     ngx_err_t        err;
@@ -59,6 +59,7 @@ ngx_chain_t *ngx_freebsd_sendfile_chain(
         hsize = 0;
         eintr = 0;
         eagain = 0;
+        level = NGX_LOG_CRIT;
 
         ngx_init_array(header, c->pool, 10, sizeof(struct iovec),
                        NGX_CHAIN_ERROR);
@@ -186,10 +187,12 @@ ngx_chain_t *ngx_freebsd_sendfile_chain(
 
                 if (err == NGX_EINTR) {
                     eintr = 1;
-                }
 
-                if (err == NGX_EAGAIN) {
+                } else if (err == NGX_EAGAIN) {
                     eagain = 1;
+
+                } else if (err == NGX_EPIPE) {
+                    level = NGX_LOG_INFO;
                 }
 
                 if (err == NGX_EAGAIN || err == NGX_EINTR) {
@@ -199,7 +202,7 @@ ngx_chain_t *ngx_freebsd_sendfile_chain(
 
                 } else {
                     wev->error = 1;
-                    ngx_log_error(NGX_LOG_CRIT, c->log, err,
+                    ngx_log_error(level, c->log, err,
                                   "sendfile() failed");
                     return NGX_CHAIN_ERROR;
                 }
@@ -217,6 +220,9 @@ ngx_chain_t *ngx_freebsd_sendfile_chain(
 
                 if (err == NGX_EINTR) {
                     eintr = 1;
+
+                } else if (err == NGX_EPIPE) {
+                    level = NGX_LOG_INFO;
                 }
 
                 if (err == NGX_EAGAIN || err == NGX_EINTR) {
@@ -225,7 +231,7 @@ ngx_chain_t *ngx_freebsd_sendfile_chain(
 
                 } else {
                     wev->error = 1;
-                    ngx_log_error(NGX_LOG_CRIT, c->log, err, "writev() failed");
+                    ngx_log_error(level, c->log, err, "writev() failed");
                     return NGX_CHAIN_ERROR;
                 }
             }