From 7be3a5f92ddbb378a3c80e455cb7403f7861efa1 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Mon, 2 Mar 2015 16:17:54 -0800 Subject: [PATCH] tevent: Ignore unexpected signal events in the same way the epoll backend does. Bug: https://bugzilla.samba.org/show_bug.cgi?id=11118 Signed-off-by: Jeremy Allison Reviewed-by: David Disseldorp Autobuild-User(master): David Disseldorp Autobuild-Date(master): Tue Mar 3 17:33:06 CET 2015 on sn-devel-104 --- lib/tevent/tevent_port.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/tevent/tevent_port.c b/lib/tevent/tevent_port.c index 93e94b2158f..dd4958e86aa 100644 --- a/lib/tevent/tevent_port.c +++ b/lib/tevent/tevent_port.c @@ -483,10 +483,16 @@ static int port_event_loop(struct port_event_context *port_ev, struct timeval *t port_errno = errno; tevent_trace_point_callback(ev, TEVENT_TRACE_AFTER_WAIT); - if (ret == -1 && port_errno == EINTR && ev->signal_events) { - if (tevent_common_check_signal(ev)) { - return 0; + if (ret == -1 && port_errno == EINTR) { + if (ev->signal_events) { + tevent_common_check_signal(ev); } + /* + * If no signal handlers we got an unsolicited + * signal wakeup. This can happen with epoll + * too. Just return and ignore. + */ + return 0; } if (ret == -1 && port_errno == ETIME && tvalp) { -- 2.11.4.GIT