diff src/os/unix/ngx_readv_chain.c @ 257:70e1c7d2b83d

nginx-0.0.2-2004-02-11-20:08:49 import
author Igor Sysoev <igor@sysoev.ru>
date Wed, 11 Feb 2004 17:08:49 +0000
parents 0061d1f0908d
children 87e73f067470
line wrap: on
line diff
--- 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
     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
         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
             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
         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
             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;
 
@@ -189,21 +209,3 @@ ngx_log_debug(c->log, "recv: %d:%d" _ io
 }
 
 #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;
-}