commit - 7b5e2fe38e7af696155e687924462c4b9fe951bc
commit + 79be1c477e167892b12b77dcef1d298d9d017d3c
blob - f4efff1655002f5687b44b8beb9f9cb38c90fbf2
blob + f059d917b25f4443f900b6d531a0d7643e2c45de
--- src/ngircd/conn.c
+++ src/ngircd/conn.c
}
/* Read result from pipe */
- len = Resolve_Read(&Conf_Server[i].res_stat, dest_addrs, sizeof(dest_addrs));
+ len = Proc_Read(&Conf_Server[i].res_stat, dest_addrs, sizeof(dest_addrs));
if (len == 0)
return;
}
/* Read result from pipe */
- len = Resolve_Read(&My_Connections[i].proc_stat, readbuf, sizeof readbuf -1);
+ len = Proc_Read(&My_Connections[i].proc_stat, readbuf, sizeof readbuf -1);
if (len == 0)
return;
blob - 3eb3d8042edc0967bd19f1a7251a710850e4139d
blob + f5438834c1842fa3453b6cc6da62a817e3fd9042
--- src/ngircd/proc.c
+++ src/ngircd/proc.c
}
}
+/**
+ * Read bytes from a pipe of a forked child process.
+ */
+GLOBAL size_t
+Proc_Read(PROC_STAT *proc, void *buffer, size_t buflen)
+{
+ ssize_t bytes_read = 0;
+
+ assert(buffer != NULL);
+ assert(buflen > 0);
+
+ bytes_read = read(proc->pipe_fd, buffer, buflen);
+ if (bytes_read < 0) {
+ if (errno == EAGAIN)
+ return 0;
+ Log(LOG_CRIT, "Can't read from child process %ld: %s",
+ proc->pid, strerror(errno));
+ bytes_read = 0;
+ }
+#if DEBUG
+ else if (bytes_read == 0)
+ LogDebug("Can't read from child process %ld: EOF", proc->pid);
+#endif
+ Proc_Kill(proc);
+ return (size_t)bytes_read;
+}
+
/* -eof- */
blob - a7bff4f39b79cd5b31e270d524d1f27a89190c5a
blob + 40a2c292cf178130921e5542e3218a9a6b925a8b
--- src/ngircd/proc.h
+++ src/ngircd/proc.h
GLOBAL void Proc_GenericSignalHandler PARAMS((int Signal));
+GLOBAL size_t Proc_Read PARAMS((PROC_STAT *proc, void *buffer, size_t buflen));
+
#endif
/* -eof- */
blob - 26ad103cf58deb6eaf2fbb064563408917f2d969
blob + d121b0a938dfb6c07dedbd7836a42e9abeecff28
--- src/ngircd/resolve.c
+++ src/ngircd/resolve.c
array_free(&IpAddrs);
} /* Do_ResolveName */
-
-
-/**
- * Read result of resolver sub-process from pipe
- */
-GLOBAL size_t
-Resolve_Read( PROC_STAT *s, void* readbuf, size_t buflen)
-{
- ssize_t bytes_read;
-
- assert(buflen > 0);
-
- /* Read result from pipe */
- bytes_read = read(Proc_GetPipeFd(s), readbuf, buflen);
- if (bytes_read < 0) {
- if (errno == EAGAIN)
- return 0;
- Log( LOG_CRIT, "Resolver: Can't read result: %s!", strerror(errno));
- bytes_read = 0;
- }
-#ifdef DEBUG
- else if (bytes_read == 0)
- Log( LOG_DEBUG, "Resolver: Can't read result: EOF");
-#endif
- Proc_Kill(s);
- return (size_t)bytes_read;
-}
-
/* -eof- */
blob - 9759a2c4e43150ab8d196d984a0b0a9d08d38c77
blob + 044ceec1e123ba096f66e6b8935fb28d0b52f535
--- src/ngircd/resolve.h
+++ src/ngircd/resolve.h
int identsock, void (*cbfunc) (int, short)));
GLOBAL bool Resolve_Name PARAMS((PROC_STAT * s, const char *Host,
void (*cbfunc) (int, short)));
-GLOBAL size_t Resolve_Read PARAMS((PROC_STAT * s, void *buf, size_t buflen));
#endif