--- orig/networkmanager 2008-03-31 18:22:24.000000000 +0300 +++ new/networkmanager 2008-03-31 18:54:29.000000000 +0300 @@ -10,6 +10,26 @@ . /etc/rc.conf . /etc/rc.d/functions +# Helper functions +waitfor () { + [ -z "$1" ] && return 1 + + PID=$1 + ITER_MAX=10 + [ ! -z "$2" ] && ((ITER_MAX=$2*10)) + ITER=0 + + while [ $ITER -lt $ITER_MAX ] && [ -d /proc/$PID ] + do + sleep 0.1 + ((ITER++)) + done + + [ -d /proc/$PID ] && return 1 + return 0 +} + + # Sanity checks. [ -x $NETWORKMANAGER_BIN ] || exit 0 @@ -35,7 +55,7 @@ stop) stat_busy "Stopping NetworkManager" [ ! -z "$PID" ] && kill $PID &> /dev/null - if [ $? -gt 0 ]; then + if [ $? -gt 0 ] || ! waitfor $PID 3 ; then stat_fail else rm_daemon networkmanager