- int fd = p->fd;
- int mask = 0;
- if (FD_ISSET(fd, &in))
- mask |= YAZ_SOCKET_OBSERVE_READ;
-
- if (FD_ISSET(fd, &out))
- mask |= YAZ_SOCKET_OBSERVE_WRITE;
-
- if (FD_ISSET(fd, &except))
- mask |= YAZ_SOCKET_OBSERVE_EXCEPT;
-
- if (mask)
- {
- YazSocketEvent *event = new YazSocketEvent;
- event->observer = p->observer;
- event->event = mask;
- putEvent (event);
- }
+ int fd = p->fd;
+ int mask = 0;
+ if (FD_ISSET(fd, &in))
+ mask |= SOCKET_OBSERVE_READ;
+
+ if (FD_ISSET(fd, &out))
+ mask |= SOCKET_OBSERVE_WRITE;
+
+ if (FD_ISSET(fd, &except))
+ mask |= SOCKET_OBSERVE_EXCEPT;
+
+ if (mask)
+ {
+ SocketEvent *event = new SocketEvent;
+ p->last_activity = now;
+ event->observer = p->observer;
+ event->event = mask;
+ putEvent (event);
+
+ yaz_log (m_log, "putEvent I/O mask=%d", mask);
+ }
+ else if (res == 0 && p->timeout_this == timeout)
+ {
+ SocketEvent *event = new SocketEvent;
+ assert (p->last_activity);
+ yaz_log (m_log, "putEvent timeout fd=%d, now = %ld last_activity=%ld timeout=%d",
+ p->fd, now, p->last_activity, p->timeout);
+ p->last_activity = now;
+ event->observer = p->observer;
+ event->event = SOCKET_OBSERVE_TIMEOUT;
+ putEvent (event);
+ }