]> arthur.barton.de Git - ngircd-alex.git/commitdiff
New function Conn_GetFromProc() to get CONN_ID of a subprocess
authorAlexander Barton <alex@barton.de>
Tue, 29 Jun 2010 21:38:39 +0000 (23:38 +0200)
committerAlexander Barton <alex@barton.de>
Tue, 29 Jun 2010 21:38:39 +0000 (23:38 +0200)
Get CONN_ID from file descriptor associated to a subprocess structure.

src/ngircd/conn.c
src/ngircd/conn.h

index 0d82d530b80733dc23fd18e827b5142bfd06ca54..4df1e9e4f88e644b3df309f5bb1007c2aee44be3 100644 (file)
@@ -1986,7 +1986,7 @@ cb_Read_Resolver_Result( int r_fd, UNUSED short events )
         * IDENT user name.*/
 
        CLIENT *c;
-       int i;
+       CONN_ID i;
        size_t len;
        char *identptr;
 #ifdef IDENTAUTH
@@ -1996,14 +1996,8 @@ cb_Read_Resolver_Result( int r_fd, UNUSED short events )
 #endif
 
        LogDebug("Resolver: Got callback on fd %d, events %d", r_fd, events );
-
-       /* Search associated connection ... */
-       for( i = 0; i < Pool_Size; i++ ) {
-               if(( My_Connections[i].sock != NONE )
-                 && (Proc_GetPipeFd(&My_Connections[i].proc_stat) == r_fd))
-                       break;
-       }
-       if( i >= Pool_Size ) {
+       i = Conn_GetFromProc(r_fd);
+       if (i == NONE) {
                /* Ops, none found? Probably the connection has already
                 * been closed!? We'll ignore that ... */
                io_close( r_fd );
@@ -2108,6 +2102,26 @@ Conn_GetClient( CONN_ID Idx )
 }
 
 
+/**
+ * Get CONN_ID from file descriptor associated to a subprocess structure.
+ * @param fd File descriptor
+ * @return CONN_ID or NONE (-1)
+ */
+GLOBAL CONN_ID
+Conn_GetFromProc(int fd)
+{
+       int i;
+
+       assert(fd > 0);
+       for (i = 0; i < Pool_Size; i++) {
+               if ((My_Connections[i].sock != NONE)
+                   && (Proc_GetPipeFd(&My_Connections[i].proc_stat) == fd))
+                       return i;
+       }
+       return NONE;
+} /* Conn_GetFromProc */
+
+
 #ifdef SSL_SUPPORT
 
 /**
index 7665bb374166bc501c19c6057cb7afd68e0dca63..e9b470bcf1327d08bdd3cf0598762ddc831a5326 100644 (file)
@@ -113,6 +113,7 @@ GLOBAL void Conn_Close PARAMS(( CONN_ID Idx, const char *LogMsg, const char *Fwd
 
 GLOBAL void Conn_SyncServerStruct PARAMS(( void ));
 
+GLOBAL CONN_ID Conn_GetFromProc PARAMS((int fd));
 GLOBAL CLIENT* Conn_GetClient PARAMS((CONN_ID i));
 #ifdef SSL_SUPPORT
 GLOBAL bool Conn_GetCipherInfo PARAMS((CONN_ID Idx, char *buf, size_t len));