From: Christian Brauner Date: Fri, 15 Dec 2017 13:23:25 +0000 (+0100) Subject: start: stable-2.1 fixes X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fdfff9a9aedb592082823b8351c5d4ac425b89b6;p=thirdparty%2Flxc.git start: stable-2.1 fixes - the reboot2() API extension doesn't exist so the command socket fd needs to be closed unconditionally - fix bad cherry-pick that tried to take the lock on the state client list twice Signed-off-by: Christian Brauner --- diff --git a/src/lxc/start.c b/src/lxc/start.c index 9f8f2185d..2742447ae 100644 --- a/src/lxc/start.c +++ b/src/lxc/start.c @@ -365,7 +365,6 @@ static int lxc_serve_state_clients(const char *name, handler->state = state; TRACE("Set container state to %s", lxc_state2str(state)); - process_lock(); if (lxc_list_empty(&handler->state_clients)) { TRACE("No state clients registered"); process_unlock(); @@ -763,18 +762,14 @@ void lxc_fini(const char *name, struct lxc_handler *handler) */ lxc_monitor_send_state(name, STOPPED, handler->lxcpath); - if (handler->conf->reboot == 0) { - /* For all new state clients simply close the command socket. - * This will inform all state clients that the container is - * STOPPED and also prevents a race between a open()/close() on - * the command socket causing a new process to get ECONNREFUSED - * because we haven't yet closed the command socket. - */ - close(handler->conf->maincmd_fd); - handler->conf->maincmd_fd = -1; - } else { - lxc_set_state(name, handler, STOPPED); - } + /* For all new state clients simply close the command socket. This will + * inform all state clients that the container is STOPPED and also + * prevents a race between a open()/close() on the command socket + * causing a new process to get ECONNREFUSED because we haven't yet + * closed the command socket. + */ + close(handler->conf->maincmd_fd); + handler->conf->maincmd_fd = -1; if (run_lxc_hooks(name, "post-stop", handler->conf, handler->lxcpath, NULL)) { ERROR("Failed to run lxc.hook.post-stop for container \"%s\".", name);