]> arthur.barton.de Git - ngircd-alex.git/blobdiff - src/ngircd/conn.c
Log better error messages when rejecting clients
[ngircd-alex.git] / src / ngircd / conn.c
index 1a9ac47abcd55bc8d64f2b143ef550b2ae9dc6af..4d5c223c0161f1713448b38a5a576024d84febd1 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * ngIRCd -- The Next Generation IRC Daemon
- * Copyright (c)2001-2010 Alexander Barton <alex@barton.de>
+ * Copyright (c)2001-2011 Alexander Barton (alex@barton.de) and Contributors.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -65,6 +65,7 @@
 #include "ngircd.h"
 #include "array.h"
 #include "client.h"
+#include "class.h"
 #include "conf.h"
 #include "conn-ssl.h"
 #include "conn-zip.h"
@@ -435,12 +436,13 @@ Conn_Exit( void )
  * they don't hold connections open that the main process wants to close.
  */
 GLOBAL void
-Conn_CloseAllSockets(void)
+Conn_CloseAllSockets(int ExceptOf)
 {
        CONN_ID idx;
 
        for(idx = 0; idx < Pool_Size; idx++) {
-               if(My_Connections[idx].sock > NONE)
+               if(My_Connections[idx].sock > NONE &&
+                  My_Connections[idx].sock != ExceptOf)
                        close(My_Connections[idx].sock);
        }
 }
@@ -741,6 +743,9 @@ Conn_Handler(void)
                Check_Servers();
                Check_Connections();
 
+               /* Expire outdated class/list items */
+               Class_Expire();
+
                /* Look for non-empty read buffers ... */
                for (i = 0; i < Pool_Size; i++) {
                        if ((My_Connections[i].sock > NONE)
@@ -2107,6 +2112,7 @@ cb_Connect_to_Server(int fd, UNUSED short events)
 
        /* Read result from pipe */
        len = Proc_Read(&Conf_Server[i].res_stat, dest_addrs, sizeof(dest_addrs));
+       Proc_Close(&Conf_Server[i].res_stat);
        if (len == 0) {
                /* Error resolving hostname: reset server structure */
                Conf_Server[i].conn_id = NONE;
@@ -2166,6 +2172,7 @@ cb_Read_Resolver_Result( int r_fd, UNUSED short events )
 
        /* Read result from pipe */
        len = Proc_Read(&My_Connections[i].proc_stat, readbuf, sizeof readbuf -1);
+       Proc_Close(&My_Connections[i].proc_stat);
        if (len == 0)
                return;