]> jfr.im git - irc/rqf/shadowircd.git/blobdiff - src/s_serv.c
[svn] Make highest connection counts a bit more consistent.
[irc/rqf/shadowircd.git] / src / s_serv.c
index 8cadc515bdfe7571d8989a16cf3891dbbb94a30c..43276b7499d090af07eebdbc08d2e2a4a09c5b5a 100644 (file)
@@ -21,7 +21,7 @@
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
  *  USA
  *
- *  $Id: s_serv.c 3233 2007-03-05 17:28:27Z nenolod $
+ *  $Id: s_serv.c 3542 2007-08-01 20:18:12Z jilles $
  */
 
 #include "stdinc.h"
@@ -57,6 +57,7 @@
 #include "channel.h"           /* chcap_usage_counts stuff... */
 #include "hook.h"
 #include "msg.h"
+#include "reject.h"
 
 extern char *crypt();
 
@@ -1103,6 +1104,7 @@ server_estab(struct Client *client_p)
        set_chcap_usage_counts(client_p);
 
        dlinkAdd(client_p, &client_p->lnode, &me.serv->servers);
+       del_unknown_ip(client_p);
        dlinkMoveNode(&client_p->localClient->tnode, &unknown_list, &serv_list);
        dlinkAddTailAlloc(client_p, &global_serv_list);
 
@@ -1129,6 +1131,11 @@ server_estab(struct Client *client_p)
        client_p->localClient->firsttime = CurrentTime;
        /* fixing eob timings.. -gnp */
 
+       if((dlink_list_length(&lclient_list) + dlink_list_length(&serv_list)) >
+          (unsigned long)MaxConnectionCount)
+               MaxConnectionCount = dlink_list_length(&lclient_list) + 
+                                       dlink_list_length(&serv_list);
+
        /* Show the real host/IP to admins */
        sendto_realops_snomask(SNO_GENERAL, L_ALL,
                        "Link with %s established: (%s) link",
@@ -1368,8 +1375,10 @@ fork_server(struct Client *server)
                goto fork_error;
        else if(ret == 0)
        {
+               int maxconn = comm_get_maxconnections();
+
                /* set our fds as non blocking and close everything else */
-               for (i = 0; i < HARD_FDLIMIT; i++)
+               for (i = 0; i < maxconn; i++)
                {