diff options
author | Igor Sysoev <igor@sysoev.ru> | 2003-10-28 15:45:41 +0000 |
---|---|---|
committer | Igor Sysoev <igor@sysoev.ru> | 2003-10-28 15:45:41 +0000 |
commit | ab0c4f5038cec58e23a023d8a1e01be038504e3e (patch) | |
tree | 2857bfcbd81676e018df566a94004ea3d942764e /src/event/ngx_event_pipe.c | |
parent | 2b0c76cfbdfd660242f47ce66a4d54d30f9b23e8 (diff) | |
download | nginx-ab0c4f5038cec58e23a023d8a1e01be038504e3e.tar.gz nginx-ab0c4f5038cec58e23a023d8a1e01be038504e3e.zip |
nginx-0.0.1-2003-10-28-18:45:41 import
Diffstat (limited to 'src/event/ngx_event_pipe.c')
-rw-r--r-- | src/event/ngx_event_pipe.c | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/src/event/ngx_event_pipe.c b/src/event/ngx_event_pipe.c index c64793d69..209f5cf23 100644 --- 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_event_pipe_t *p) 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 |