diff options
author | Igor Sysoev <igor@sysoev.ru> | 2003-11-14 07:20:34 +0000 |
---|---|---|
committer | Igor Sysoev <igor@sysoev.ru> | 2003-11-14 07:20:34 +0000 |
commit | 7f9d894e1069306f7361201a77efbe7b866024ff (patch) | |
tree | 9779ce5dd7d38af4c8039047768cedc92c31ec1f /src/os/unix | |
parent | 45890ea8c13a561fe3fd66bf639ad429f3c18846 (diff) | |
download | nginx-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.c | 16 | ||||
-rw-r--r-- | src/os/unix/ngx_files.h | 2 | ||||
-rw-r--r-- | src/os/unix/ngx_os.h | 2 | ||||
-rw-r--r-- | src/os/unix/ngx_recv.c | 14 | ||||
-rw-r--r-- | src/os/unix/ngx_unix_init.c | 4 | ||||
-rw-r--r-- | src/os/unix/ngx_writev_chain.c | 15 |
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; } |