From 7e8534e36bca4fb0978729773bbaee76aee3adb7 Mon Sep 17 00:00:00 2001 From: Joachim Nilsson Date: Mon, 22 Oct 2018 13:05:00 +0200 Subject: [PATCH] pidfile_signal(): Return result of kill() and only remove on SIGKILL If kill() is successful, and the signal was SIGKILL, we remove() the PID file and return the rc of remove(), otherwise we always return the rc of kill(). Signed-off-by: Joachim Nilsson --- ChangeLog.md | 4 ++++ src/pidfilefn.c | 6 +++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 92f094c..224f750 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -9,6 +9,10 @@ All notable changes to the project are documented in this file. ### Changes - Add support for `strmatch()` and `strnmatch()` +### Fixes +- Fix `pidfile_signal()`: always return result of `kill()`, or the + result of `remove()` if we successfully sent `SIGKILL` + [v2.0.2][] - 2018-05-10 ----------------------- diff --git a/src/pidfilefn.c b/src/pidfilefn.c index bb32b3b..e88f9db 100644 --- a/src/pidfilefn.c +++ b/src/pidfilefn.c @@ -111,10 +111,10 @@ int pidfile_signal(const char *pidfile, int signal) return 1; ret = kill(pid, signal); - if ((ret == -1) || (signal == SIGTERM) || (signal == SIGKILL)) - (void)remove(pidfile); + if (!ret && signal == SIGKILL) + ret = remove(pidfile); - return 0; + return ret; } /**