]> jfr.im git - solanum.git/blobdiff - src/client.c
can_kick hook, based on the ircd-seven one.
[solanum.git] / src / client.c
index 458247b9e594cddc6af88ecd333e498efef16423..2aa84520c51417d6641758e5cf28a6768e0a991c 100644 (file)
@@ -235,8 +235,14 @@ free_local_client(struct Client *client_p)
        rb_free(client_p->localClient->fullcaps);
        rb_free(client_p->localClient->opername);
        rb_free(client_p->localClient->mangledhost);
+       if (client_p->localClient->privset)
+               privilegeset_unref(client_p->localClient->privset);
 
-       ssld_decrement_clicount(client_p->localClient->ssl_ctl);
+       if(IsSSL(client_p))
+           ssld_decrement_clicount(client_p->localClient->ssl_ctl);
+           
+       if(IsCapable(client_p, CAP_ZIP))
+           ssld_decrement_clicount(client_p->localClient->z_ctl);
 
        rb_bh_free(lclient_heap, client_p->localClient);
        client_p->localClient = NULL;
@@ -453,11 +459,8 @@ check_banned_lines(void)
                        continue;
 
                /* if there is a returned struct ConfItem then kill it */
-               if((aconf = find_dline((struct sockaddr *)&client_p->localClient->ip, client_p->localClient->ip.ss_family)))
+               if((aconf = find_dline((struct sockaddr *)&client_p->localClient->ip, client_p->localClient->ip.ss_family)) && !(aconf->status & CONF_EXEMPTDLINE))
                {
-                       if(aconf->status & CONF_EXEMPTDLINE)
-                               continue;
-
                        sendto_realops_snomask(SNO_GENERAL, L_ALL,
                                             "DLINE active for %s",
                                             get_client_name(client_p, HIDE_IP));
@@ -560,8 +563,9 @@ check_klines(void)
                        if(IsExemptKline(client_p))
                        {
                                sendto_realops_snomask(SNO_GENERAL, L_ALL,
-                                                    "KLINE over-ruled for %s, client is kline_exempt",
-                                                    get_client_name(client_p, HIDE_IP));
+                                                    "KLINE over-ruled for %s, client is kline_exempt [%s@%s]",
+                                                    get_client_name(client_p, HIDE_IP),
+                                                    aconf->user, aconf->host);
                                continue;
                        }
 
@@ -651,8 +655,9 @@ check_xlines(void)
                        if(IsExemptKline(client_p))
                        {
                                sendto_realops_snomask(SNO_GENERAL, L_ALL,
-                                                    "XLINE over-ruled for %s, client is kline_exempt",
-                                                    get_client_name(client_p, HIDE_IP));
+                                                    "XLINE over-ruled for %s, client is kline_exempt [%s]",
+                                                    get_client_name(client_p, HIDE_IP),
+                                                    aconf->name);
                                continue;
                        }