]> arthur.barton.de Git - netatalk.git/blobdiff - etc/afpd/main.c
More robust IPC reconnect error handling
[netatalk.git] / etc / afpd / main.c
index 63452d9e350fc8ceea033a82c889027c544c504e..06f3ee168967cff731e20debefb6f7f1cb72c561 100644 (file)
@@ -441,7 +441,7 @@ int main(int ac, char **av)
                     child = (afp_child_t *)polldata[i].data;
                     LOG(log_debug, logtype_afpd, "main: IPC request from child[%u]", child->pid);
 
-                    if ((ret = ipc_server_read(server_children, child->ipc_fds[0])) == 0) {
+                    if (ipc_server_read(server_children, child->ipc_fds[0]) != 0) {
                         fdset_del_fd(&fdset, &polldata, &fdset_used, &fdset_size, child->ipc_fds[0]);
                         close(child->ipc_fds[0]);
                         child->ipc_fds[0] = -1;
@@ -461,8 +461,9 @@ int main(int ac, char **av)
                     if (readt(fd[0], &pid, sizeof(pid_t), 0, 1) != sizeof(pid_t)) {
                         LOG(log_error, logtype_afpd, "main: readt: %s", strerror(errno));
                         close(fd[0]);
+                        break;
                     }
-                    LOG(log_note, logtype_afpd, "main: IPC reconnect from [%u]", pid);
+                    LOG(log_note, logtype_afpd, "main: IPC reconnect from pid [%u]", pid);
                     if ((child = server_child_add(server_children, CHILD_DSIFORK, pid, fd)) == NULL) {
                         LOG(log_error, logtype_afpd, "main: server_child_add");
                         close(fd[0]);