commit:     33f785f6d2650b7bd8556bb58c95468b4d3a0ac1
Author:     Slawomir Lis <slis <AT> gentoo <DOT> org>
AuthorDate: Mon Jan 16 12:25:22 2017 +0000
Commit:     Slawek Lis <slis <AT> gentoo <DOT> org>
CommitDate: Mon Jan 16 12:25:22 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=33f785f6

net-analyzer/suricata: updated init script

As reported in bug #605754, updated init script stop()
function to take correct method of stopping long-running
suricata shutdown

Reported-by: Vieri <rentorbuy <AT> yahoo.com>

Package-Manager: Portage-2.3.3, Repoman-2.3.1

 net-analyzer/suricata/files/suricata-3.2-init | 36 +++------------------------
 1 file changed, 4 insertions(+), 32 deletions(-)

diff --git a/net-analyzer/suricata/files/suricata-3.2-init 
b/net-analyzer/suricata/files/suricata-3.2-init
index 9ffedf4..05f05dd 100644
--- a/net-analyzer/suricata/files/suricata-3.2-init
+++ b/net-analyzer/suricata/files/suricata-3.2-init
@@ -1,5 +1,5 @@
 #!/sbin/openrc-run
-# Copyright 1999-2016 Gentoo Foundation
+# Copyright 1999-2017 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 # $Id$
 
@@ -27,6 +27,7 @@ fi
 SURICATAUSER=${SURICATAUSER:-${SURICATA_USER}}
 SURICATAGROUP=${SURICATAGROUP:-${SURICATA_GROUP}}
 [ -e ${SURICATACONF} ] && SURICATAOPTS="-c ${SURICATACONF} ${SURICATAOPTS}"
+[[ -z "${SURICATA_MAX_WAIT_ON_STOP// }" ]] || SURICATA_RETRY="--retry 
${SURICATA_MAX_WAIT_ON_STOP}"
 
 description="Suricata IDS/IPS"
 extra_commands="checkconfig dump"
@@ -111,37 +112,8 @@ start() {
 
 stop() {
        ebegin "Stopping ${SVCNAME}"
-       initpidinfo
-       start-stop-daemon --stop --quiet --pidfile ${SURICATAPID} >/dev/null 
2>&1
-       einfo "Waiting for ${SVCNAME} to shut down. This can take a while..."
-       # max wait: 5 minutes as it can take quite a while on some systems with 
heavy traffic
-       local cnt=300
-       while [ -e ${SURICATAPID} ] && [ $cnt -gt 0 ]; do
-           cnt=$(expr $cnt - 1)
-           sleep 1
-           echo -ne "$cnt seconds left before we give up checking the PID 
file...\r"
-       done
-       # under certain conditions suricata can be pretty slow and the PID can 
persist long after the pidfile has been removed
-       # max wait for process to terminate: 1 minute
-       if [ ${#SUR_PID} -gt 0 ]; then
-           cnt=60
-           SUR_PID_CHECK="$(ps -eo pid | grep -c ${SUR_PID})"
-           if [ $((SUR_PID_CHECK)) -ne 0 ]; then
-               einfo "The PID file ${SURICATAPID} is gone but the ${SVCNAME} 
PID ${SUR_PID} is still running."
-               einfo "Waiting for process to shut down on its own. This can 
take a while..."
-           fi
-           while [ $((SUR_PID_CHECK)) -ne 0 ]; do
-               cnt=$(expr $cnt - 1)
-               if [ $cnt -lt 1 ] ; then
-                   eend 1 "Failed. You might need to kill PID ${SUR_PID} or 
find out why it can't be stopped."
-                   break
-               fi
-               sleep 1
-               echo -ne "$cnt seconds left before we give up checking PID 
${SUR_PID}...\r"
-               SUR_PID_CHECK="$(ps -eo pid | grep -c ${SUR_PID})"
-           done
-       fi
-       eend 0
+       start-stop-daemon --stop ${SURICATA_RETRY} --quiet --pidfile 
${SURICATAPID} >/dev/null 2>&1
+       eend $?
 }
 
 reload() {

Reply via email to