]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
start: stable-2.1 fixes
authorChristian Brauner <christian.brauner@ubuntu.com>
Fri, 15 Dec 2017 13:23:25 +0000 (14:23 +0100)
committerChristian Brauner <christian.brauner@ubuntu.com>
Fri, 15 Dec 2017 13:23:25 +0000 (14:23 +0100)
- 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 <christian.brauner@ubuntu.com>
src/lxc/start.c

index 9f8f2185de4a700b5355eca2e6d58c5306bc7658..2742447aef4c7daea42237e5d3d8f54bb6e494a3 100644 (file)
@@ -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);