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
ngx_fd_t fd;
ngx_err_t err;
ngx_int_t i;
- ngx_uint_t level;
+ ngx_uint_t level, instance;
ngx_event_t *rev, *wev, **queue;
ngx_connection_t *c;
struct pollfd pfd;
ngx_locked_post_event(rev, queue);
} else {
+ instance = rev->instance;
+
rev->handler(rev);
+
+ if (c->fd == -1 || wev->instance != instance) {
+ continue;
+ }
}
}
} else {
rev->handler(rev);
- if (ev->closed) {
+ if (ev->closed || ev->instance != instance) {
continue;
}
}