aboutsummaryrefslogtreecommitdiff
path: root/src/os/unix
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2003-11-14 07:20:34 +0000
committerIgor Sysoev <igor@sysoev.ru>2003-11-14 07:20:34 +0000
commit7f9d894e1069306f7361201a77efbe7b866024ff (patch)
tree9779ce5dd7d38af4c8039047768cedc92c31ec1f /src/os/unix
parent45890ea8c13a561fe3fd66bf639ad429f3c18846 (diff)
downloadnginx-7f9d894e1069306f7361201a77efbe7b866024ff.tar.gz
nginx-7f9d894e1069306f7361201a77efbe7b866024ff.zip
nginx-0.0.1-2003-11-14-10:20:34 import
Diffstat (limited to 'src/os/unix')
-rw-r--r--src/os/unix/ngx_aio_read.c16
-rw-r--r--src/os/unix/ngx_files.h2
-rw-r--r--src/os/unix/ngx_os.h2
-rw-r--r--src/os/unix/ngx_recv.c14
-rw-r--r--src/os/unix/ngx_unix_init.c4
-rw-r--r--src/os/unix/ngx_writev_chain.c15
6 files changed, 28 insertions, 25 deletions
diff --git a/src/os/unix/ngx_aio_read.c b/src/os/unix/ngx_aio_read.c
index 28deac6d2..c5fb4a55f 100644
--- a/src/os/unix/ngx_aio_read.c
+++ b/src/os/unix/ngx_aio_read.c
@@ -25,12 +25,12 @@ ssize_t ngx_aio_read(ngx_connection_t *c, char *buf, size_t size)
rev = c->read;
if (!rev->ready) {
- ngx_log_error(NGX_LOG_ALERT, rev->log, 0, "SECOND AIO POST");
+ ngx_log_error(NGX_LOG_ALERT, c->log, 0, "SECOND AIO POST");
return NGX_AGAIN;
}
- ngx_log_debug(rev->log, "rev->complete: %d" _ rev->complete);
- ngx_log_debug(rev->log, "aio size: %d" _ size);
+ ngx_log_debug(c->log, "rev->complete: %d" _ rev->complete);
+ ngx_log_debug(c->log, "aio size: %d" _ size);
if (!rev->complete) {
ngx_memzero(&rev->aiocb, sizeof(struct aiocb));
@@ -52,7 +52,7 @@ 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 OK" _ c->fd);
+ ngx_log_debug(c->log, "aio_read: #%d OK" _ c->fd);
rev->active = 1;
rev->ready = 0;
@@ -62,7 +62,7 @@ ssize_t ngx_aio_read(ngx_connection_t *c, char *buf, size_t size)
n = aio_error(&rev->aiocb);
if (n == -1) {
- ngx_log_error(NGX_LOG_ALERT, rev->log, ngx_errno, "aio_error() failed");
+ ngx_log_error(NGX_LOG_ALERT, c->log, ngx_errno, "aio_error() failed");
rev->error = 1;
return NGX_ERROR;
}
@@ -70,14 +70,14 @@ ssize_t ngx_aio_read(ngx_connection_t *c, char *buf, size_t size)
if (n != 0) {
if (n == NGX_EINPROGRESS) {
if (rev->ready) {
- ngx_log_error(NGX_LOG_ALERT, rev->log, n,
+ ngx_log_error(NGX_LOG_ALERT, c->log, n,
"aio_read() still in progress");
rev->ready = 0;
}
return NGX_AGAIN;
}
- ngx_log_error(NGX_LOG_CRIT, rev->log, n, "aio_read() failed");
+ ngx_log_error(NGX_LOG_CRIT, c->log, n, "aio_read() failed");
rev->error = 1;
rev->ready = 0;
return NGX_ERROR;
@@ -85,7 +85,7 @@ ssize_t ngx_aio_read(ngx_connection_t *c, char *buf, size_t size)
n = aio_return(&rev->aiocb);
if (n == -1) {
- ngx_log_error(NGX_LOG_ALERT, rev->log, ngx_errno,
+ ngx_log_error(NGX_LOG_ALERT, c->log, ngx_errno,
"aio_return() failed");
rev->error = 1;
diff --git a/src/os/unix/ngx_files.h b/src/os/unix/ngx_files.h
index 9990ae8c3..369c3ad5d 100644
--- a/src/os/unix/ngx_files.h
+++ b/src/os/unix/ngx_files.h
@@ -45,7 +45,7 @@ ssize_t ngx_write_chain_to_file(ngx_file_t *file, ngx_chain_t *ce,
off_t offset, ngx_pool_t *pool);
-#define ngx_rename_file rename
+#define ngx_rename_file(from, to, pool) rename(from->data, to->data)
#define ngx_rename_file_n "rename"
diff --git a/src/os/unix/ngx_os.h b/src/os/unix/ngx_os.h
index 33e394319..658c0a400 100644
--- a/src/os/unix/ngx_os.h
+++ b/src/os/unix/ngx_os.h
@@ -35,6 +35,8 @@ typedef struct {
int ngx_os_init(ngx_log_t *log);
int ngx_daemon(ngx_log_t *log);
int ngx_posix_init(ngx_log_t *log);
+int ngx_posix_post_conf_init(ngx_log_t *log);
+
ssize_t ngx_unix_recv(ngx_connection_t *c, char *buf, size_t size);
ssize_t ngx_readv_chain(ngx_connection_t *c, ngx_chain_t *entry);
diff --git a/src/os/unix/ngx_recv.c b/src/os/unix/ngx_recv.c
index 1a14fd963..e75937957 100644
--- a/src/os/unix/ngx_recv.c
+++ b/src/os/unix/ngx_recv.c
@@ -40,6 +40,8 @@ ssize_t ngx_unix_recv(ngx_connection_t *c, char *buf, size_t size)
}
do {
+ rev->ready = 1;
+
n = recv(c->fd, buf, size, 0);
ngx_log_debug(c->log, "recv: %d:%d" _ n _ size);
@@ -78,11 +80,14 @@ ssize_t ngx_unix_recv(ngx_connection_t *c, char *buf, size_t size)
}
rev->ready = 0;
- rev->error = 1;
n = ngx_unix_recv_error(rev, ngx_socket_errno);
} while (n == NGX_EINTR);
+ if (n == NGX_ERROR){
+ rev->error = 1;
+ }
+
return n;
}
@@ -96,6 +101,8 @@ ssize_t ngx_unix_recv(ngx_connection_t *c, char *buf, size_t size)
rev = c->read;
do {
+ rev->ready = 1;
+
n = recv(c->fd, buf, size, 0);
ngx_log_debug(c->log, "recv: %d:%d" _ n _ size);
@@ -113,11 +120,14 @@ ssize_t ngx_unix_recv(ngx_connection_t *c, char *buf, size_t size)
}
rev->ready = 0;
- rev->error = 1;
n = ngx_unix_recv_error(rev, ngx_socket_errno);
} while (n == NGX_EINTR);
+ if (n == NGX_ERROR){
+ rev->error = 1;
+ }
+
return n;
}
diff --git a/src/os/unix/ngx_unix_init.c b/src/os/unix/ngx_unix_init.c
index 95741642b..ab33979ec 100644
--- a/src/os/unix/ngx_unix_init.c
+++ b/src/os/unix/ngx_unix_init.c
@@ -3,17 +3,19 @@
#include <ngx_core.h>
+#if 0
/* STUB */
ssize_t ngx_unix_recv(ngx_connection_t *c, char *buf, size_t size);
ngx_chain_t *ngx_writev_chain(ngx_connection_t *c, ngx_chain_t *in);
int ngx_posix_init(ngx_log_t *log);
int ngx_posix_post_conf_init(ngx_log_t *log);
/* */
+#endif
ngx_os_io_t ngx_os_io = {
ngx_unix_recv,
- NULL,
+ ngx_readv_chain,
NULL,
ngx_writev_chain,
NGX_HAVE_ZEROCOPY
diff --git a/src/os/unix/ngx_writev_chain.c b/src/os/unix/ngx_writev_chain.c
index 6ead65f3a..9b9e62939 100644
--- a/src/os/unix/ngx_writev_chain.c
+++ b/src/os/unix/ngx_writev_chain.c
@@ -24,6 +24,7 @@ ngx_chain_t *ngx_writev_chain(ngx_connection_t *c, ngx_chain_t *in)
iov = NULL;
/* create the iovec and coalesce the neighbouring hunks */
+
for (cl = in; cl; cl = cl->next) {
if (prev == cl->hunk->pos) {
@@ -57,7 +58,7 @@ ngx_chain_t *ngx_writev_chain(ngx_connection_t *c, ngx_chain_t *in)
sent = n > 0 ? n : 0;
#if (NGX_DEBUG_WRITE_CHAIN)
- ngx_log_debug(c->log, "writev: %qd" _ sent);
+ ngx_log_debug(c->log, "writev: " OFF_FMT _ sent);
#endif
c->sent += sent;
@@ -75,12 +76,6 @@ ngx_log_debug(c->log, "SIZE: %d" _ size);
cl->hunk->pos = cl->hunk->last;
}
-#if 0
- if (cl->hunk->type & NGX_HUNK_FILE) {
- cl->hunk->file_pos = cl->hunk->file_last;
- }
-#endif
-
continue;
}
@@ -88,12 +83,6 @@ ngx_log_debug(c->log, "SIZE: %d" _ size);
cl->hunk->pos += sent;
}
-#if 0
- if (cl->hunk->type & NGX_HUNK_FILE) {
- cl->hunk->file_pos += sent;
- }
-#endif
-
break;
}