From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8196 invoked by alias); 20 Mar 2009 05:30:37 -0000 Received: (qmail 8117 invoked by alias); 20 Mar 2009 05:30:36 -0000 X-SWARE-Spam-Status: No, hits=-1.7 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS X-Spam-Status: No, hits=-1.7 required=5.0 tests=AWL,BAYES_00,SPF_HELO_PASS X-Spam-Check-By: sourceware.org X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on bastion.fedora.phx.redhat.com Subject: cluster: STABLE3 - notifyd: fix lockfile handling and exit path To: cluster-cvs-relay@redhat.com X-Project: Cluster Project X-Git-Module: cluster.git X-Git-Refname: refs/heads/STABLE3 X-Git-Reftype: branch X-Git-Oldrev: 7df83f541d621054aab903e550d4afede8f1375f X-Git-Newrev: a0a24f22c55e6c7ca4b582dc42d368bd6e8d9d98 From: "Fabio M. Di Nitto" Message-Id: <20090320053011.11EA61202F9@lists.fedorahosted.org> Date: Fri, 20 Mar 2009 05:30:00 -0000 X-Scanned-By: MIMEDefang 2.58 on 172.16.52.254 Mailing-List: contact cluster-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: cluster-cvs-owner@sourceware.org X-SW-Source: 2009-q1/txt/msg00835.txt.bz2 Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=a0a24f22c55e6c7ca4b582dc42d368bd6e8d9d98 Commit: a0a24f22c55e6c7ca4b582dc42d368bd6e8d9d98 Parent: 7df83f541d621054aab903e550d4afede8f1375f Author: Fabio M. Di Nitto AuthorDate: Fri Mar 20 06:26:47 2009 +0100 Committer: Fabio M. Di Nitto CommitterDate: Fri Mar 20 06:26:47 2009 +0100 notifyd: fix lockfile handling and exit path make sure to unlink our pid file on exit. on exit, we often interrupt in the select operation. this leads to select returnint an error and instead of processing the normal exit path, we handling the error. Signed-off-by: Fabio M. Di Nitto --- cman/notifyd/main.c | 12 ++++++++++++ 1 files changed, 12 insertions(+), 0 deletions(-) diff --git a/cman/notifyd/main.c b/cman/notifyd/main.c index 0f60f60..7a96444 100644 --- a/cman/notifyd/main.c +++ b/cman/notifyd/main.c @@ -94,6 +94,11 @@ static void read_arguments(int argc, char **argv) } } +static void remove_lockfile(void) +{ + unlink(LOCKFILE_NAME); +} + static void lockfile(void) { int fd, error; @@ -134,6 +139,8 @@ static void lockfile(void) fprintf(stderr, "cannot write lock file %s\n", LOCKFILE_NAME); exit(EXIT_FAILURE); } + + atexit(remove_lockfile); } static void sigterm_handler(int sig) @@ -356,6 +363,10 @@ static void loop() cman_fd = cman_get_fd(cman_handle); FD_SET (cman_fd, &read_fds); se_result = select((cman_fd + 1), &read_fds, 0, 0, 0); + + if (daemon_quit) + goto out; + if (se_result == -1) { logt_print(LOG_CRIT, "Unable to select on cman_fd: %s\n", strerror(errno)); byebye_cman(); @@ -376,6 +387,7 @@ static void loop() } } while (se_result && !daemon_quit); +out: logt_print(LOG_DEBUG, "shutting down...\n"); byebye_cman(); }