aboutsummaryrefslogtreecommitdiff
path: root/src/os
diff options
context:
space:
mode:
Diffstat (limited to 'src/os')
-rw-r--r--src/os/unix/ngx_aio_read.c12
-rw-r--r--src/os/unix/ngx_aio_read_chain.c5
-rw-r--r--src/os/unix/ngx_aio_write.c7
-rw-r--r--src/os/unix/ngx_aio_write_chain.c9
-rw-r--r--src/os/unix/ngx_files.c7
-rw-r--r--src/os/unix/ngx_linux_config.h3
-rw-r--r--src/os/unix/ngx_readv_chain.c64
-rw-r--r--src/os/unix/ngx_recv.c4
-rw-r--r--src/os/unix/ngx_solaris_sendfilev_chain.c18
-rw-r--r--src/os/unix/ngx_writev_chain.c33
-rw-r--r--src/os/win32/ngx_wsasend_chain.c10
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;