+ if (!ServerInstance->IsChannel(mask[CHAN].c_str(), ServerInstance->Config->Limits.ChanMax))
+ {
+ source->WriteNumeric(403, "%s %s :Invalid channel name in redirection (%s)", source->nick.c_str(), channel->name.c_str(), mask[CHAN].c_str());
+ return false;
+ }
+
+ Channel *c = ServerInstance->FindChan(mask[CHAN]);
+ if (!c)
+ {
+ source->WriteNumeric(690, "%s :Target channel %s must exist to be set as a redirect.",source->nick.c_str(),mask[CHAN].c_str());
+ return false;
+ }
+ else if (adding && c->GetPrefixValue(source) < OP_VALUE)
+ {
+ source->WriteNumeric(690, "%s :You must be opped on %s to set it as a redirect.",source->nick.c_str(), mask[CHAN].c_str());
+ return false;
+ }
+