commit - be6994aece929425a7ac6bbdc770477cc527f2e8
commit + 69803d6ff1ac8deb95e023bda6ad2aef435dc69a
blob - 1a9ac47abcd55bc8d64f2b143ef550b2ae9dc6af
blob + 407da1a3b0837ac2bd99c16054175a4b4070e006
--- src/ngircd/conn.c
+++ src/ngircd/conn.c
/* Read result from pipe */
len = Proc_Read(&Conf_Server[i].res_stat, dest_addrs, sizeof(dest_addrs));
+ Proc_Close(&Conf_Server[i].res_stat);
if (len == 0) {
/* Error resolving hostname: reset server structure */
Conf_Server[i].conn_id = NONE;
/* Read result from pipe */
len = Proc_Read(&My_Connections[i].proc_stat, readbuf, sizeof readbuf -1);
+ Proc_Close(&My_Connections[i].proc_stat);
if (len == 0)
return;
blob - edaefd61cfc119fbd26de3a26d55eb65bc0146d0
blob + 0577cd9c0a94877532d7d594a2bb780e62c96598
--- src/ngircd/irc-login.c
+++ src/ngircd/irc-login.c
/* Read result from pipe */
len = Proc_Read(proc, &result, sizeof(result));
+ Proc_Close(proc);
if (len == 0)
return;
blob - 2a5eda8304ea1c462612329118dbd698b00148c6
blob + fd2df1d947c51a773a9447a04e159e4a15afd8a4
--- src/ngircd/proc.c
+++ src/ngircd/proc.c
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;
}