chiark / gitweb /
fsckd: the error code is actually returned in 'fd'
[elogind.git] / src / fsckd / fsckd.c
index 9522fd7b627de3a8c3f91f2da86e2893dcdb81ba..d4e9896e91cbc1bb1bf7fde7d9ffca4248ccf1a1 100644 (file)
@@ -338,25 +338,26 @@ static int new_connection_handler(sd_event_source *s, int fd, uint32_t revents,
 
         /* Initialize and list new clients */
         new_client_fd = accept4(m->connection_fd, NULL, NULL, SOCK_CLOEXEC);
-        if (new_client_fd > 0) {
-                log_debug("New fsck client connected to fd: %d", new_client_fd);
-                client = new0(Client, 1);
-                if (!client)
-                        return log_oom();
-                client->fd = new_client_fd;
-                client->manager = m;
-                LIST_PREPEND(clients, m->clients, client);
-                r = sd_event_add_io(m->event, NULL, client->fd, EPOLLIN, progress_handler, client);
-                if (r < 0) {
-                        remove_client(&(m->clients), client);
-                        return r;
-                }
-                /* only request the client to cancel now in case the request is dropped by the client (chance to recancel) */
-                if (m->cancel_requested)
-                        request_cancel_client(client);
-        } else
+        if (new_client_fd < 0)
                 return log_error_errno(errno, "Couldn't accept a new connection: %m");
 
+        log_debug("New fsck client connected to fd: %d", new_client_fd);
+
+        client = new0(Client, 1);
+        if (!client)
+                return log_oom();
+        client->fd = new_client_fd;
+        client->manager = m;
+        LIST_PREPEND(clients, m->clients, client);
+        r = sd_event_add_io(m->event, NULL, client->fd, EPOLLIN, progress_handler, client);
+        if (r < 0) {
+                remove_client(&(m->clients), client);
+                return r;
+        }
+        /* only request the client to cancel now in case the request is dropped by the client (chance to recancel) */
+        if (m->cancel_requested)
+                request_cancel_client(client);
+
         return 0;
 }
 
@@ -519,12 +520,12 @@ int main(int argc, char *argv[]) {
         if (n > 1) {
                 log_error("Too many file descriptors received.");
                 return EXIT_FAILURE;
-        } else if (n == 1) {
+        } else if (n == 1)
                 fd = SD_LISTEN_FDS_START + 0;
-        else {
+        else {
                 fd = make_socket_fd(LOG_DEBUG, FSCKD_SOCKET_PATH, SOCK_STREAM | SOCK_CLOEXEC);
                 if (fd < 0) {
-                        log_error_errno(r, "Couldn't create listening socket fd on %s: %m", FSCKD_SOCKET_PATH);
+                        log_error_errno(fd, "Couldn't create listening socket fd on %s: %m", FSCKD_SOCKET_PATH);
                         return EXIT_FAILURE;
                 }
         }