diff --git a/milter.rc b/milter.rc index 10903e3..17288f3 100755 --- a/milter.rc +++ b/milter.rc @@ -46,8 +46,32 @@ start() { stop() { # Stop daemons. echo -n "Shutting down $prog: " - killproc -d 9 milter - RETVAL=$? + # Find pid. + pid= + base="milter" + if [ -f /var/run/milter/milter.pid ]; then + local line p + read line < /var/run/milter/milter.pid + for p in $line ; do + [ -z "${p//[0-9]/}" -a -d "/proc/$p" ] && pid="$pid $p" + done + fi + if test -n "$pid"; then + checkpid $pid && kill "$pid" + for i in 1 2 3 4 5 6 7 8 9 0; do + checkpid $pid && sleep 2 || break + done + if checkpid $pid; then + failure $"$base shutdown" + RETVAL=1 + else + success $"$base shutdown" + RETVAL=0 + fi + else + killproc -d 9 milter + RETVAL=$? + fi echo [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/milter return $RETVAL