]> jfr.im git - irc/rqf/shadowircd.git/blobdiff - modules/core/m_message.c
Remove dead code: last_join_time is already updated by check_spambot_warning().
[irc/rqf/shadowircd.git] / modules / core / m_message.c
index 8b90052dcabce48670ce2f1e88b541838c367465..faca81371c5cd7ab0fad5d26d44210eb1eb62a60 100644 (file)
@@ -43,6 +43,7 @@
 #include "send.h"
 #include "s_newconf.h"
 #include "s_stats.h"
+#include "tgchange.h"
 #include "inline/stringops.h"
 
 static int m_message(int, const char *, struct Client *, struct Client *, int, const char **);
@@ -90,7 +91,6 @@ static int build_target_list(int p_or_n, const char *command,
                             struct Client *client_p,
                             struct Client *source_p, const char *nicks_channels, const char *text);
 
-static struct Channel *find_allowing_channel(struct Client *source_p, struct Client *target_p);
 static int flood_attack_client(int p_or_n, struct Client *source_p, struct Client *target_p);
 static int flood_attack_channel(int p_or_n, struct Client *source_p,
                                struct Channel *chptr, char *chname);
@@ -662,84 +662,6 @@ expire_tgchange(void *unused)
        }
 }
 
-static int
-add_target(struct Client *source_p, struct Client *target_p)
-{
-       int i, j;
-       uint32_t hashv;
-       uint32_t *targets;
-
-       /* can msg themselves or services without using any target slots */
-       if(source_p == target_p || IsService(target_p))
-               return 1;
-
-       /* special condition for those who have had PRIVMSG crippled to allow them
-        * to talk to IRCops still.
-        *
-        * XXX: is this controversial?
-        */
-       if(source_p->localClient->target_last > rb_current_time() && IsOper(target_p))
-               return 1;
-
-       hashv = fnv_hash_upper((const unsigned char *)use_id(target_p), 32);
-       targets = source_p->localClient->targets;
-
-       /* check for existing target, and move it to the head */
-       for(i = 0; i < TGCHANGE_NUM; i++)
-       {
-               if(targets[i] == hashv)
-               {
-                       for(j = i; j > 0; j--)
-                               targets[j] = targets[j - 1];
-                       targets[0] = hashv;
-                       return 1;
-               }
-       }
-
-       if(source_p->localClient->targets_free < TGCHANGE_NUM)
-       {
-               /* first message after connect, we may only start clearing
-                * slots after this message --anfl
-                */
-               if(!IsTGChange(source_p))
-               {
-                       SetTGChange(source_p);
-                       source_p->localClient->target_last = rb_current_time();
-               }
-               /* clear as many targets as we can */
-               else if((i = (rb_current_time() - source_p->localClient->target_last) / 60))
-               {
-                       if(i + source_p->localClient->targets_free > TGCHANGE_NUM)
-                               source_p->localClient->targets_free = TGCHANGE_NUM;
-                       else
-                               source_p->localClient->targets_free += i;
-
-                       source_p->localClient->target_last = rb_current_time();
-               }
-               /* cant clear any, full target list */
-               else if(source_p->localClient->targets_free == 0)
-               {
-                       ServerStats.is_tgch++;
-                       add_tgchange(source_p->sockhost);
-                       return 0;
-               }
-       }
-       /* no targets in use, reset their target_last so that they cant
-        * abuse a long idle to get targets back more quickly
-        */
-       else
-       {
-               source_p->localClient->target_last = rb_current_time();
-               SetTGChange(source_p);
-       }
-
-       for(i = TGCHANGE_NUM - 1; i > 0; i--)
-               targets[i] = targets[i - 1];
-       targets[0] = hashv;
-       source_p->localClient->targets_free--;
-       return 1;
-}
-
 /*
  * msg_client
  *
@@ -813,6 +735,7 @@ msg_client(int p_or_n, const char *command,
                        /* Here is the anti-flood bot/spambot code -db */
                        if(accept_message(source_p, target_p) || IsOper(source_p))
                        {
+                               add_reply_target(target_p, source_p);
                                sendto_one(target_p, ":%s!%s@%s %s %s :%s",
                                           source_p->name,
                                           source_p->username,
@@ -843,6 +766,7 @@ msg_client(int p_or_n, const char *command,
                                                                   form_str(RPL_TARGNOTIFY),
                                                                   target_p->name);
 
+                                       add_reply_target(target_p, source_p);
                                        sendto_one(target_p, form_str(RPL_UMODEGMSG),
                                                   me.name, target_p->name, source_p->name,
                                                   source_p->username, source_p->host);
@@ -852,7 +776,10 @@ msg_client(int p_or_n, const char *command,
                        }
                }
                else
+               {
+                       add_reply_target(target_p, source_p);
                        sendto_anywhere(target_p, source_p, command, ":%s", text);
+               }
        }
        else
                sendto_anywhere(target_p, source_p, command, ":%s", text);
@@ -860,21 +787,6 @@ msg_client(int p_or_n, const char *command,
        return;
 }
 
-static struct Channel *
-find_allowing_channel(struct Client *source_p, struct Client *target_p)
-{
-       rb_dlink_node *ptr;
-       struct membership *msptr;
-
-       RB_DLINK_FOREACH(ptr, source_p->user->channel.head)
-       {
-               msptr = ptr->data;
-               if (is_chanop_voiced(msptr) && IsMember(target_p, msptr->chptr))
-                       return msptr->chptr;
-       }
-       return NULL;
-}
-
 /*
  * flood_attack_client
  * inputs       - flag 0 if PRIVMSG 1 if NOTICE. RFC