about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlexander Barton <alex@barton.de>2011-08-23 12:32:05 +0200
committerAlexander Barton <alex@barton.de>2011-08-23 12:32:05 +0200
commit69803d6ff1ac8deb95e023bda6ad2aef435dc69a (patch)
tree64fdbae1db16bfe75a1ae2c0018ef7da6278c16a
parentbe6994aece929425a7ac6bbdc770477cc527f2e8 (diff)
downloadngircd-69803d6ff1ac8deb95e023bda6ad2aef435dc69a.tar.gz
ngircd-69803d6ff1ac8deb95e023bda6ad2aef435dc69a.zip
Use Proc_Close() to remove no longer unused pipes to child processes
This removes spurious (but harmless) debug messages.
-rw-r--r--src/ngircd/conn.c2
-rw-r--r--src/ngircd/irc-login.c1
-rw-r--r--src/ngircd/proc.c11
3 files changed, 9 insertions, 5 deletions
diff --git a/src/ngircd/conn.c b/src/ngircd/conn.c
index 1a9ac47a..407da1a3 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 edaefd61..0577cd9c 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 2a5eda83..fd2df1d9 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;
 }