X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Feventl.c;h=40dfeb472bc556afd0524be1eeff688520450e92;hb=c4a0e7bd9ac4994ad56c637945c55aeb8bfe2c9c;hp=b914bf3914551dd1ffd632b838e1754227887fd6;hpb=19b85891163749971c8e15f9ccca76cc4c5bb9bc;p=pazpar2-moved-to-github.git diff --git a/src/eventl.c b/src/eventl.c index b914bf3..40dfeb4 100644 --- a/src/eventl.c +++ b/src/eventl.c @@ -255,7 +255,7 @@ static int event_loop(iochan_man_t man, IOCHAN *iochans) { p->poll_offset = i; fds[i].client_data = p; - fds[i].fd = p->fd; + fds[i].fd = -1; fds[i].input_mask = 0; if (p->thread_users > 0) continue; @@ -269,8 +269,12 @@ static int event_loop(iochan_man_t man, IOCHAN *iochans) fds[i].input_mask |= yaz_poll_write; if (p->flags & EVENT_EXCEPT) fds[i].input_mask |= yaz_poll_except; + if (fds[i].input_mask) + fds[i].fd = p->fd; } - yaz_log(man->log_level, "yaz_poll begin nofds=%d", no_fds); + assert(i == no_fds); + yaz_log(man->log_level, "yaz_poll begin tv_sec=%d nofds=%d", tv_sec, + no_fds); res = yaz_poll(fds, no_fds, tv_sec, 0); yaz_log(man->log_level, "yaz_poll returned res=%d", res); if (res < 0) @@ -280,7 +284,7 @@ static int event_loop(iochan_man_t man, IOCHAN *iochans) else { yaz_log(YLOG_ERRNO | YLOG_WARN, "poll"); - return 0; + abort(); } } if (man->sel_fd != -1) @@ -334,7 +338,7 @@ static int event_loop(iochan_man_t man, IOCHAN *iochans) p->last_event = now; p->this_event |= EVENT_TIMEOUT; } - if (fds[i].fd >= 0) + if (fds[i].fd >= 0 && p->fd == fds[i].fd) { if (fds[i].output_mask & yaz_poll_read) {