X-Git-Url: https://jfr.im/git/irc/rqf/shadowircd.git/blobdiff_plain/987ef7eb1f6c6e6bfb79fc0e7759702ff372ac7a..343e239585d12e5a9f618db5483e4193b8c571a6:/modules/core/m_message.c diff --git a/modules/core/m_message.c b/modules/core/m_message.c index 62db04d..3f814f6 100644 --- a/modules/core/m_message.c +++ b/modules/core/m_message.c @@ -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)) {