Module: ngircd.git Branch: master Commit: 69803d6ff1ac8deb95e023bda6ad2aef435dc69a URL: http://ngircd.barton.de/cgi-bin/gitweb.cgi?p=ngircd.git&a=commit;h=69803...
Author: Alexander Barton alex@barton.de 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.
---
src/ngircd/conn.c | 2 ++ src/ngircd/irc-login.c | 1 + src/ngircd/proc.c | 11 ++++++----- 3 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/src/ngircd/conn.c b/src/ngircd/conn.c index 1a9ac47..407da1a 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 edaefd6..0577cd9 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 2a5eda8..fd2df1d 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; }