nspawn: fix spurious reboot if container process returns 133
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Fri, 7 Oct 2016 14:31:47 +0000 (10:31 -0400)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Sat, 8 Oct 2016 18:48:41 +0000 (14:48 -0400)
src/nspawn/nspawn.c

index d688d2e..12d6eab 100644 (file)
@@ -3965,10 +3965,14 @@ static int run(int master,
                 /* We failed to wait for the container, or the container exited abnormally. */
                 return r;
         if (r > 0 || container_status == CONTAINER_TERMINATED) {
-                /* r > 0 → The container exited with a non-zero status,
-                 * otherwise → The container exited with zero status and reboot was not requested. */
+                /* r > 0 → The container exited with a non-zero status.
+                 *         As a special case, we need to replace 133 with a different value,
+                 *         because 133 is special-cased in the service file to reboot the container.
+                 * otherwise → The container exited with zero status and a reboot was not requested.
+                 */
+                if (r == 133)
+                        r = EXIT_FAILURE; /* replace 133 with the general failure code */
                 *ret = r;
-                // XXX: if the container returned 133, we will reboot!
                 return 0; /* finito */
         }