rc.subr: Check for running daemons before a custom start_cmd is executed.

Currently rc scripts implementing their own start_cmd do not enjoy the
benefits of rc.subr's own check for rc_pid.

This leads to around a third of ports with such a start_cmd not to check for
the process at all and two thirds of ports to re-implement this check
(sometimes wrongly).

This patch moves the check for rc_pid to before ${rc_arg}_cmd is executed.

Submitted by:	Dirk Engling
Reviewed by:	feld
MFC after:	1 week
Relnotes:	yes
Differential Revision:	https://reviews.freebsd.org/D4156
This commit is contained in:
Jilles Tjoelker 2015-12-04 16:32:29 +00:00
parent 61d1f7f291
commit 80fe6bcf09

View File

@ -976,6 +976,14 @@ run_rc_command()
fi
fi
if [ $rc_arg = "start" -a -z "$rc_fast" -a -n "$rc_pid" ]; then
if [ -z "$rc_quiet" ]; then
echo 1>&2 "${name} already running? " \
"(pid=$rc_pid)."
fi
return 1
fi
# if there's a custom ${XXX_cmd},
# run that instead of the default
#
@ -1004,14 +1012,6 @@ run_rc_command()
;;
start)
if [ -z "$rc_fast" -a -n "$rc_pid" ]; then
if [ -z "$rc_quiet" ]; then
echo 1>&2 "${name} already running? " \
"(pid=$rc_pid)."
fi
return 1
fi
if [ ! -x "${_chroot}${_chroot:+/}${command}" ]; then
warn "run_rc_command: cannot run $command"
return 1