- if ((c == channel) || (c->IsModeSet('L')))
- {
- source->WriteServ("690 %s :Circular or chained +L to %s not allowed (Channel already has +L). Pack of wild dogs has been unleashed.",source->nick,parameter.c_str());
- parameter.clear();
- return MODEACTION_DENY;
- }
- else
- {
- for (chan_hash::const_iterator i = ServerInstance->chanlist->begin(); i != ServerInstance->chanlist->end(); i++)
- {
- if ((i->second != channel) && (i->second->IsModeSet('L')) && (irc::string(i->second->GetModeParameter('L').c_str()) == irc::string(channel->name)))
- {
- source->WriteServ("690 %s :Circular or chained +L to %s not allowed (Already forwarded here from %s). Angry monkeys dispatched.",source->nick,parameter.c_str(),i->second->name);
- return MODEACTION_DENY;
- }
- }
- }
+ source->WriteNumeric(690, "%s :Target channel %s must exist to be set as a redirect.",source->nick.c_str(),parameter.c_str());
+ parameter.clear();
+ return MODEACTION_DENY;
+ }
+ else if (c->GetStatus(source) < STATUS_OP)
+ {
+ source->WriteNumeric(690, "%s :You must be opped on %s to set it as a redirect.",source->nick.c_str(),parameter.c_str());
+ parameter.clear();
+ return MODEACTION_DENY;