[sr-dev] Again about return code when start action fails

Iñaki Baz Castillo ibc at aliax.net
Fri Jun 10 14:58:03 CEST 2011

2011/6/10 Iñaki Baz Castillo <ibc at aliax.net>:
> Ok, it's not a problem in kamailio code, but just in the kamailio init
> script. It fails and always return 0. I will inspect it.

I've found the problem. The init script is as follows:

set -e


case "$1" in

        echo -n "Starting $DESC: $NAME"
        start-stop-daemon --start --quiet --pidfile $PIDFILE \
                --exec $DAEMON -- $OPTIONS || echo -n " already running"
        echo "."

It's very wrong:

- It does not use --oknodo option, so in case the daemon is already
running the method return 1 and "echo 'already running'" is printed.
So finally it retuns 0 (OK). Yes, it seems correct but...

- In case start-stop-daemon returns error (!= 0) due to a *real*
error, then "already running" is also printed so 0 returned. Wrong.

Solution (I will improve it a bit more and commit it soon):

        echo -n "Starting $DESC: $NAME"
        start-stop-daemon --oknodo --start --quiet --pidfile $PIDFILE \
                --exec $DAEMON -- $OPTIONS
        echo "."

To check wheter kamailio is running, we can test it before trying to
start it with start-stop-daemon, so it could print "already running"
and return 0. But with my change, status codes are ok.

Iñaki Baz Castillo
<ibc at aliax.net>

More information about the sr-dev mailing list