diff src/os/unix/ngx_writev_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 34995c5ec6c4
children 87e73f067470
line wrap: on
line diff
--- 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_connec
         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_connec
 
         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_connec
 
             size = cl->hunk->last - cl->hunk->pos;
 
-ngx_log_debug(c->log, "SIZE: %d" _ size);
-
             if (sent >= size) {
                 sent -= size;