When containers request to be daemonized, close-all-fd is
set to true. But when we switched ot daemonize-by-default we didn't
set close-all-fd by default.
Fix that. In order to do that we have to always have a lxc_conf
object. As a consequence, after this patch we can drop a bunch
of checks for c->lxc_conf existing. We should consider removing
those. This patch does not do that.
This should close https://github.com/lxc/lxc/issues/354
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
return ret;
}
+static void do_set_daemonize(struct lxc_container *c, bool state)
+{
+ c->daemonize = state;
+ /* daemonize implies close_all_fds so set it */
+ if (state)
+ c->lxc_conf->close_all_fds = 1;
+}
+
static bool lxcapi_want_daemonize(struct lxc_container *c, bool state)
{
if (!c || !c->lxc_conf)
ERROR("Error getting mem lock");
return false;
}
- c->daemonize = state;
- /* daemonize implies close_all_fds so set it */
- if (state == 1)
- c->lxc_conf->close_all_fds = 1;
+ do_set_daemonize(c, state);
container_mem_unlock(c);
return true;
}
container_destroy(c);
lxcapi_clear_config(c);
}
- c->daemonize = true;
+ if (!c->lxc_conf)
+ c->lxc_conf = lxc_conf_init();
+ do_set_daemonize(c, true);
c->pidfile = NULL;
// assign the member functions