diff options
Diffstat (limited to 'src/event/ngx_event_pipe.c')
-rw-r--r-- | src/event/ngx_event_pipe.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/event/ngx_event_pipe.c b/src/event/ngx_event_pipe.c index 261308913..dddf2cfe1 100644 --- a/src/event/ngx_event_pipe.c +++ b/src/event/ngx_event_pipe.c @@ -19,6 +19,7 @@ static int ngx_event_pipe_drain_chains(ngx_event_pipe_t *p); int ngx_event_pipe(ngx_event_pipe_t *p, int do_write) { + int flags; ngx_event_t *rev, *wev; for ( ;; ) { @@ -45,7 +46,9 @@ int ngx_event_pipe(ngx_event_pipe_t *p, int do_write) if (p->upstream->fd != -1) { rev = p->upstream->read; - if (ngx_handle_read_event(rev, (rev->eof || rev->error)) == NGX_ERROR) { + flags = (rev->eof || rev->error) ? NGX_CLOSE_EVENT : 0; + + if (ngx_handle_read_event(rev, flags) == NGX_ERROR) { return NGX_ABORT; } @@ -54,12 +57,10 @@ int ngx_event_pipe(ngx_event_pipe_t *p, int do_write) } } -ngx_log_debug(p->log, "DOWN: %d" _ p->downstream->fd); - if (p->downstream->fd != -1) { wev = p->downstream->write; - - if (ngx_handle_write_event(wev, p->send_lowat) == NGX_ERROR) { + wev->available = p->send_lowat; + if (ngx_handle_write_event(wev, NGX_LOWAT_EVENT) == NGX_ERROR) { return NGX_ABORT; } |