+
+ case DISASOCIATED_IPC_FD:
+ LOG(log_debug, logtype_afpd, "main: IPC reconnect request");
+ if ((recon_ipc_fd = accept(disasociated_ipc_fd, NULL, NULL)) == -1) {
+ LOG(log_error, logtype_afpd, "main: accept: %s", strerror(errno));
+ break;
+ }
+ if (readt(recon_ipc_fd, &pid, sizeof(pid_t), 0, 1) != sizeof(pid_t)) {
+ LOG(log_error, logtype_afpd, "main: readt: %s", strerror(errno));
+ close(recon_ipc_fd);
+ break;
+ }
+ LOG(log_note, logtype_afpd, "main: IPC reconnect from pid [%u]", pid);
+
+ if ((child = server_child_add(server_children, CHILD_DSIFORK, pid, recon_ipc_fd)) == NULL) {
+ LOG(log_error, logtype_afpd, "main: server_child_add");
+ close(recon_ipc_fd);
+ break;
+ }
+ child->disasociated = 1;
+ fdset_add_fd(obj.options.connections + AFP_LISTENERS + FDSET_SAFETY,
+ &fdset,
+ &polldata,
+ &fdset_used,
+ &fdset_size,
+ recon_ipc_fd,
+ IPC_FD,
+ child);
+ break;
+