diff options
Diffstat (limited to 'src/event/ngx_event_pipe.c')
-rw-r--r-- | src/event/ngx_event_pipe.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/event/ngx_event_pipe.c b/src/event/ngx_event_pipe.c index ffb7929dd..09b6f6a6e 100644 --- a/src/event/ngx_event_pipe.c +++ b/src/event/ngx_event_pipe.c @@ -60,8 +60,11 @@ ngx_event_pipe(ngx_event_pipe_t *p, int do_write) return NGX_ABORT; } - if (rev->active) { + if (rev->active && !rev->ready) { ngx_add_timer(rev, p->read_timeout); + + } else if (rev->timer_set) { + ngx_del_timer(rev); } } @@ -71,8 +74,13 @@ ngx_event_pipe(ngx_event_pipe_t *p, int do_write) return NGX_ABORT; } - if (wev->active && !wev->ready && !wev->delayed) { - ngx_add_timer(wev, p->send_timeout); + if (!wev->delayed) { + if (wev->active && !wev->ready) { + ngx_add_timer(wev, p->send_timeout); + + } else if (wev->timer_set) { + ngx_del_timer(wev); + } } } |