diff src/event/ngx_event_pipe.c @ 163:fb61ba77beba

nginx-0.0.1-2003-10-28-18:45:41 import
author Igor Sysoev <igor@sysoev.ru>
date Tue, 28 Oct 2003 15:45:41 +0000
parents 46eb23d9471d
children 84036764e215
line wrap: on
line diff
--- a/src/event/ngx_event_pipe.c
+++ b/src/event/ngx_event_pipe.c
@@ -98,20 +98,46 @@ int ngx_event_pipe_read_upstream(ngx_eve
 
             if (ngx_event_flags == NGX_HAVE_KQUEUE_EVENT) {
 
-                if (p->upstream->read->error) {
-                    ngx_log_error(NGX_LOG_ERR, p->log, p->upstream->read->error,
+                if (p->upstream->read->available == 0) {
+                    if (p->upstream->read->kq_eof) {
+                        p->upstream->read->ready = 0;
+                        p->upstream->read->eof = 0;
+                        p->upstream_eof = 1;
+                        p->read = 1;
+
+                        if (p->upstream->read->kq_errno) {
+                            p->upstream->read->error = 1;
+                            p->upstream_error = 1;
+                            p->upstream_eof = 0;
+
+                            ngx_log_error(NGX_LOG_ERR, p->log,
+                                          p->upstream->read->kq_errno,
+                                          /* TODO: ngx_readv_chain_n */
+                                          "readv() failed");
+                        }
+
+                        break;
+                    }
+                }
+
+#if 0
+                if (p->upstream->read->kq_errno) {
+                    ngx_log_error(NGX_LOG_ERR, p->log,
+                                  p->upstream->read->kq_errno,
                                   "readv() failed");
                     p->upstream_error = 1;
 
                     break;
 
-                } else if (p->upstream->read->eof
+                } else if (p->upstream->read->kq_eof
                            && p->upstream->read->available == 0) {
                     p->upstream_eof = 1;
                     p->read = 1;
 
                     break;
                 }
+#endif
+
             }
 #endif