diff options
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | doc/index.html | 2 | ||||
-rw-r--r-- | doc/upgrade.html | 2 | ||||
-rw-r--r-- | package/info | 2 | ||||
-rw-r--r-- | src/supervision/s6-supervise.c | 11 |
5 files changed, 16 insertions, 5 deletions
@@ -1,10 +1,12 @@ Changelog for s6. -In 2.13.0.1 +In 2.13.1.0 ----------- - Bugfixes. - Install static libraries in /usr/lib by default. + - Support for starting the service in a new pid namespace, via the +flag-newpidns file in the service directory. (Linux only.) In 2.13.0.0 diff --git a/doc/index.html b/doc/index.html index 4dc2771..1d46de0 100644 --- a/doc/index.html +++ b/doc/index.html @@ -115,7 +115,7 @@ want nsswitch-like functionality: <h3> Download </h3> <ul> - <li> The current released version of s6 is <a href="s6-2.13.0.1.tar.gz">2.13.0.1</a>. </li> + <li> The current released version of s6 is <a href="s6-2.13.1.0.tar.gz">2.13.1.0</a>. </li> <li> Alternatively, you can checkout a copy of the <a href="//git.skarnet.org/cgi-bin/cgit.cgi/s6/">s6 git repository</a>: diff --git a/doc/upgrade.html b/doc/upgrade.html index d675f5d..4bbed78 100644 --- a/doc/upgrade.html +++ b/doc/upgrade.html @@ -18,7 +18,7 @@ <h1> What has changed in s6 </h1> -<h2> in 2.13.0.1 </h2> +<h2> in 2.13.1.0 </h2> <ul> <li> <a href="//skarnet.org/software/skalibs/">skalibs</a> diff --git a/package/info b/package/info index 19f60ab..e39a538 100644 --- a/package/info +++ b/package/info @@ -1,4 +1,4 @@ package=s6 -version=2.13.0.1 +version=2.13.1.0 category=admin package_macro_name=S6 diff --git a/src/supervision/s6-supervise.c b/src/supervision/s6-supervise.c index deed9e5..9f56c47 100644 --- a/src/supervision/s6-supervise.c +++ b/src/supervision/s6-supervise.c @@ -95,6 +95,13 @@ static inline void announce (void) strerr_warnwu1sys("write status file") ; } +static int check_file (char const *file) +{ + if (access(file, F_OK) == 0) return 1 ; + if (errno != ENOENT) strerr_warnwu2sys("access ", file) ; + return 0 ; +} + static int read_file (char const *file, char *buf, size_t n) { ssize_t r = openreadnclose_nb(file, buf, n) ; @@ -295,6 +302,7 @@ static void trystart (void) size_t orig = 5 ; int notifyp[2] = { -1, -1 } ; unsigned int lk = 0, notif = 0 ; + uint16_t cspawnflags = CSPAWN_FLAGS_SELFPIPE_FINISH | CSPAWN_FLAGS_SETSID ; if (read_uint("lock-fd", &lk)) { @@ -358,7 +366,8 @@ static void trystart (void) fa[1].x.fd2[1] = notifyp[1] ; } - status.pid = cspawn(cargv[orig], cargv + orig, (char const *const *)environ, CSPAWN_FLAGS_SELFPIPE_FINISH | CSPAWN_FLAGS_SETSID, fa, notifyp[1] >= 0 ? 2 : 0) ; + if (check_file("flag-newpidns")) cspawnflags |= CSPAWN_FLAGS_NEWPIDNS ; + status.pid = cspawn(cargv[orig], cargv + orig, (char const *const *)environ, cspawnflags, fa, notifyp[1] >= 0 ? 2 : 0) ; if (!status.pid) { settimeout(60) ; |