diff options
Diffstat (limited to 'src/os')
-rw-r--r-- | src/os/unix/ngx_errno.h | 4 | ||||
-rw-r--r-- | src/os/unix/ngx_freebsd_sendfile_chain.c | 16 |
2 files changed, 14 insertions, 6 deletions
diff --git a/src/os/unix/ngx_errno.h b/src/os/unix/ngx_errno.h index f9e68b4ea..bead5f9b3 100644 --- a/src/os/unix/ngx_errno.h +++ b/src/os/unix/ngx_errno.h @@ -10,16 +10,18 @@ typedef int ngx_err_t; #define NGX_ENOENT ENOENT #define NGX_EINTR EINTR +#define NGX_ECHILD ECHILD #define NGX_EACCES EACCES +#define NGX_EBUSY EBUSY #define NGX_EEXIST EEXIST #define NGX_ENOTDIR ENOTDIR +#define NGX_EPIPE EPIPE #define NGX_EAGAIN EWOULDBLOCK #define NGX_EINPROGRESS EINPROGRESS #define NGX_EADDRINUSE EADDRINUSE #define NGX_ECONNRESET ECONNRESET #define NGX_ETIMEDOUT ETIMEDOUT #define NGX_ECANCELED ECANCELED -#define NGX_ECHILD ECHILD #define NGX_ENOMOREFILES 0 diff --git a/src/os/unix/ngx_freebsd_sendfile_chain.c b/src/os/unix/ngx_freebsd_sendfile_chain.c index 6ca15fb9a..63c877f7d 100644 --- 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(ngx_connection_t *c, ngx_chain_t *in) 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(ngx_connection_t *c, ngx_chain_t *in) 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(ngx_connection_t *c, ngx_chain_t *in) 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(ngx_connection_t *c, ngx_chain_t *in) } 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(ngx_connection_t *c, ngx_chain_t *in) 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(ngx_connection_t *c, ngx_chain_t *in) } 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; } } |