diff options
| author | Valentin Bartenev <vbart@nginx.com> | 2013-04-12 15:02:33 +0000 |
|---|---|---|
| committer | Valentin Bartenev <vbart@nginx.com> | 2013-04-12 15:02:33 +0000 |
| commit | ed9f87c90119832c3c96fb9c352e53db61943fe4 (patch) | |
| tree | 4feedf5c7c969c4f45aa2d367b974cb81e97f00f /src/event/modules/ngx_eventport_module.c | |
| parent | 7a7650aeb16ee21a5f596cd855c97066726c00a8 (diff) | |
| download | nginx-ed9f87c90119832c3c96fb9c352e53db61943fe4.tar.gz nginx-ed9f87c90119832c3c96fb9c352e53db61943fe4.tar.bz2 | |
Events: protection from stale events in eventport and devpoll.
Stale write event may happen if read and write events was reported both,
and processing of the read event closed descriptor.
In practice this might result in "sendfilev() failed (134: ..." or
"writev() failed (134: ..." errors when switching to next upstream server.
See report here:
http://mailman.nginx.org/pipermail/nginx/2013-April/038421.html
Diffstat (limited to 'src/event/modules/ngx_eventport_module.c')
| -rw-r--r-- | src/event/modules/ngx_eventport_module.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/event/modules/ngx_eventport_module.c b/src/event/modules/ngx_eventport_module.c index d6dcb0bed..5f9cf4e35 100644 --- a/src/event/modules/ngx_eventport_module.c +++ b/src/event/modules/ngx_eventport_module.c @@ -551,7 +551,7 @@ ngx_eventport_process_events(ngx_cycle_t *cycle, ngx_msec_t timer, } else { rev->handler(rev); - if (ev->closed) { + if (ev->closed || ev->instance != instance) { continue; } } |
