static fd_set master_write_fd_set;
static fd_set work_read_fd_set;
static fd_set work_write_fd_set;
+static fd_set work_except_fd_set;
static ngx_uint_t max_read;
static ngx_uint_t max_write;
work_read_fd_set = master_read_fd_set;
work_write_fd_set = master_write_fd_set;
+ work_except_fd_set = master_write_fd_set;
if (max_read || max_write) {
- ready = select(0, &work_read_fd_set, &work_write_fd_set, NULL, tp);
+ ready = select(0, &work_read_fd_set, &work_write_fd_set,
+ &work_except_fd_set, tp);
} else {
if (ev->write) {
if (FD_ISSET(c->fd, &work_write_fd_set)) {
- found = 1;
+ found++;
ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
"select write %d", c->fd);
}
+ if (FD_ISSET(c->fd, &work_except_fd_set)) {
+ found++;
+ ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
+ "select except %d", c->fd);
+ }
+
} else {
if (FD_ISSET(c->fd, &work_read_fd_set)) {
- found = 1;
+ found++;
ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
"select read %d", c->fd);
}
ngx_post_event(ev, queue);
- nready++;
+ nready += found;
}
}