- case DISASOCIATED_IPC_FD:
- LOG(log_debug, logtype_afpd, "main: IPC reconnect request");
- if ((fd[0] = accept(disasociated_ipc_fd, NULL, NULL)) == -1) {
- LOG(log_error, logtype_afpd, "main: accept: %s", strerror(errno));
- break;
- }
- 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 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]);
- break;
+ if (ipc_server_read(server_children, child->afpch_ipc_fd) != 0) {
+ if (!(asev_del_fd(asev, child->afpch_ipc_fd))) {
+ LOG(log_error, logtype_afpd, "child[%u]: no IPC fd");
+ }
+ close(child->afpch_ipc_fd);
+ child->afpch_ipc_fd = -1;