diff options
Diffstat (limited to 'src/os')
-rw-r--r-- | src/os/unix/ngx_aio_read.c | 12 | ||||
-rw-r--r-- | src/os/unix/ngx_aio_read_chain.c | 5 | ||||
-rw-r--r-- | src/os/unix/ngx_aio_write.c | 7 | ||||
-rw-r--r-- | src/os/unix/ngx_aio_write_chain.c | 9 | ||||
-rw-r--r-- | src/os/unix/ngx_files.c | 7 | ||||
-rw-r--r-- | src/os/unix/ngx_linux_config.h | 3 | ||||
-rw-r--r-- | src/os/unix/ngx_readv_chain.c | 64 | ||||
-rw-r--r-- | src/os/unix/ngx_recv.c | 4 | ||||
-rw-r--r-- | src/os/unix/ngx_solaris_sendfilev_chain.c | 18 | ||||
-rw-r--r-- | src/os/unix/ngx_writev_chain.c | 33 | ||||
-rw-r--r-- | src/os/win32/ngx_wsasend_chain.c | 10 |
11 files changed, 90 insertions, 82 deletions
diff --git a/src/os/unix/ngx_aio_read.c b/src/os/unix/ngx_aio_read.c index c5fb4a55f..1fc020d76 100644 --- a/src/os/unix/ngx_aio_read.c +++ b/src/os/unix/ngx_aio_read.c @@ -29,8 +29,10 @@ ssize_t ngx_aio_read(ngx_connection_t *c, char *buf, size_t size) return NGX_AGAIN; } - ngx_log_debug(c->log, "rev->complete: %d" _ rev->complete); - ngx_log_debug(c->log, "aio size: %d" _ size); + ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, + "rev->complete: %d", rev->complete); + ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, + "aio size: %d", size); if (!rev->complete) { ngx_memzero(&rev->aiocb, sizeof(struct aiocb)); @@ -52,7 +54,8 @@ ssize_t ngx_aio_read(ngx_connection_t *c, char *buf, size_t size) return NGX_ERROR; } - ngx_log_debug(c->log, "aio_read: #%d OK" _ c->fd); + ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, + "aio_read: #%d OK", c->fd); rev->active = 1; rev->ready = 0; @@ -93,7 +96,8 @@ ssize_t ngx_aio_read(ngx_connection_t *c, char *buf, size_t size) return NGX_ERROR; } - ngx_log_debug(rev->log, "aio_read: #%d %d" _ c->fd _ n); + ngx_log_debug2(NGX_LOG_DEBUG_EVENT, rev->log, 0, + "aio_read: #%d %d", c->fd, n); if (n == 0) { rev->eof = 1; diff --git a/src/os/unix/ngx_aio_read_chain.c b/src/os/unix/ngx_aio_read_chain.c index 9af48dd98..8fc8870dd 100644 --- a/src/os/unix/ngx_aio_read_chain.c +++ b/src/os/unix/ngx_aio_read_chain.c @@ -41,7 +41,7 @@ ssize_t ngx_aio_read_chain(ngx_connection_t *c, ngx_chain_t *cl) n = ngx_aio_read(c, buf, size); - ngx_log_debug(c->log, "aio_read: %d" _ n); + ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, "aio_read: %d", n); if (n == NGX_AGAIN) { return total ? total : NGX_AGAIN; @@ -64,7 +64,8 @@ ssize_t ngx_aio_read_chain(ngx_connection_t *c, ngx_chain_t *cl) total += n; } - ngx_log_debug(c->log, "aio_read total: %d" _ total); + ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, + "aio_read total: %d", total); } return total ? total : NGX_AGAIN; diff --git a/src/os/unix/ngx_aio_write.c b/src/os/unix/ngx_aio_write.c index dc2c876e5..113196165 100644 --- a/src/os/unix/ngx_aio_write.c +++ b/src/os/unix/ngx_aio_write.c @@ -28,7 +28,8 @@ ssize_t ngx_aio_write(ngx_connection_t *c, char *buf, size_t size) return NGX_AGAIN; } -ngx_log_debug(wev->log, "aio: wev->complete: %d" _ wev->complete); + ngx_log_debug1(NGX_LOG_DEBUG_EVENT, wev->log, 0, + "aio: wev->complete: %d", wev->complete); if (!wev->complete) { ngx_memzero(&wev->aiocb, sizeof(struct aiocb)); @@ -49,7 +50,7 @@ ngx_log_debug(wev->log, "aio: wev->complete: %d" _ wev->complete); return NGX_ERROR; } - ngx_log_debug(wev->log, "aio_write: OK"); + ngx_log_debug0(NGX_LOG_DEBUG_EVENT, wev->log, 0, "aio_write: OK"); wev->active = 1; wev->ready = 0; @@ -102,7 +103,7 @@ ngx_log_debug(wev->log, "aio: wev->complete: %d" _ wev->complete); } - ngx_log_debug(wev->log, "aio_write: %d" _ n); + ngx_log_debug1(NGX_LOG_DEBUG_EVENT, wev->log, 0, "aio_write: %d", n); wev->active = 0; wev->ready = 1; diff --git a/src/os/unix/ngx_aio_write_chain.c b/src/os/unix/ngx_aio_write_chain.c index 4146d4f7d..c8108f3e0 100644 --- a/src/os/unix/ngx_aio_write_chain.c +++ b/src/os/unix/ngx_aio_write_chain.c @@ -44,9 +44,7 @@ ngx_chain_t *ngx_aio_write_chain(ngx_connection_t *c, ngx_chain_t *in) n = ngx_aio_write(c, buf, size); -#if (NGX_DEBUG_WRITE_CHAIN) - ngx_log_debug(c->log, "aio_write: %d" _ n); -#endif + ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, "aio_write: %d", n); if (n == NGX_ERROR) { return NGX_CHAIN_ERROR; @@ -57,9 +55,8 @@ ngx_chain_t *ngx_aio_write_chain(ngx_connection_t *c, ngx_chain_t *in) c->sent += n; } -#if (NGX_DEBUG_WRITE_CHAIN) - ngx_log_debug(c->log, "aio_write sent: " OFF_T_FMT _ c->sent); -#endif + ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, + "aio_write sent: " OFF_T_FMT, c->sent); for (cl = in; cl; cl = cl->next) { diff --git a/src/os/unix/ngx_files.c b/src/os/unix/ngx_files.c index 5d0cd380e..c2a2c8fca 100644 --- a/src/os/unix/ngx_files.c +++ b/src/os/unix/ngx_files.c @@ -11,15 +11,16 @@ ssize_t ngx_read_file(ngx_file_t *file, char *buf, size_t size, off_t offset) { ssize_t n; - ngx_log_debug(file->log, "read: %d, %x, %d, " OFF_T_FMT _ - file->fd _ buf _ size _ offset); + ngx_log_debug4(NGX_LOG_DEBUG_CORE, file->log, 0, + "read: %d, %X, %d, " OFF_T_FMT, file->fd, buf, size, offset); #if (HAVE_PREAD) n = pread(file->fd, buf, size, offset); if (n == -1) { - ngx_log_error(NGX_LOG_CRIT, file->log, ngx_errno, "pread() failed"); + ngx_log_error(NGX_LOG_CRIT, file->log, ngx_errno, + "pread() failed, file \"%s\"", file->name.data); return NGX_ERROR; } diff --git a/src/os/unix/ngx_linux_config.h b/src/os/unix/ngx_linux_config.h index 76b0dd04c..1ca1c1f0d 100644 --- a/src/os/unix/ngx_linux_config.h +++ b/src/os/unix/ngx_linux_config.h @@ -36,9 +36,6 @@ #include <dirent.h> -/* Linux has a broken strerror_r() */ -#define HAVE_STRERROR_R 0 - #include <ngx_auto_config.h> diff --git a/src/os/unix/ngx_readv_chain.c b/src/os/unix/ngx_readv_chain.c index a2fedcf0c..a1b9837b8 100644 --- a/src/os/unix/ngx_readv_chain.c +++ b/src/os/unix/ngx_readv_chain.c @@ -4,8 +4,6 @@ #include <ngx_event.h> -static int ngx_readv_error(ngx_event_t *rev, ngx_err_t err); - #if (HAVE_KQUEUE) ssize_t ngx_readv_chain(ngx_connection_t *c, ngx_chain_t *chain) @@ -20,18 +18,22 @@ ssize_t ngx_readv_chain(ngx_connection_t *c, ngx_chain_t *chain) rev = c->read; if (ngx_event_flags & NGX_HAVE_KQUEUE_EVENT) { - ngx_log_debug(c->log, "recv: eof:%d, avail:%d, err:%d" _ - rev->kq_eof _ rev->available _ rev->kq_errno); + ngx_log_debug3(NGX_LOG_DEBUG_EVENT, c->log, 0, + "readv: eof:%d, avail:%d, err:%d", + rev->kq_eof, rev->available, rev->kq_errno); if (rev->available == 0) { if (rev->kq_eof) { rev->ready = 0; rev->eof = 1; + ngx_log_error(NGX_LOG_INFO, c->log, rev->kq_errno, + "kevent() reported about an closed connection"); + if (rev->kq_errno) { rev->error = 1; ngx_set_socket_errno(rev->kq_errno); - return ngx_readv_error(rev, rev->kq_errno); + return NGX_ERROR; } return 0; @@ -65,7 +67,8 @@ ssize_t ngx_readv_chain(ngx_connection_t *c, ngx_chain_t *chain) chain = chain->next; } -ngx_log_debug(c->log, "recv: %d:%d" _ io.nelts _ iov->iov_len); + ngx_log_debug2(NGX_LOG_DEBUG_EVENT, c->log, 0, + "readv: %d:%d", io.nelts, iov->iov_len); rev = c->read; @@ -105,11 +108,19 @@ ngx_log_debug(c->log, "recv: %d:%d" _ io.nelts _ iov->iov_len); return n; } - n = ngx_readv_error(rev, ngx_socket_errno); + err = ngx_socket_errno; + + if (err == NGX_EAGAIN || err == NGX_EINTR) { + ngx_log_debug0(NGX_LOG_DEBUG_EVENT, c->log, err, + "readv() not ready"); + n = NGX_AGAIN; - } while (n == NGX_EINTR); + } else { + n = ngx_connection_error(c, err, "readv() failed"); + break; + } - /* NGX_ERROR || NGX_AGAIN */ + } while (err == NGX_EINTR); rev->ready = 0; @@ -154,7 +165,8 @@ ssize_t ngx_readv_chain(ngx_connection_t *c, ngx_chain_t *chain) chain = chain->next; } -ngx_log_debug(c->log, "recv: %d:%d" _ io.nelts _ iov->iov_len); + ngx_log_debug2(NGX_LOG_DEBUG_EVENT, c->log, 0, + "readv: %d:%d", io.nelts, iov->iov_len); rev = c->read; @@ -173,11 +185,19 @@ ngx_log_debug(c->log, "recv: %d:%d" _ io.nelts _ iov->iov_len); return n; } - n = ngx_readv_error(rev, ngx_socket_errno); + err = ngx_socket_errno; - } while (n == NGX_EINTR); + if (err == NGX_EAGAIN || err == NGX_EINTR) { + ngx_log_debug0(NGX_LOG_DEBUG_EVENT, c->log, err, + "readv() not ready"); + n = NGX_AGAIN; - /* NGX_ERROR || NGX_AGAIN */ + } else { + n = ngx_connection_error(c, err, "readv() failed"); + break; + } + + } while (err == NGX_EINTR); rev->ready = 0; @@ -189,21 +209,3 @@ ngx_log_debug(c->log, "recv: %d:%d" _ io.nelts _ iov->iov_len); } #endif /* NAVE_KQUEUE */ - - -static int ngx_readv_error(ngx_event_t *rev, ngx_err_t err) -{ - if (err == NGX_EAGAIN) { - ngx_log_error(NGX_LOG_INFO, rev->log, err, "readv() returned EAGAIN"); - return NGX_AGAIN; - } - - if (err == NGX_EINTR) { - ngx_log_error(NGX_LOG_INFO, rev->log, err, "readv() returned EINTR"); - return NGX_EINTR; - } - - ngx_log_error(NGX_LOG_ERR, rev->log, err, "readv() failed"); - - return NGX_ERROR; -} diff --git a/src/os/unix/ngx_recv.c b/src/os/unix/ngx_recv.c index 3c454e98c..b8a965942 100644 --- a/src/os/unix/ngx_recv.c +++ b/src/os/unix/ngx_recv.c @@ -90,7 +90,7 @@ ssize_t ngx_unix_recv(ngx_connection_t *c, char *buf, size_t size) err = ngx_socket_errno; if (err == NGX_EAGAIN || err == NGX_EINTR) { - ngx_log_debug0(NGX_LOG_DEBUG_EVENT, rev->log, err, + ngx_log_debug0(NGX_LOG_DEBUG_EVENT, c->log, err, "recv() not ready"); n = NGX_AGAIN; @@ -141,7 +141,7 @@ ssize_t ngx_unix_recv(ngx_connection_t *c, char *buf, size_t size) err = ngx_socket_errno; if (err == NGX_EAGAIN || err == NGX_EINTR) { - ngx_log_debug0(NGX_LOG_DEBUG_EVENT, rev->log, err, + ngx_log_debug0(NGX_LOG_DEBUG_EVENT, c->log, err, "recv() not ready"); n = NGX_AGAIN; diff --git a/src/os/unix/ngx_solaris_sendfilev_chain.c b/src/os/unix/ngx_solaris_sendfilev_chain.c index c7d69feaf..a5b741f27 100644 --- a/src/os/unix/ngx_solaris_sendfilev_chain.c +++ b/src/os/unix/ngx_solaris_sendfilev_chain.c @@ -82,24 +82,24 @@ ngx_chain_t *ngx_solaris_sendfilev_chain(ngx_connection_t *c, ngx_chain_t *in) if (n == -1) { err = ngx_errno; - if (err == NGX_EINTR) { - eintr = 1; - } - if (err == NGX_EAGAIN || err == NGX_EINTR) { - ngx_log_error(NGX_LOG_INFO, c->log, err, + if (err == NGX_EINTR) { + eintr = 1; + } + + ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, err, "sendfilev() sent only " SIZE_T_FMT " bytes", sent); + } else { wev->error = 1; - ngx_log_error(NGX_LOG_CRIT, c->log, err, "sendfilev() failed"); + ngx_connection_error(c, err, "sendfilev() failed"); return NGX_CHAIN_ERROR; } } -#if (NGX_DEBUG_WRITE_CHAIN) - ngx_log_debug(c->log, "sendfilev: %d " SIZE_T_FMT _ n _ sent); -#endif + ngx_log_debug2(NGX_LOG_DEBUG_EVENT, c->log, 0, + "sendfilev: %d " SIZE_T_FMT, n, sent); c->sent += sent; diff --git a/src/os/unix/ngx_writev_chain.c b/src/os/unix/ngx_writev_chain.c index a9cac1dee..43d5c12b5 100644 --- a/src/os/unix/ngx_writev_chain.c +++ b/src/os/unix/ngx_writev_chain.c @@ -22,6 +22,18 @@ ngx_chain_t *ngx_writev_chain(ngx_connection_t *c, ngx_chain_t *in) return in; } +#if (HAVE_KQUEUE) + + if ((ngx_event_flags & NGX_HAVE_KQUEUE_EVENT) && wev->kq_eof) { + ngx_log_error(NGX_LOG_INFO, c->log, wev->kq_errno, + "kevent() reported about an closed connection"); + + wev->error = 1; + return NGX_CHAIN_ERROR; + } + +#endif + ngx_init_array(io, c->pool, 10, sizeof(struct iovec), NGX_CHAIN_ERROR); do { @@ -49,25 +61,26 @@ ngx_chain_t *ngx_writev_chain(ngx_connection_t *c, ngx_chain_t *in) if (n == -1) { err = ngx_errno; - if (err == NGX_EAGAIN) { - ngx_log_error(NGX_LOG_INFO, c->log, err, "writev() EAGAIN"); - } else if (err == NGX_EINTR) { - eintr = 1; - ngx_log_error(NGX_LOG_INFO, c->log, err, "writev() EINTR"); + if (err == NGX_EAGAIN || err == NGX_EINTR) { + if (err == NGX_EINTR) { + eintr = 1; + } + + ngx_log_debug0(NGX_LOG_DEBUG_EVENT, c->log, err, + "writev() not ready"); } else { wev->error = 1; - ngx_log_error(NGX_LOG_CRIT, c->log, err, "writev() failed"); + ngx_connection_error(c, err, "writev() failed"); return NGX_CHAIN_ERROR; } } sent = n > 0 ? n : 0; -#if (NGX_DEBUG_WRITE_CHAIN) - ngx_log_debug(c->log, "writev: " OFF_T_FMT _ sent); -#endif + ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, + "writev: " OFF_T_FMT, sent); c->sent += sent; @@ -75,8 +88,6 @@ ngx_chain_t *ngx_writev_chain(ngx_connection_t *c, ngx_chain_t *in) size = cl->hunk->last - cl->hunk->pos; -ngx_log_debug(c->log, "SIZE: %d" _ size); - if (sent >= size) { sent -= size; diff --git a/src/os/win32/ngx_wsasend_chain.c b/src/os/win32/ngx_wsasend_chain.c index f0b5fe24c..438f3dbd0 100644 --- a/src/os/win32/ngx_wsasend_chain.c +++ b/src/os/win32/ngx_wsasend_chain.c @@ -64,9 +64,7 @@ ngx_chain_t *ngx_wsasend_chain(ngx_connection_t *c, ngx_chain_t *in) } } -#if (NGX_DEBUG_WRITE_CHAIN) - ngx_log_debug(c->log, "WSASend(): %d" _ sent); -#endif + ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, "WSASend(): %d", sent); c->sent += sent; @@ -207,9 +205,7 @@ ngx_chain_t *ngx_overlapped_wsasend_chain(ngx_connection_t *c, ngx_chain_t *in) } } -#if (NGX_DEBUG_WRITE_CHAIN) - ngx_log_debug(c->log, "WSASend(): %d" _ sent); -#endif + ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, "WSASend(): %d", sent); c->sent += sent; @@ -391,9 +387,7 @@ non-block } } -#if (NGX_DEBUG_WRITE_CHAIN) ngx_log_debug(c->log, "WSASend(): %d" _ sent); -#endif c->sent += sent; |