changeset 5062:a095b3692ad1 stable-1.2

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.
author Maxim Dounin <mdounin@mdounin.ru>
date Mon, 11 Feb 2013 16:06:39 +0000
parents 7ce4ecb6df5c
children 6b5c3eab095c
files src/event/modules/ngx_poll_module.c
diffstat 1 files changed, 2 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/event/modules/ngx_poll_module.c
+++ b/src/event/modules/ngx_poll_module.c
@@ -371,7 +371,7 @@ ngx_poll_process_events(ngx_cycle_t *cyc
 
         found = 0;
 
-        if (revents & POLLIN) {
+        if ((revents & POLLIN) && c->read->active) {
             found = 1;
 
             ev = c->read;
@@ -388,7 +388,7 @@ ngx_poll_process_events(ngx_cycle_t *cyc
             ngx_locked_post_event(ev, queue);
         }
 
-        if (revents & POLLOUT) {
+        if ((revents & POLLOUT) && c->write->active) {
             found = 1;
             ev = c->write;