Hi Kannel Developers,

We have been using -parachute to start Kannel (using /etc/init.d/kannel) to
add extra reliability as it was dropping, but then we can't stop Kannel
using a stop/start script.  It's running using the latest CVS on Centos.
Without the 
-parachute the script works perfectly and we want to thank Stephane Rosa for
the great script.

The reason for the problem is when Kannel starts, with the -parachute, it
also starts a watcher process to ensure if the child process crashes it will
restart them automatically. The stop/start script stops the main process
stored in bearerbox.pid, smsbox.pid and wapbox.pid but does not stop the
-parachute watcher for the bearerbox.  The smsbox does go down after a
while, but the bearerbox watcher does not stop and allow the bearerbox to
drop and so you can't re-start Kannel using the script and you need to
manually kill the pid.

I'm not sure if this is a bug in the -parachute option.

Any suggestions appreciated.

[EMAIL PROTECTED] init.d]# ls /var/run/kannel/
bearerbox.pid  smsbox.pid  wapbox.pid
[EMAIL PROTECTED] init.d]# cat /var/run/kannel/bearerbox.pid
10073
[EMAIL PROTECTED] init.d]# cat /var/run/kannel/smsbox.pid
10110
[EMAIL PROTECTED] init.d]# cat /var/run/kannel/wapbox.pid
10124
[EMAIL PROTECTED] init.d]# service kannel status
bearerbox (pid 10074 10073) is running...
smsbox (pid 10111 10110) is running...
wapbox (pid 10125 10124) is running...
[EMAIL PROTECTED] init.d]# service kannel stop
Shutting down Mobile Gateway cvs-20070901:                 [  OK  ]
[EMAIL PROTECTED] init.d]# service kannel status
bearerbox (pid 10074) is running...
smsbox (pid 10111 10110) is running...
wapbox is stopped
[EMAIL PROTECTED] init.d]# service kannel status
bearerbox (pid 10074) is running...
smsbox is stopped
wapbox is stopped

Requires manual intervention:
[EMAIL PROTECTED] init.d]# kill -9 10074
[EMAIL PROTECTED] init.d]# service kannel status
bearerbox is stopped
smsbox is stopped
wapbox is stopped

----------------------------------------------------------------------------
------------------------------
#  This shell script takes care of starting and stopping
#          the Kannel SMS & WAP gateway
#          Original version Fabrice Gatille <[EMAIL PROTECTED]>
#          Modified by Stephane Rosa ([EMAIL PROTECTED]) for RedHat9
# chkconfig: 2345 97 03
# description: Kannel is an SMS and WAP gateway
# The actual configurations we use are stored in "/etc/configurations" and
this is reflected in the script below

VERSION=`/usr/local/bin/gw-config --version` OPTIONS="--daemonize
--parachute --user kannel --pid-file /var/run/kannel/"
KANNELPATH=/usr/local/sbin
CONF=/etc/kannel.conf
CONFDIR=/etc/configurations

# Source function library & networking conf.
. /etc/init.d/functions
[ -f /etc/sysconfig/network ] && . /etc/sysconfig/network

# Check that we are root ... so non-root users stop here [ `id -u` = 0 ] ||
exit 1

# Various other checks
[ ${NETWORKING} = "yes" ] || exit 0
[ -x $KANNELPATH/bearerbox ] || exit 0
[ -x $KANNELPATH/smsbox ] || exit 0
[ -x $KANNELPATH/wapbox ] || exit 0
[ -f $CONF ] || exit 0

RETVAL=0; RETVAL1=0; RETVAL2=0; RETVAL3=0 prog="Kannel"

start() {
   # Check that at least one group is defined for sms
   # and/or wap to start the bearer. Then start boxes
   # as needed.
#   startsms=`egrep -se '^[ \t]*group *= *smsbox' $CONF`
#   startwap=`egrep -se '^[ \t]*group *= *wapbox' $CONF`

   startsms=`egrep -hse '^[ \t]*group *= *smsbox' $CONF ${CONFDIR}/*`
   startwap=`egrep -hse '^[ \t]*group *= *wapbox' $CONF ${CONFDIR}/*`

  if [ -n "$startsms$startwap" ]; then
      echo -n "Starting Mobile Gateway Service 1 ($VERSION): "
      daemon /usr/local/sbin/bearerbox ${OPTIONS}bearerbox.pid -- $CONF
      RETVAL1=$?
      echo
      sleep 15
   else
      exit 0
   fi

   if [ -n "$startsms" ]; then
      echo -n "Starting Mobile Gateway Service 2 ($VERSION): "
      daemon /usr/local/sbin/smsbox ${OPTIONS}smsbox.pid -- $CONF
      RETVAL2=$?
      echo
   fi

   if [ -n "$startwap" ]; then
      echo -n "Starting Mobile Gateway Wap service ($VERSION): "
      daemon /usr/local/sbin/wapbox ${OPTIONS}wapbox.pid -- $CONF
      RETVAL3=$?
      echo
   fi

   let RETVAL=$REVAL1+$RETVAL2+$RETVAL3
   if [ $RETVAL -eq 0 ]; then
      sleep 2
      touch /var/lock/subsys/gateway
      cat /var/run/kannel/*.pid > /var/run/kannel.pid
   fi
   return $RETVAL
}

stop() {
   echo -n "Shutting down Mobile Gateway $VERSION: "
   killproc kannel
   RETVAL=$?
   echo

if [ $RETVAL -eq 0 ]; then
      sleep 2
      rm -f /var/lock/subsys/gateway
      rm /var/run/kannel/*.pid
   fi
   return $RETVAL
}

# See how we were called.
case "$1" in
   start)
      # Start daemons.
      start
   ;;

   stop)
      # Stop daemons
      stop
   ;;

   restart)
      # Restart daemons
      stop
      sleep 1
      start
   ;;

   status)
      status bearerbox
      status smsbox
      status wapbox
      exit $?
   ;;

   *)
      echo "Usage: named {start|stop|status|restart}"
      RETVAL=1
esac

exit $RETVAL


----------------------------------------------------------------------------
------------------------------



Reply via email to