4 # Required-Start: $local_fs $remote_fs $network $syslog
5 # Required-Stop: $local_fs $remote_fs $network $syslog
6 # Default-Start: 2 3 4 5
8 # Short-Description: The ashd HTTP server
13 . /lib/lsb/init-functions
15 PATH=/usr/local/bin:/usr/local/sbin:$PATH
16 HTPARSER="$(which htparser || true)"
17 PIDFILE=/var/run/ashd.pid
22 ROOTSPEC="dirplex /srv/www"
23 [ -r /etc/default/locale ] && . /etc/default/locale
24 [ -r /etc/default/ashd ] && . /etc/default/ashd
25 [ -x "$HTPARSER" ] || exit 0
29 [ -n "$SILENT_INIT" ] || log_daemon_msg "Starting HTTP server" "ashd"
30 if start-stop-daemon -S -p "$PIDFILE" -qa "$HTPARSER" -- -Sf -p "$PIDFILE" -u "$USER" -r "$CHROOT" $PORTSPEC -- $ROOTSPEC; then
31 [ -n "$SILENT_INIT" ] || log_success_msg
33 [ -n "$SILENT_INIT" ] || log_end_msg 1
38 start-stop-daemon -K -p "$PIDFILE" -qx "$HTPARSER"
42 pid=$(cat "$PIDFILE" 2>/dev/null || true)
43 if [ -z "$pid" ]; then
44 log_failure_msg "no pid file"
47 if ! kill -0 "$pid"; then
48 log_failure_msg "invalid saved pid"
51 [ -n "$SILENT_INIT" ] || log_progress_msg "listen"
53 for try in 0 1 2 3 4 5; do
55 case "$(wc -l <"$PIDFILE")" in
59 log_failure_msg "could not parse pid file"
64 log_failure_msg "htparser did not stop listening, killing it completely"
66 start-stop-daemon -K -p "$PIDFILE" -qx "$HTPARSER"
71 [ -n "$SILENT_INIT" ] || log_daemon_msg "Stopping HTTP server" "ashd"
73 [ -n "$SILENT_INIT" ] || log_success_msg
75 [ -n "$SILENT_INIT" ] || log_end_msg $?
80 [ -n "$SILENT_INIT" ] || log_daemon_msg "Stopping HTTP server" "ashd"
81 if ! kill_listen ; then
85 pid=$(cat "$PIDFILE" 2>/dev/null || true)
86 if kill -0 "$pid" 2>/dev/null; then
87 [ -n "$SILENT_INIT" ] || log_progress_msg "waiting for remaining connections..."
88 for try in $(seq "$GRACE_PERIOD"); do
90 if ! kill -0 "$pid" 2>/dev/null; then
91 [ -n "$SILENT_INIT" ] || log_success_msg
96 [ -n "$SILENT_INIT" ] || log_success_msg
99 [ -n "$SILENT_INIT" ] || log_progress_msg "terminating remaining connections"
101 [ -n "$SILENT_INIT" ] || log_success_msg
116 # Truncate PID file to allow start-stop-daemon to work despite remaining connections.