- Channel* c = (Channel*)dest;
- if ((text.empty()) || (text[0] != '\001') || (!strncmp(text.c_str(),"\1ACTION ", 8)) || (text == "\1ACTION\1") || (text == "\1ACTION"))
- return MOD_RES_PASSTHRU;
+ case MessageTarget::TYPE_CHANNEL:
+ {
+ if (user->HasPrivPermission("channels/ignore-noctcp"))
+ return MOD_RES_PASSTHRU;
+
+ Channel* c = target.Get<Channel>();
+ const Channel::MemberMap& members = c->GetUsers();
+ for (Channel::MemberMap::const_iterator member = members.begin(); member != members.end(); ++member)
+ {
+ User* u = member->first;
+ if (u->IsModeSet(ncu))
+ details.exemptions.insert(u);
+ }
+
+ ModResult res = CheckExemption::Call(exemptionprov, user, c, "noctcp");
+ if (res == MOD_RES_ALLOW)
+ return MOD_RES_PASSTHRU;