]> jfr.im git - irc/rqf/shadowircd.git/blobdiff - src/client.c
Branch merge.
[irc/rqf/shadowircd.git] / src / client.c
index 7b2b5a02dd0130dd81ee13fa40272d8331c77614..b45acb2f0551e3b6c97b6ccddb2ea17c700db211 100644 (file)
@@ -40,7 +40,7 @@
 #include "s_auth.h"
 #include "s_conf.h"
 #include "s_newconf.h"
-#include "s_log.h"
+#include "logger.h"
 #include "s_serv.h"
 #include "s_stats.h"
 #include "send.h"
@@ -161,6 +161,7 @@ make_client(struct Client *from)
                client_p->localClient->lasttime = client_p->localClient->firsttime = rb_current_time();
 
                client_p->localClient->F = NULL;
+               client_p->localClient->ctrlF = NULL;
 
                client_p->preClient = (struct PreClient *) rb_bh_alloc(pclient_heap);
 
@@ -1401,6 +1402,11 @@ exit_unknown_client(struct Client *client_p, struct Client *source_p, struct Cli
                  const char *comment)
 {
        delete_auth_queries(source_p);
+       if (source_p->localClient->dnsquery)
+       {
+               delete_resolver_queries(source_p->localClient->dnsquery);
+               rb_free(source_p->localClient->dnsquery);
+       }
        del_unknown_ip(source_p);
        rb_dlinkDelete(&source_p->localClient->tnode, &unknown_list);
 
@@ -1952,7 +1958,7 @@ allocate_away(struct Client *client_p)
 void
 free_away(struct Client *client_p)
 {
-       if(client_p->user->away != NULL) {
+       if(client_p->user != NULL && client_p->user->away != NULL) {
                rb_bh_free(away_heap, client_p->user->away);
                client_p->user->away = NULL;
        }
@@ -2026,21 +2032,21 @@ close_connection(struct Client *client_p)
        {
                struct server_conf *server_p;
 
-               ServerStats->is_sv++;
-               ServerStats->is_sbs += client_p->localClient->sendB;
-               ServerStats->is_sbr += client_p->localClient->receiveB;
-               ServerStats->is_sks += client_p->localClient->sendK;
-               ServerStats->is_skr += client_p->localClient->receiveK;
-               ServerStats->is_sti += rb_current_time() - client_p->localClient->firsttime;
-               if(ServerStats->is_sbs > 2047)
+               ServerStats.is_sv++;
+               ServerStats.is_sbs += client_p->localClient->sendB;
+               ServerStats.is_sbr += client_p->localClient->receiveB;
+               ServerStats.is_sks += client_p->localClient->sendK;
+               ServerStats.is_skr += client_p->localClient->receiveK;
+               ServerStats.is_sti += rb_current_time() - client_p->localClient->firsttime;
+               if(ServerStats.is_sbs > 2047)
                {
-                       ServerStats->is_sks += (ServerStats->is_sbs >> 10);
-                       ServerStats->is_sbs &= 0x3ff;
+                       ServerStats.is_sks += (ServerStats.is_sbs >> 10);
+                       ServerStats.is_sbs &= 0x3ff;
                }
-               if(ServerStats->is_sbr > 2047)
+               if(ServerStats.is_sbr > 2047)
                {
-                       ServerStats->is_skr += (ServerStats->is_sbr >> 10);
-                       ServerStats->is_sbr &= 0x3ff;
+                       ServerStats.is_skr += (ServerStats.is_sbr >> 10);
+                       ServerStats.is_sbr &= 0x3ff;
                }
 
                /*
@@ -2064,25 +2070,25 @@ close_connection(struct Client *client_p)
        }
        else if(IsClient(client_p))
        {
-               ServerStats->is_cl++;
-               ServerStats->is_cbs += client_p->localClient->sendB;
-               ServerStats->is_cbr += client_p->localClient->receiveB;
-               ServerStats->is_cks += client_p->localClient->sendK;
-               ServerStats->is_ckr += client_p->localClient->receiveK;
-               ServerStats->is_cti += rb_current_time() - client_p->localClient->firsttime;
-               if(ServerStats->is_cbs > 2047)
+               ServerStats.is_cl++;
+               ServerStats.is_cbs += client_p->localClient->sendB;
+               ServerStats.is_cbr += client_p->localClient->receiveB;
+               ServerStats.is_cks += client_p->localClient->sendK;
+               ServerStats.is_ckr += client_p->localClient->receiveK;
+               ServerStats.is_cti += rb_current_time() - client_p->localClient->firsttime;
+               if(ServerStats.is_cbs > 2047)
                {
-                       ServerStats->is_cks += (ServerStats->is_cbs >> 10);
-                       ServerStats->is_cbs &= 0x3ff;
+                       ServerStats.is_cks += (ServerStats.is_cbs >> 10);
+                       ServerStats.is_cbs &= 0x3ff;
                }
-               if(ServerStats->is_cbr > 2047)
+               if(ServerStats.is_cbr > 2047)
                {
-                       ServerStats->is_ckr += (ServerStats->is_cbr >> 10);
-                       ServerStats->is_cbr &= 0x3ff;
+                       ServerStats.is_ckr += (ServerStats.is_cbr >> 10);
+                       ServerStats.is_cbr &= 0x3ff;
                }
        }
        else
-               ServerStats->is_ni++;
+               ServerStats.is_ni++;
 
        if(client_p->localClient->F)
        {
@@ -2094,6 +2100,12 @@ close_connection(struct Client *client_p)
                client_p->localClient->F = NULL;
        }
 
+       if(client_p->localClient->ctrlF)
+       {
+               rb_close(client_p->localClient->ctrlF);
+               client_p->localClient->ctrlF = NULL;
+       }
+
        rb_linebuf_donebuf(&client_p->localClient->buf_sendq);
        rb_linebuf_donebuf(&client_p->localClient->buf_recvq);
        detach_conf(client_p);