summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2011-08-01 11:49:10 -0700
committerJeremy Allison <jra@samba.org>2011-08-01 22:03:45 +0200
commit0c67efdd68b9808542c090b9fd9920e4e37d85d0 (patch)
treee3d1a5a37f072940692ef8182e5a763f260c8f94
parent7585057a22beda5bac2b98c7488e994880927daf (diff)
downloadsamba-0c67efdd68b9808542c090b9fd9920e4e37d85d0.tar.gz
samba-0c67efdd68b9808542c090b9fd9920e4e37d85d0.tar.bz2
samba-0c67efdd68b9808542c090b9fd9920e4e37d85d0.zip
Fix bug 7462 - Non-standard SA_RESETHAND is used in ...lib/tevent/tevent_signal.c
Make SA_RESETHAND conditional on its existance. Autobuild-User: Jeremy Allison <jra@samba.org> Autobuild-Date: Mon Aug 1 22:03:45 CEST 2011 on sn-devel-104
-rw-r--r--lib/replace/system/wait.h4
-rw-r--r--lib/tevent/testsuite.c2
-rw-r--r--lib/tevent/tevent_signal.c4
3 files changed, 6 insertions, 4 deletions
diff --git a/lib/replace/system/wait.h b/lib/replace/system/wait.h
index 41db1806a5..f0c3bdccab 100644
--- a/lib/replace/system/wait.h
+++ b/lib/replace/system/wait.h
@@ -40,10 +40,6 @@
#include <setjmp.h>
#endif
-#ifndef SA_RESETHAND
-#define SA_RESETHAND SA_ONESHOT
-#endif
-
#if !defined(HAVE_SIG_ATOMIC_T_TYPE)
typedef int sig_atomic_t;
#endif
diff --git a/lib/tevent/testsuite.c b/lib/tevent/testsuite.c
index 991e161733..1e2f25afb0 100644
--- a/lib/tevent/testsuite.c
+++ b/lib/tevent/testsuite.c
@@ -101,7 +101,9 @@ static bool test_event_context(struct torture_context *test,
#ifdef SA_RESTART
se1 = event_add_signal(ev_ctx, ev_ctx, SIGALRM, SA_RESTART, count_handler, &alarm_count);
#endif
+#ifdef SA_RESETHAND
se2 = event_add_signal(ev_ctx, ev_ctx, SIGALRM, SA_RESETHAND, count_handler, &alarm_count);
+#endif
#ifdef SA_SIGINFO
se3 = event_add_signal(ev_ctx, ev_ctx, SIGUSR1, SA_SIGINFO, count_handler, &info_count);
#endif
diff --git a/lib/tevent/tevent_signal.c b/lib/tevent/tevent_signal.c
index dbab8a8ada..b7908593f0 100644
--- a/lib/tevent/tevent_signal.c
+++ b/lib/tevent/tevent_signal.c
@@ -355,16 +355,20 @@ int tevent_common_check_signal(struct tevent_context *ev)
(void*)&sig_state->sig_info[i][ofs],
se->private_data);
}
+#ifdef SA_RESETHAND
if (se->sa_flags & SA_RESETHAND) {
talloc_free(se);
}
+#endif
continue;
}
#endif
se->handler(ev, se, i, count, NULL, se->private_data);
+#ifdef SA_RESETHAND
if (se->sa_flags & SA_RESETHAND) {
talloc_free(se);
}
+#endif
}
#ifdef SA_SIGINFO