]> git.proxmox.com Git - mirror_lxc.git/commitdiff
lxc: child failing before container rename
authorMichel Normand <normand@fr.ibm.com>
Thu, 29 Apr 2010 08:03:59 +0000 (10:03 +0200)
committerDaniel Lezcano <dlezcano@fr.ibm.com>
Thu, 29 Apr 2010 08:03:59 +0000 (10:03 +0200)
do the same checking as already done in lxc/restart.c

Signed-off-by: Michel Normand <normand@fr.ibm.com>
Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
src/lxc/start.c

index 7d5763a7593ef82eaaf799faeea7ea36f2cf3f04..6242296b973c1cf47c98013018b0dd790986f359 100644 (file)
@@ -436,6 +436,7 @@ int lxc_spawn(const char *name, struct lxc_handler *handler, char *const argv[])
        int sv[2];
        int clone_flags;
        int err = -1, sync;
+       int failed_before_rename = 0;
 
        struct start_arg start_arg = {
                .name = name,
@@ -474,14 +475,17 @@ int lxc_spawn(const char *name, struct lxc_handler *handler, char *const argv[])
        close(sv[0]);
        
        /* Wait for the child to be ready */
-       if (read(sv[1], &sync, sizeof(sync)) < 0) {
-               SYSERROR("failed to read the socket");
-               goto out_delete_net;
+       if (read(sv[1], &sync, sizeof(sync)) <= 0) {
+               ERROR("sync read failure : %m");
+               failed_before_rename = 1;
        }
 
        if (lxc_rename_nsgroup(name, handler))
                goto out_delete_net;
 
+       if (failed_before_rename)
+               goto out_delete_net;
+
        /* Create the network configuration */
        if (clone_flags & CLONE_NEWNET) {
                if (lxc_assign_network(&handler->conf->network, handler->pid)) {