Merge of r5017: fixed null dereference with resolver and poll.
Events: fixed null pointer dereference with resolver and poll.
A POLLERR signalled by poll() without POLLIN/POLLOUT, as seen on
Linux, would generate both read and write events, but there's no
write event handler for resolver events. A fix is to only call
event handler of an active event.
Maxim Dounin
9 years ago
370 | 370 | |
371 | 371 | found = 0; |
372 | 372 | |
373 | if (revents & POLLIN) { | |
373 | if ((revents & POLLIN) && c->read->active) { | |
374 | 374 | found = 1; |
375 | 375 | |
376 | 376 | ev = c->read; |
387 | 387 | ngx_locked_post_event(ev, queue); |
388 | 388 | } |
389 | 389 | |
390 | if (revents & POLLOUT) { | |
390 | if ((revents & POLLOUT) && c->write->active) { | |
391 | 391 | found = 1; |
392 | 392 | ev = c->write; |
393 | 393 |