Package: kamailio Version: 5.1.0-1 Severity: normal Tags: patch Hi!
The current init script does not wait for the process to finish when doing a stop, this can break on certain conditions or when the daemon is very slow to stop. As a new start might consider the service is already running, exit with success, and then the old instance terminates, leaving us with nothing being executed. The attached patch should solve this. If you consider the timeout of 5 to be too quick we can always increment it. I've not patched the alpine init script because that one uses the s-s-d implementation coming from openrc, and I've got no idea how that behaves. :) Thanks, Guillem
From 5dfe7bab3e6ef4196e35c1d5d855f0a2b693bc80 Mon Sep 17 00:00:00 2001 From: Guillem Jover <gjo...@sipwise.com> Date: Tue, 6 Feb 2018 18:22:51 +0100 Subject: [PATCH] Wait for kamailio to exit before returning on sysvinit stop action We should not return until the service has been fully terminated, otherwise a subsequent start might break as it can consider itself as already running. And once the old instance stops there's nothing left running. This also makes it possibe to remove a sleep in the restart action. --- debian/kamailio.init | 3 +-- pkg/kamailio/deb/buster/kamailio.init | 3 +-- pkg/kamailio/deb/debian/kamailio.init | 3 +-- pkg/kamailio/deb/jessie/kamailio.init | 3 +-- pkg/kamailio/deb/precise/kamailio.init | 3 +-- pkg/kamailio/deb/sid/kamailio.init | 3 +-- pkg/kamailio/deb/stretch/kamailio.init | 3 +-- pkg/kamailio/deb/trusty/kamailio.init | 3 +-- pkg/kamailio/deb/wheezy/kamailio.init | 3 +-- pkg/kamailio/deb/xenial/kamailio.init | 3 +-- 10 files changed, 10 insertions(+), 20 deletions(-) diff --git a/debian/kamailio.init b/debian/kamailio.init index a0777c29..dd576467 100644 --- a/debian/kamailio.init +++ b/debian/kamailio.init @@ -113,14 +113,13 @@ case "$1" in stop) log_daemon_msg "Stopping $DESC: $NAME" start-stop-daemon --oknodo --stop --quiet --pidfile $PIDFILE \ - --exec $DAEMON + --exec $DAEMON --retry 5 log_end_msg 0 ;; restart|force-reload) check_kamailio_config $0 stop - sleep 1 $0 start ;; status) diff --git a/pkg/kamailio/deb/buster/kamailio.init b/pkg/kamailio/deb/buster/kamailio.init index b14f83a7..09ca0800 100644 --- a/pkg/kamailio/deb/buster/kamailio.init +++ b/pkg/kamailio/deb/buster/kamailio.init @@ -137,7 +137,7 @@ case "$1" in stop) log_daemon_msg "Stopping $DESC: $NAME" start-stop-daemon --oknodo --stop --quiet --pidfile $PIDFILE \ - --exec $DAEMON + --exec $DAEMON --retry 5 log_end_msg 0 ;; restart|force-reload) @@ -145,7 +145,6 @@ case "$1" in create_radius_seqfile $0 stop - sleep 1 $0 start ;; status) diff --git a/pkg/kamailio/deb/debian/kamailio.init b/pkg/kamailio/deb/debian/kamailio.init index b14f83a7..09ca0800 100644 --- a/pkg/kamailio/deb/debian/kamailio.init +++ b/pkg/kamailio/deb/debian/kamailio.init @@ -137,7 +137,7 @@ case "$1" in stop) log_daemon_msg "Stopping $DESC: $NAME" start-stop-daemon --oknodo --stop --quiet --pidfile $PIDFILE \ - --exec $DAEMON + --exec $DAEMON --retry 5 log_end_msg 0 ;; restart|force-reload) @@ -145,7 +145,6 @@ case "$1" in create_radius_seqfile $0 stop - sleep 1 $0 start ;; status) diff --git a/pkg/kamailio/deb/jessie/kamailio.init b/pkg/kamailio/deb/jessie/kamailio.init index b14f83a7..09ca0800 100644 --- a/pkg/kamailio/deb/jessie/kamailio.init +++ b/pkg/kamailio/deb/jessie/kamailio.init @@ -137,7 +137,7 @@ case "$1" in stop) log_daemon_msg "Stopping $DESC: $NAME" start-stop-daemon --oknodo --stop --quiet --pidfile $PIDFILE \ - --exec $DAEMON + --exec $DAEMON --retry 5 log_end_msg 0 ;; restart|force-reload) @@ -145,7 +145,6 @@ case "$1" in create_radius_seqfile $0 stop - sleep 1 $0 start ;; status) diff --git a/pkg/kamailio/deb/precise/kamailio.init b/pkg/kamailio/deb/precise/kamailio.init index b14f83a7..09ca0800 100644 --- a/pkg/kamailio/deb/precise/kamailio.init +++ b/pkg/kamailio/deb/precise/kamailio.init @@ -137,7 +137,7 @@ case "$1" in stop) log_daemon_msg "Stopping $DESC: $NAME" start-stop-daemon --oknodo --stop --quiet --pidfile $PIDFILE \ - --exec $DAEMON + --exec $DAEMON --retry 5 log_end_msg 0 ;; restart|force-reload) @@ -145,7 +145,6 @@ case "$1" in create_radius_seqfile $0 stop - sleep 1 $0 start ;; status) diff --git a/pkg/kamailio/deb/sid/kamailio.init b/pkg/kamailio/deb/sid/kamailio.init index b14f83a7..09ca0800 100644 --- a/pkg/kamailio/deb/sid/kamailio.init +++ b/pkg/kamailio/deb/sid/kamailio.init @@ -137,7 +137,7 @@ case "$1" in stop) log_daemon_msg "Stopping $DESC: $NAME" start-stop-daemon --oknodo --stop --quiet --pidfile $PIDFILE \ - --exec $DAEMON + --exec $DAEMON --retry 5 log_end_msg 0 ;; restart|force-reload) @@ -145,7 +145,6 @@ case "$1" in create_radius_seqfile $0 stop - sleep 1 $0 start ;; status) diff --git a/pkg/kamailio/deb/stretch/kamailio.init b/pkg/kamailio/deb/stretch/kamailio.init index b14f83a7..09ca0800 100644 --- a/pkg/kamailio/deb/stretch/kamailio.init +++ b/pkg/kamailio/deb/stretch/kamailio.init @@ -137,7 +137,7 @@ case "$1" in stop) log_daemon_msg "Stopping $DESC: $NAME" start-stop-daemon --oknodo --stop --quiet --pidfile $PIDFILE \ - --exec $DAEMON + --exec $DAEMON --retry 5 log_end_msg 0 ;; restart|force-reload) @@ -145,7 +145,6 @@ case "$1" in create_radius_seqfile $0 stop - sleep 1 $0 start ;; status) diff --git a/pkg/kamailio/deb/trusty/kamailio.init b/pkg/kamailio/deb/trusty/kamailio.init index b14f83a7..09ca0800 100644 --- a/pkg/kamailio/deb/trusty/kamailio.init +++ b/pkg/kamailio/deb/trusty/kamailio.init @@ -137,7 +137,7 @@ case "$1" in stop) log_daemon_msg "Stopping $DESC: $NAME" start-stop-daemon --oknodo --stop --quiet --pidfile $PIDFILE \ - --exec $DAEMON + --exec $DAEMON --retry 5 log_end_msg 0 ;; restart|force-reload) @@ -145,7 +145,6 @@ case "$1" in create_radius_seqfile $0 stop - sleep 1 $0 start ;; status) diff --git a/pkg/kamailio/deb/wheezy/kamailio.init b/pkg/kamailio/deb/wheezy/kamailio.init index b14f83a7..09ca0800 100644 --- a/pkg/kamailio/deb/wheezy/kamailio.init +++ b/pkg/kamailio/deb/wheezy/kamailio.init @@ -137,7 +137,7 @@ case "$1" in stop) log_daemon_msg "Stopping $DESC: $NAME" start-stop-daemon --oknodo --stop --quiet --pidfile $PIDFILE \ - --exec $DAEMON + --exec $DAEMON --retry 5 log_end_msg 0 ;; restart|force-reload) @@ -145,7 +145,6 @@ case "$1" in create_radius_seqfile $0 stop - sleep 1 $0 start ;; status) diff --git a/pkg/kamailio/deb/xenial/kamailio.init b/pkg/kamailio/deb/xenial/kamailio.init index b14f83a7..09ca0800 100644 --- a/pkg/kamailio/deb/xenial/kamailio.init +++ b/pkg/kamailio/deb/xenial/kamailio.init @@ -137,7 +137,7 @@ case "$1" in stop) log_daemon_msg "Stopping $DESC: $NAME" start-stop-daemon --oknodo --stop --quiet --pidfile $PIDFILE \ - --exec $DAEMON + --exec $DAEMON --retry 5 log_end_msg 0 ;; restart|force-reload) @@ -145,7 +145,6 @@ case "$1" in create_radius_seqfile $0 stop - sleep 1 $0 start ;; status) -- 2.16.1.315.g94e5d3ead4