nginx-0.0.1-2003-11-14-10:20:34 import
diff --git a/src/os/unix/ngx_aio_read.c b/src/os/unix/ngx_aio_read.c
index 28deac6..c5fb4a5 100644
--- a/src/os/unix/ngx_aio_read.c
+++ b/src/os/unix/ngx_aio_read.c
@@ -25,12 +25,12 @@
     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 @@
             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 @@
 
     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 @@
     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 @@
 
     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 9990ae8..369c3ad 100644
--- a/src/os/unix/ngx_files.h
+++ b/src/os/unix/ngx_files.h
@@ -45,7 +45,7 @@
                                 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 33e3943..658c0a4 100644
--- a/src/os/unix/ngx_os.h
+++ b/src/os/unix/ngx_os.h
@@ -35,6 +35,8 @@
 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 1a14fd9..e759379 100644
--- a/src/os/unix/ngx_recv.c
+++ b/src/os/unix/ngx_recv.c
@@ -40,6 +40,8 @@
     }
 
     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 @@
         }
 
         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 @@
     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 @@
         }
 
         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 9574164..ab33979 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 6ead65f..9b9e629 100644
--- a/src/os/unix/ngx_writev_chain.c
+++ b/src/os/unix/ngx_writev_chain.c
@@ -24,6 +24,7 @@
     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 @@
     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 @@
                 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 @@
             cl->hunk->pos += sent;
         }
 
-#if 0
-        if (cl->hunk->type & NGX_HUNK_FILE) {
-            cl->hunk->file_pos += sent;
-        }
-#endif
-
         break;
     }