]> arthur.barton.de Git - ngircd-alex.git/commitdiff
Refactor Resolve_Read() into generic Proc_Read() function
authorAlexander Barton <alex@barton.de>
Sun, 11 Jul 2010 14:58:30 +0000 (16:58 +0200)
committerAlexander Barton <alex@barton.de>
Sun, 11 Jul 2010 14:58:30 +0000 (16:58 +0200)
src/ngircd/conn.c
src/ngircd/proc.c
src/ngircd/proc.h
src/ngircd/resolve.c
src/ngircd/resolve.h

index f4efff1655002f5687b44b8beb9f9cb38c90fbf2..f059d917b25f4443f900b6d531a0d7643e2c45de 100644 (file)
@@ -1952,7 +1952,7 @@ cb_Connect_to_Server(int fd, UNUSED short events)
        }
 
        /* 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;
 
@@ -2005,7 +2005,7 @@ cb_Read_Resolver_Result( int r_fd, UNUSED short events )
        }
 
        /* 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;
 
index 3eb3d8042edc0967bd19f1a7251a710850e4139d..f5438834c1842fa3453b6cc6da62a817e3fd9042 100644 (file)
@@ -116,4 +116,31 @@ Proc_GenericSignalHandler(int Signal)
        }
 }
 
+/**
+ * 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- */
index a7bff4f39b79cd5b31e270d524d1f27a89190c5a..40a2c292cf178130921e5542e3218a9a6b925a8b 100644 (file)
@@ -32,6 +32,8 @@ GLOBAL void Proc_Kill PARAMS((PROC_STAT *proc));
 
 GLOBAL void Proc_GenericSignalHandler PARAMS((int Signal));
 
+GLOBAL size_t Proc_Read PARAMS((PROC_STAT *proc, void *buffer, size_t buflen));
+
 #endif
 
 /* -eof- */
index 26ad103cf58deb6eaf2fbb064563408917f2d969..d121b0a938dfb6c07dedbd7836a42e9abeecff28 100644 (file)
@@ -462,32 +462,4 @@ Do_ResolveName( const char *Host, int w_fd )
 } /* 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- */
index 9759a2c4e43150ab8d196d984a0b0a9d08d38c77..044ceec1e123ba096f66e6b8935fb28d0b52f535 100644 (file)
@@ -18,7 +18,6 @@ GLOBAL bool Resolve_Addr PARAMS((PROC_STAT * s, const ng_ipaddr_t * Addr,
                                 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