repo: ngircd
action: commit
revision: 
path_from: 
revision_from: 69803d6ff1ac8deb95e023bda6ad2aef435dc69a:
path_to: 
revision_to: 
git.thebackupbox.net
ngircd
git clone git://git.thebackupbox.net/ngircd
commit 69803d6ff1ac8deb95e023bda6ad2aef435dc69a
Author: Alexander Barton 
Date:   Tue Aug 23 12:32:05 2011 +0200

    Use Proc_Close() to remove no longer unused pipes to child processes

    This removes spurious (but harmless) debug messages.

diff --git a/src/ngircd/conn.c b/src/ngircd/conn.c
index 1a9ac47abcd55bc8d64f2b143ef550b2ae9dc6af..
index ..407da1a3b0837ac2bd99c16054175a4b4070e006 100644
--- a/src/ngircd/conn.c
+++ b/src/ngircd/conn.c
@@ -2107,6 +2107,7 @@ cb_Connect_to_Server(int fd, UNUSED short events)

 	/* 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;
@@ -2166,6 +2167,7 @@ cb_Read_Resolver_Result( int r_fd, UNUSED short events )

 	/* 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;

diff --git a/src/ngircd/irc-login.c b/src/ngircd/irc-login.c
index edaefd61cfc119fbd26de3a26d55eb65bc0146d0..
index ..0577cd9c0a94877532d7d594a2bb780e62c96598 100644
--- a/src/ngircd/irc-login.c
+++ b/src/ngircd/irc-login.c
@@ -1009,6 +1009,7 @@ cb_Read_Auth_Result(int r_fd, UNUSED short events)

 	/* Read result from pipe */
 	len = Proc_Read(proc, &result, sizeof(result));
+	Proc_Close(proc);
 	if (len == 0)
 		return;

diff --git a/src/ngircd/proc.c b/src/ngircd/proc.c
index 2a5eda8304ea1c462612329118dbd698b00148c6..
index ..fd2df1d947c51a773a9447a04e159e4a15afd8a4 100644
--- a/src/ngircd/proc.c
+++ b/src/ngircd/proc.c
@@ -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;
 }

-----END OF PAGE-----