chiark / gitweb /
sd-event: fix return code of sd_event_run()
[elogind.git] / src / libsystemd-bus / bus-container.c
index 02886c4ded1ab47a6bd9f1aa2d31e204aa3d0750..d330363b6f89dad199be3103ee36991e113dfcd2 100644 (file)
@@ -52,9 +52,7 @@ int bus_container_connect_socket(sd_bus *b) {
 
         b->output_fd = b->input_fd;
 
-        r = bus_socket_setup(b);
-        if (r < 0)
-                return r;
+        bus_socket_setup(b);
 
         child = fork();
         if (child < 0)
@@ -207,6 +205,16 @@ int bus_container_connect_kernel(sd_bus *b) {
         close_nointr_nofail(pair[1]);
         pair[1] = -1;
 
+        r = wait_for_terminate(child, &si);
+        if (r < 0)
+                return r;
+
+        if (si.si_code != CLD_EXITED)
+                return -EIO;
+
+        if (si.si_status != EXIT_SUCCESS)
+                return -EIO;
+
         if (recvmsg(pair[0], &mh, MSG_NOSIGNAL|MSG_CMSG_CLOEXEC) < 0)
                 return -errno;
 
@@ -226,16 +234,6 @@ int bus_container_connect_kernel(sd_bus *b) {
                         fd = fds[0];
                 }
 
-        r = wait_for_terminate(child, &si);
-        if (r < 0)
-                return r;
-
-        if (si.si_code != CLD_EXITED)
-                return -EIO;
-
-        if (si.si_status != EXIT_SUCCESS)
-                return -EIO;
-
         b->input_fd = b->output_fd = fd;
         fd = -1;