]> jfr.im git - irc/rqf/shadowircd.git/blobdiff - modules/core/m_message.c
Put back fb7d6089158e, not setting large_ctcp_sent for CTCP ACTION.
[irc/rqf/shadowircd.git] / modules / core / m_message.c
index 62db04d783b3c1294391d99c2facada46622921c..3f814f6585117702075a47ffff372ee44df813a6 100644 (file)
@@ -513,11 +513,20 @@ msg_channel(int p_or_n, const char *command,
                if(result == CAN_SEND_OPV ||
                   !flood_attack_channel(p_or_n, source_p, chptr, chptr->chname))
                {
+                       if (p_or_n != NOTICE && *text == '\001' &&
+                                       strncasecmp(text + 1, "ACTION", 6))
+                       {
+                               if (chptr->mode.mode & MODE_NOCTCP)
+                               {
+                                       sendto_one_numeric(source_p, ERR_CANNOTSENDTOCHAN,
+                                                          form_str(ERR_CANNOTSENDTOCHAN), chptr->chname);
+                                       return;
+                               }
+                               else if (rb_dlink_list_length(&chptr->locmembers) > (unsigned)(GlobalSetOptions.floodcount / 2))
+                                       source_p->large_ctcp_sent = rb_current_time();
+                       }
                        sendto_channel_flags(client_p, ALL_MEMBERS, source_p, chptr,
                                             "%s %s :%s", command, chptr->chname, text);
-                       if (p_or_n != NOTICE && *text == '\001' &&
-                                       rb_dlink_list_length(&chptr->locmembers) > (unsigned)(GlobalSetOptions.floodcount / 2))
-                               source_p->large_ctcp_sent = rb_current_time();
                }
        }
        else if(chptr->mode.mode & MODE_OPMODERATE &&
@@ -744,7 +753,6 @@ static void
 msg_client(int p_or_n, const char *command,
           struct Client *source_p, struct Client *target_p, const char *text)
 {
-       const char *awaymsg;
        int do_floodcount = 0;
 
        if(MyClient(source_p))
@@ -789,9 +797,9 @@ msg_client(int p_or_n, const char *command,
                return;
        }
 
-       if(MyConnect(source_p) && (p_or_n != NOTICE) && target_p->user && (awaymsg = get_metadata(target_p, "away")) != NULL)
+       if(MyConnect(source_p) && (p_or_n != NOTICE) && target_p->user && target_p->user->away)
                sendto_one_numeric(source_p, RPL_AWAY, form_str(RPL_AWAY),
-                                  target_p->name, awaymsg);
+                                  target_p->name, target_p->user->away);
 
        if(MyClient(target_p))
        {