aboutsummaryrefslogtreecommitdiff
path: root/src/os
diff options
context:
space:
mode:
Diffstat (limited to 'src/os')
-rw-r--r--src/os/unix/ngx_errno.h4
-rw-r--r--src/os/unix/ngx_freebsd_sendfile_chain.c16
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;
}
}