[jra at samba.org: [PATCH] Fix tevent: Ignore unexpected signal events for ports backend.]

Jeremy Allison jra at samba.org
Mon Mar 2 17:46:02 MST 2015


Miss-spelled samba-technical. Doh ! :-).
----- Forwarded message from Jeremy Allison <jra at samba.org> -----

Date: Mon, 2 Mar 2015 16:45:20 -0800
From: Jeremy Allison <jra at samba.org>
To: ddiss at suse.de, samba-technica at lists.samba.org
Cc: jra at samba.org
Subject: [PATCH] Fix tevent: Ignore unexpected signal events for ports backend.
User-Agent: Mutt/1.5.21 (2010-09-15)

Makes us do things the same way the Linux epoll
backend does.

David, please review !

Thanks,

	Jeremy.

From 025b657ed65e6752ce61b148bfa487d7351054a6 Mon Sep 17 00:00:00 2001
From: Jeremy Allison <jra at samba.org>
Date: Mon, 2 Mar 2015 16:17:54 -0800
Subject: [PATCH] lib: tevent: Ignore unexpected signal events in the same way
 the epoll backend does.

https://bugzilla.samba.org/show_bug.cgi?id=11118

Signed-off-by: Jeremy Allison <jra at samba.org>
---
 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 93e94b2..dd4958e 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.2.0.rc0.207.ga3a616c



----- End forwarded message -----


More information about the samba-technical mailing list