+ 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;
+
+ if (c->IsModeSet(nc))
+ {
+ user->WriteNumeric(Numerics::CannotSendTo(c, "CTCPs", &nc));
+ return MOD_RES_DENY;
+ }
+
+ if (c->GetExtBanStatus(user, 'C') == MOD_RES_DENY)