Unverified Commit 389c4675 by Serge Hallyn Committed by GitHub

Merge pull request #2039 from brauner/2017-12-14/fix_command_socket_race

commands: fix race when open()/close() cmd socket
parents ec09a5a2 f893d898
......@@ -784,12 +784,22 @@ void lxc_fini(const char *name, struct lxc_handler *handler)
cgroup_destroy(handler);
lxc_set_state(name, handler, STOPPED);
/* This function will try to connect to the legacy lxc-monitord state
* server and only exists for backwards compatibility.
*/
lxc_monitor_send_state(name, STOPPED, handler->lxcpath);
if (handler->conf->reboot == 0) {
/* close command socket */
/* 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);
}
if (run_lxc_hooks(name, "post-stop", handler->conf, NULL)) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment