return (-1);
}
- evsig_process(base);
return (0);
- } else if (base->sig.evsig_caught) {
- evsig_process(base);
}
event_debug(("%s: devpoll_wait reports %d", __func__, res));
return (-1);
}
- evsig_process(base);
return (0);
- } else if (base->sig.evsig_caught) {
- evsig_process(base);
}
event_debug(("%s: epoll_wait reports %d", __func__, res));
if (res == -1) {
if (errno == EINTR || errno == EAGAIN) {
- evsig_process(base);
return (0);
} else if (errno == ETIME) {
if (nevents == 0)
event_warn("port_getn");
return (-1);
}
- } else if (base->sig.evsig_caught) {
- evsig_process(base);
}
event_debug(("%s: port_getn reports %d events", __func__, nevents));
/* Count of the number of signals we're currently watching. */
int ev_n_signals_added;
- volatile sig_atomic_t evsig_caught;
-
/* Array of previous signal handler objects before Libevent started
* messing with them. Used to restore old signal handlers. */
#ifdef _EVENT_HAVE_SIGACTION
int sh_old_max;
};
int evsig_init(struct event_base *);
-void evsig_process(struct event_base *);
void evsig_dealloc(struct event_base *);
void evsig_set_base(struct event_base *base);
if (kevent(kqop->kq, &kev, 1, NULL, 0, &timeout) == -1)
return (-1);
+ /* XXXX The manpage suggest we could use SIG_IGN instead of a
+ * do-nothing handler */
if (_evsig_set_handler(base, nsignal, kq_sighandler) == -1)
return (-1);
return (-1);
}
- evsig_process(base);
return (0);
- } else if (base->sig.evsig_caught) {
- evsig_process(base);
}
event_debug(("%s: poll reports %d", __func__, res));
return (-1);
}
- evsig_process(base);
return (0);
- } else if (base->sig.evsig_caught) {
- evsig_process(base);
}
event_debug(("%s: select reports %d", __func__, res));
evutil_make_socket_closeonexec(base->sig.ev_signal_pair[1]);
base->sig.sh_old = NULL;
base->sig.sh_old_max = 0;
- base->sig.evsig_caught = 0;
evutil_make_socket_nonblocking(base->sig.ev_signal_pair[0]);
evutil_make_socket_nonblocking(base->sig.ev_signal_pair[1]);
#endif
}
-void
-evsig_process(struct event_base *base)
-{
-}
-
void
evsig_dealloc(struct event_base *base)
{
evsignal_del(&ev);
raise(SIGCONT);
+#if 0
/* only way to verify we were in evsig_handler() */
+ /* XXXX Now there's no longer a good way. */
if (base->sig.evsig_caught)
test_ok = 0;
else
test_ok = 1;
+#else
+ test_ok = 1;
+#endif
event_base_free(base);
cleanup_test();
msec = LONG_MAX;
/* Windows doesn't like you to call select() with no sockets */
Sleep(msec);
- evsig_process(base);
return (0);
}
event_debug(("%s: select returned %d", __func__, res));
if (res <= 0) {
- evsig_process(base);
return res;
- } else if (base->sig.evsig_caught) {
- evsig_process(base);
}
if (win32op->readset_out->fd_count) {