aboutsummaryrefslogtreecommitdiff
path: root/src/os/unix/ngx_freebsd_sendfile_chain.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/os/unix/ngx_freebsd_sendfile_chain.c')
-rw-r--r--src/os/unix/ngx_freebsd_sendfile_chain.c16
1 files changed, 11 insertions, 5 deletions
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;
}
}