]> jfr.im git - irc/rizon/plexus4.git/commitdiff
m_message: apply target limit to new clients too
authorAdam <redacted>
Tue, 27 Nov 2018 23:42:12 +0000 (18:42 -0500)
committerAdam <redacted>
Thu, 29 Nov 2018 00:45:52 +0000 (19:45 -0500)
modules/core/m_message.c

index 490b0b9f348985441c57dd43f48544c3446313cc..24b0bc696e7dcb5f50fcae1eb8d0b86de4a150d8 100644 (file)
@@ -600,6 +600,37 @@ handle_special(int p_or_n, const char *command, struct Client *client_p,
   }
 }
 
+static int
+target_check_limit(struct Client *source_p, const char *nick)
+{
+  if (!MyClient(source_p))
+  {
+    return 0;
+  }
+
+  if (ntargets > 0 && source_p->localClient->firsttime + ConfigFileEntry.anti_spam_exit_message_time >= CurrentTime)
+  {
+    sendto_one(source_p, form_str(ERR_TOOMANYTARGETS),
+               me.name,
+               source_p->name,
+               nick,
+               1);
+    return 1;
+  }
+
+  if (ntargets >= ConfigFileEntry.max_targets)
+  {
+    sendto_one(source_p, form_str(ERR_TOOMANYTARGETS),
+               me.name,
+               source_p->name,
+               nick,
+               ConfigFileEntry.max_targets);
+    return 1;
+  }
+
+  return 0;
+}
+
 /* build_target_list()
  *
  * inputs      - pointer to given client_p (server)
@@ -645,12 +676,8 @@ build_target_list(int p_or_n, const char *command, struct Client *client_p,
       {
         if (!duplicate_ptr(chptr))
         {
-          if (ntargets >= ConfigFileEntry.max_targets)
+          if (target_check_limit(source_p, nick))
           {
-            sendto_one(source_p, form_str(ERR_TOOMANYTARGETS),
-                       ID_or_name(&me, client_p),
-                       ID_or_name(source_p, client_p), nick,
-                       ConfigFileEntry.max_targets);
             return 1;
           }
 
@@ -676,12 +703,8 @@ build_target_list(int p_or_n, const char *command, struct Client *client_p,
     {
       if (!duplicate_ptr(target_p))
       {
-        if (ntargets >= ConfigFileEntry.max_targets)
+        if (target_check_limit(source_p, nick))
         {
-          sendto_one(source_p, form_str(ERR_TOOMANYTARGETS),
-                     ID_or_name(&me, client_p),
-                     ID_or_name(source_p, client_p), nick,
-                     ConfigFileEntry.max_targets);
           return 1;
         }
 
@@ -739,12 +762,8 @@ build_target_list(int p_or_n, const char *command, struct Client *client_p,
       {
         if (!duplicate_ptr(chptr))
         {
-          if (ntargets >= ConfigFileEntry.max_targets)
+          if (target_check_limit(source_p, nick))
           {
-            sendto_one(source_p, form_str(ERR_TOOMANYTARGETS),
-                       ID_or_name(&me, client_p),
-                       ID_or_name(source_p, client_p), nick,
-                       ConfigFileEntry.max_targets);
             return 1;
           }