git: 935bde5ee133 - main - security/munge: Fix rc script

From: Muhammad Moinur Rahman <bofh_at_FreeBSD.org>
Date: Mon, 19 Feb 2024 06:26:52 UTC
The branch main has been updated by bofh:

URL: https://cgit.FreeBSD.org/ports/commit/?id=935bde5ee133f8c93dd67123827c075bc6ac2538

commit 935bde5ee133f8c93dd67123827c075bc6ac2538
Author:     Jason W. Bacon <jwb@freebsd.org>
AuthorDate: 2024-02-19 06:14:36 +0000
Commit:     Muhammad Moinur Rahman <bofh@FreeBSD.org>
CommitDate: 2024-02-19 06:26:39 +0000

    security/munge: Fix rc script
    
    The problem is that the munged_stop() function does not wait until the
    kill completes. This can cause start to fail with "munged already
    running" when the system is heavily loaded and kill is slower than
    usual.
    
    PR:             277003
---
 security/munge/Makefile        |  2 +-
 security/munge/files/munged.in | 21 +++++++++++++++++----
 2 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/security/munge/Makefile b/security/munge/Makefile
index fc2e5360a3ea..f0b232fb692c 100644
--- a/security/munge/Makefile
+++ b/security/munge/Makefile
@@ -1,6 +1,6 @@
 PORTNAME=	munge
 DISTVERSION=	0.5.15
-PORTREVISION=	1
+PORTREVISION=	2
 CATEGORIES=	security
 MASTER_SITES=	https://github.com/dun/${PORTNAME}/releases/download/${PORTNAME}-${DISTVERSION}/
 
diff --git a/security/munge/files/munged.in b/security/munge/files/munged.in
old mode 100644
new mode 100755
index 4a78b22acd4c..80bba011209f
--- a/security/munge/files/munged.in
+++ b/security/munge/files/munged.in
@@ -7,7 +7,7 @@
 # Add the following line to /etc/rc.conf to enable munged:
 # munged_enable (bool): Set to "NO" by default.
 #                       Set it to "YES" to enable munged.
-# munged_keyfile (str): Set to "/usr/local/etc/munge/munge.key" by default.
+# munged_keyfile (str): Set to "%%PREFIX%%/etc/munge/munge.key" by default.
 #                       Custom munge key.
 # munged_pidfile (str): Set to "/var/run/munged.pid" by default.
 #                       Custom PID file path and name.
@@ -31,10 +31,23 @@ command_args="--key-file=${munged_keyfile}"
 
 munged_stop()
 {
-	if [ -f "${pidfile}" ]; then
-		kill `cat ${pidfile}`
+    if checkyesno $rcvar; then
+	echo "Stopping $name."
+	pids="$(pgrep -d ' ' $name)"
+	if [ -n "$pids" ]; then
+	    echo "Waiting for PIDs: $pids"
+	    for signal in TERM INT QUIT KILL
+	    do
+		kill -s $signal $pids
+		sleep 1
+		pids=$(pgrep -d ' ' $name)
+		if [ -z "$pids" ]; then
+		    break
+		fi
+	    done
 	fi
-
+	rm -f $pidfile
+    fi
 }
 
 run_rc_command "$1"