Module: ngircd.git Branch: master Commit: cf93881dfbd7b6317d2a41f87e9751b74354203b URL: http://ngircd.barton.de/cgi-bin/gitweb.cgi?p=ngircd.git&a=commit;h=cf938...
Author: Alexander Barton alex@barton.de Date: Wed Jul 14 10:27:55 2010 +0200
New function Conn_CloseAllSockets() to close all open sockets
This is useful in forked child processes, for example, to make sure that they don't hold connections open that the main process wants to close.
---
src/ngircd/conn.c | 17 +++++++++++++++++ src/ngircd/conn.h | 2 ++ 2 files changed, 19 insertions(+), 0 deletions(-)
diff --git a/src/ngircd/conn.c b/src/ngircd/conn.c index f059d91..d8df627 100644 --- a/src/ngircd/conn.c +++ b/src/ngircd/conn.c @@ -419,6 +419,23 @@ Conn_Exit( void ) } /* Conn_Exit */
+/** + * Close all sockets (file descriptors) of open connections. + * This is useful in forked child processes, for example, to make sure that + * they don't hold connections open that the main process wants to close. + */ +GLOBAL void +Conn_CloseAllSockets(void) +{ + CONN_ID idx; + + for(idx = 0; idx < Pool_Size; idx++) { + if(My_Connections[idx].sock > NONE) + close(My_Connections[idx].sock); + } +} + + static unsigned int ports_initlisteners(array *a, const char *listen_addr, void (*func)(int,short)) { diff --git a/src/ngircd/conn.h b/src/ngircd/conn.h index a63fcbb..a0bddaa 100644 --- a/src/ngircd/conn.h +++ b/src/ngircd/conn.h @@ -102,6 +102,8 @@ GLOBAL long WCounter; GLOBAL void Conn_Init PARAMS((void )); GLOBAL void Conn_Exit PARAMS(( void ));
+GLOBAL void Conn_CloseAllSockets PARAMS((void)); + GLOBAL unsigned int Conn_InitListeners PARAMS(( void )); GLOBAL void Conn_ExitListeners PARAMS(( void ));
ngircd-commits@lists.barton.de