summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLionel Van Bemten <lionel.van_bemten@nokia.com>2019-08-20 17:57:39 +0200
committerLaurent Bercot <ska-skaware@skarnet.org>2019-08-20 19:16:43 +0000
commit3c76777ef10922f103616118089ed65112451879 (patch)
tree767ea2b9cb2129260ea253dc20a67e2a3fe14701
parente6a5b715181e1d5e9a25a63275d8d13cf4bdd395 (diff)
downloads6-rc-3c76777ef10922f103616118089ed65112451879.tar.xz
Do not start new transitions after sigterm was received
-rw-r--r--src/s6-rc/s6-rc.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/s6-rc/s6-rc.c b/src/s6-rc/s6-rc.c
index 8f1f658..45ec880 100644
--- a/src/s6-rc/s6-rc.c
+++ b/src/s6-rc/s6-rc.c
@@ -44,6 +44,7 @@ static unsigned char *state ;
static unsigned int *pendingdeps ;
static tain_t deadline ;
static char dryrun[UINT_FMT] = "" ;
+static unsigned int lameduck = 0 ;
static inline void announce (void)
{
@@ -297,7 +298,8 @@ static void on_success (unsigned int i, int h)
announce() ;
if (verbosity >= 2)
strerr_warni5x(dryrun[0] ? "simulation: " : "", "service ", db->string + db->services[i].name, h ? " started" : " stopped", " successfully") ;
- broadcast_success(i, h) ;
+ if (!lameduck)
+ broadcast_success(i, h) ;
}
static void on_failure (unsigned int i, int h, int crashed, unsigned int code)
@@ -372,6 +374,7 @@ static int handle_signals (int h)
strerr_warnw3x("received ", sig_name(sig), ", aborting longrun transitions") ;
/* kill_oneshots() ; */
kill_longruns() ;
+ lameduck = 1 ;
break ;
default : strerr_dief1x(101, "inconsistent signal state") ;
}