--- /etc/init.d/openvpn-orig 2013-07-12 10:49:14.408978046 -0400 +++ /etc/init.d/openvpn 2013-07-12 11:05:22.162080899 -0400 @@ -99,11 +99,16 @@ fi } stop_vpn () { - kill `cat $PIDFILE` || true - rm -f $PIDFILE - [ "$OMIT_SENDSIGS" -ne 1 ] || rm -f /run/sendsigs.omit.d/openvpn.$NAME.pid - rm -f /var/run/openvpn.$NAME.status 2> /dev/null - log_end_msg 0 + start-stop-daemon --stop --quiet --oknodo \ + --pidfile $PIDFILE --exec $DAEMON --retry 5 + if [ "$?" -eq 0 ]; then + rm -f $PIDFILE + [ "$OMIT_SENDSIGS" -ne 1 ] || rm -f /run/sendsigs.omit.d/openvpn.$NAME.pid + rm -f /var/run/openvpn.$NAME.status 2> /dev/null + log_end_msg 0 + else + log_warning_msg " Unable to stop the VPN." + fi } case "$1" in @@ -191,7 +196,6 @@ if egrep '^[[:blank:]]*user[[:blank:]]' $CONFIG_DIR/$NAME.conf > /dev/null 2>&1 ; then log_daemon_msg " Stopping VPN '$NAME'" stop_vpn - sleep 1 log_daemon_msg " Restarting VPN '$NAME'" start_vpn else @@ -222,7 +226,6 @@ restart) shift $0 stop ${@} - sleep 1 $0 start ${@} ;; cond-restart) @@ -233,7 +236,6 @@ NAME=${NAME%%.pid} log_daemon_msg " Stopping VPN '$NAME'" stop_vpn - sleep 1 log_daemon_msg " Restarting VPN '$NAME'" start_vpn done