git: 935bde5ee133 - main - security/munge: Fix rc script
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
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"