]> arthur.barton.de Git - ngircd-alex.git/blobdiff - src/ngircd/conn.c
Fixed typo in two error messages
[ngircd-alex.git] / src / ngircd / conn.c
index 3350e208760fcd0480a2462c9909e894a7982bd2..4a2f49c1aae46d75644daab94c0d61ff0b2b34f2 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
@@ -9,6 +9,8 @@
  * Please read the file COPYING, README and AUTHORS for more information.
  */
 
+#undef DEBUG_BUFFER
+
 #define CONN_MODULE
 
 #include "portab.h"
@@ -63,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"
@@ -433,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);
        }
 }
@@ -739,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)
@@ -1255,9 +1262,11 @@ Handle_Write( CONN_ID Idx )
                return true;
        }
 
+#ifdef DEBUG_BUFFER
        LogDebug
            ("Handle_Write() called for connection %d, %ld bytes pending ...",
             Idx, wdatalen);
+#endif
 
 #ifdef SSL_SUPPORT
        if ( Conn_OPTION_ISSET( &My_Connections[Idx], CONN_SSL )) {
@@ -1326,6 +1335,8 @@ New_Connection(int Sock)
 
        assert(Sock > NONE);
 
+       LogDebug("Accepting new connection on socket %d ...", Sock);
+
        new_sock_len = (int)sizeof(new_addr);
        new_sock = accept(Sock, (struct sockaddr *)&new_addr,
                          (socklen_t *)&new_sock_len);
@@ -1561,7 +1572,7 @@ Read_Request( CONN_ID Idx )
                if (!array_catb(&My_Connections[Idx].zip.rbuf, readbuf,
                                (size_t) len)) {
                        Log(LOG_ERR,
-                           "Could not append recieved data to zip input buffer (connn %d): %d bytes!",
+                           "Could not append recieved data to zip input buffer (connection %d): %d bytes!",
                            Idx, len);
                        Conn_Close(Idx, "Receive buffer space exhausted", NULL,
                                   false);
@@ -1571,7 +1582,9 @@ Read_Request( CONN_ID Idx )
 #endif
        {
                if (!array_catb( &My_Connections[Idx].rbuf, readbuf, len)) {
-                       Log( LOG_ERR, "Could not append recieved data to input buffer (connn %d): %d bytes!", Idx, len );
+                       Log(LOG_ERR,
+                           "Could not append recieved data to input buffer (connection %d): %d bytes!",
+                           Idx, len);
                        Conn_Close(Idx, "Receive buffer space exhausted", NULL, false );
                }
        }
@@ -1753,8 +1766,10 @@ Handle_Buffer(CONN_ID Idx)
                        return 0; /* error -> connection has been closed */
 
                array_moveleft(&My_Connections[Idx].rbuf, 1, len);
+#ifdef DEBUG_BUFFER
                LogDebug("Connection %d: %d bytes left in read buffer.",
                         Idx, array_bytes(&My_Connections[Idx].rbuf));
+#endif
 #ifdef ZLIB
                if ((!old_z) && (My_Connections[Idx].options & CONN_ZIP) &&
                    (array_bytes(&My_Connections[Idx].rbuf) > 0)) {
@@ -2051,13 +2066,14 @@ Init_Socket( int Sock )
        /* Set type of service (TOS) */
 #if defined(IPPROTO_IP) && defined(IPTOS_LOWDELAY)
        value = IPTOS_LOWDELAY;
-       LogDebug("Setting IP_TOS on socket %d to IPTOS_LOWDELAY.", Sock);
        if (setsockopt(Sock, IPPROTO_IP, IP_TOS, &value,
                       (socklen_t) sizeof(value))) {
                LogDebug("Can't set socket option IP_TOS: %s!",
                         strerror(errno));
                /* ignore this error */
-       }
+       } else
+               LogDebug("IP_TOS on socket %d has been set to IPTOS_LOWDELAY.",
+                        Sock);
 #endif
 
        return true;
@@ -2098,6 +2114,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;
@@ -2157,6 +2174,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;