Commit Diff


commit - 5b2364b236ce3027ff5fcf93cad8cb75034d3838
commit + e9f3e69f36ca64f8945677bc72ccb7bbb57842e1
blob - 57bfb16854d39b26aba0b00e9c8dda9567eaeafe
blob + 7be5d0a18e8026dd44375fe23644643df16f047f
--- src/ngircd/conn.c
+++ src/ngircd/conn.c
@@ -17,7 +17,7 @@
 #include "portab.h"
 #include "io.h"
 
-static char UNUSED id[] = "$Id: conn.c,v 1.181 2005/09/12 19:10:20 fw Exp $";
+static char UNUSED id[] = "$Id: conn.c,v 1.182 2005/09/24 02:20:00 fw Exp $";
 
 #include "imp.h"
 #include <assert.h>
@@ -320,23 +320,22 @@ Conn_ExitListeners( void )
 {
 	/* Close down all listening sockets */
 	int *fd;
-	unsigned int arraylen;
+	size_t arraylen;
 #ifdef ZEROCONF
 	Rendezvous_UnregisterListeners( );
 #endif
 
 	arraylen = array_length(&My_Listeners, sizeof (int));
-	Log( LOG_INFO, "Shutting down all listening sockets (%d)...", arraylen );
+	Log( LOG_INFO, "Shutting down all listening sockets (%d total)...", arraylen );
+	fd = array_start(&My_Listeners);
 	while(arraylen--) {
-		fd = (int*) array_get(&My_Listeners, sizeof (int), arraylen);
-		if (fd) {
-			close(*fd);
-#ifdef DEBUG
-			Log( LOG_DEBUG, "Listening socket %d closed.", *fd );
-		} else {
-			Log( LOG_DEBUG, "array_get pos %d returned NULL", arraylen );
+		assert(fd);
+		assert(*fd >= 0);
+		io_close(*fd);
+#ifdef DEBUG
+		Log( LOG_DEBUG, "Listening socket %d closed.", *fd );
 #endif
-		}
+		fd++;
 	}
 	array_free(&My_Listeners);
 } /* Conn_ExitListeners */