log tv_sec in call to yaz_poll
[pazpar2-moved-to-github.git] / src / eventl.c
index b914bf3..40dfeb4 100644 (file)
@@ -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)
                 {