chiark / gitweb /
nspawn: simplify exit condition check
authorLennart Poettering <lennart@poettering.net>
Mon, 30 Jun 2014 13:19:00 +0000 (15:19 +0200)
committerLennart Poettering <lennart@poettering.net>
Mon, 30 Jun 2014 13:19:00 +0000 (15:19 +0200)
src/nspawn/nspawn.c

index 8fb72d6..a00a220 100644 (file)
@@ -3309,14 +3309,15 @@ check_container_status:
                 r = wait_for_container(pid, &container_status);
                 pid = 0;
 
-                if (r != 0) {
-                        /* If r < 0, explicitly set to EXIT_FAILURE,
-                         * otherwise return the exit code of the
-                         * containered process. */
-                        if (r < 0)
-                                r = EXIT_FAILURE;
+                if (r < 0) {
+                        /* We failed to wait for the container, or the
+                         * container exited abnormally */
+                        r = EXIT_FAILURE;
                         break;
-                } else if (container_status == CONTAINER_TERMINATED)
+                } else if (r > 0 || container_status == CONTAINER_TERMINATED)
+                        /* The container exited with a non-zero
+                         * status, or with zero status and no reboot
+                         * was requested. */
                         break;
 
                 /* CONTAINER_REBOOTED, loop again */