- assert(ready != 0);
- if (ready < 0)
- /* TODO: Do we really want to fail here? */
- fatal("%s", strerror(errno));
- while (ready) {
+ clock_gettime(CLOCK_MONOTONIC, &t);
+ if (ready == -1) {
+ switch (errno) {
+ case EINTR:
+ error("pselect temp failure: %d, errno: %d, msg: %s\n",
+ ready, errno, strerror(errno));
+ /* TODO: Reconsider what to do here. */
+ return;
+ default:
+ fatal("pselect failed: %d, errno: %d, msg: %s\n",
+ ready, errno, strerror(errno));
+ }
+ }
+ /* At-least-once ensures that expiries are still checked on timeouts. */
+ do {