+kill_wholly() {
+ start-stop-daemon -K -p "$PIDFILE" -qx "$HTPARSER"
+}
+
+kill_listen() {
+ pid=$(cat "$PIDFILE" 2>/dev/null || true)
+ if [ -z "$pid" ]; then
+ log_failure_msg "no pid file"
+ return 1
+ fi
+ if ! kill -0 "$pid"; then
+ log_failure_msg "invalid saved pid"
+ return 1
+ fi
+ log_progress_msg "listen"
+ kill -TERM "$pid"
+ for try in 0 1 2 3 4 5; do
+ sleep $try
+ case "$(wc -l <"$PIDFILE")" in
+ 1) continue ;;
+ 0|2) return 0 ;;
+ *)
+ log_failure_msg "could not parse pid file"
+ return 1
+ ;;
+ esac
+ done
+ log_failure_msg "htparser did not stop listening, killing it completely"
+ kill_wholly