From: Martin Schwenke Date: Wed, 12 Sep 2018 04:18:00 +0000 (+1000) Subject: ctdb-cluster-mutex: Reset SIGTERM handler in cluster mutex child X-Git-Tag: samba-4.8.6~13 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1954a94203789422b163b4f257aa3c9ab83fa9a2;p=thirdparty%2Fsamba.git ctdb-cluster-mutex: Reset SIGTERM handler in cluster mutex child If SIGTERM is received and the tevent signal handler setup in the recovery daemon is still enabled then the signal is handled and a corresponding event is queued. The child never runs an event loop so the signal is effectively ignored. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13617 Signed-off-by: Martin Schwenke Reviewed-by: Amitay Isaacs (cherry picked from commit 5a6b139884f08ee2ee10f9d16fe56ad8fb5352a6) --- diff --git a/ctdb/server/ctdb_cluster_mutex.c b/ctdb/server/ctdb_cluster_mutex.c index 804c6d5dd8c..e8c75debfb8 100644 --- a/ctdb/server/ctdb_cluster_mutex.c +++ b/ctdb/server/ctdb_cluster_mutex.c @@ -234,6 +234,16 @@ ctdb_cluster_mutex(TALLOC_CTX *mem_ctx, } if (h->child == 0) { + struct sigaction sa = { + .sa_handler = SIG_DFL, + }; + + ret = sigaction(SIGTERM, &sa, NULL); + if (ret != 0) { + DBG_WARNING("Failed to reset signal handler (%d)\n", + errno); + } + /* Make stdout point to the pipe */ close(STDOUT_FILENO); dup2(h->fd[1], STDOUT_FILENO);