]> arthur.barton.de Git - ngircd-alex.git/blobdiff - src/ngircd/proc.c
Use Proc_Close() to remove no longer unused pipes to child processes
[ngircd-alex.git] / src / ngircd / proc.c
index 2a5eda8304ea1c462612329118dbd698b00148c6..fd2df1d947c51a773a9447a04e159e4a15afd8a4 100644 (file)
@@ -138,13 +138,14 @@ Proc_Read(PROC_STAT *proc, void *buffer, size_t buflen)
                        return 0;
                Log(LOG_CRIT, "Can't read from child process %ld: %s",
                    proc->pid, strerror(errno));
+               Proc_Close(proc);
                bytes_read = 0;
+       } else if (bytes_read == 0) {
+               /* EOF: clean up */
+               LogDebug("Child process %ld: EOF reached, closing pipe.",
+                        proc->pid);
+               Proc_Close(proc);
        }
-#if DEBUG
-       else if (bytes_read == 0)
-               LogDebug("Can't read from child process %ld: EOF", proc->pid);
-#endif
-       Proc_InitStruct(proc);
        return (size_t)bytes_read;
 }