- User* theuser = FindAndVerify(parameter, channel);
-
- if (!theuser)
- return MODEACTION_DENY;
-
- // source is a server, or ulined, we'll let them +-Y the user.
- if (source == ServerInstance->FakeClient ||
- ((source == theuser) && (!adding)) ||
- (ServerInstance->ULine(source->nick.c_str())) ||
- (ServerInstance->ULine(source->server)) ||
- (!IS_LOCAL(source))
- )
- {
- return HandleChange(source, theuser, adding, channel, parameter);
- }
- else
- {
- // bzzzt, wrong answer!
- source->WriteNumeric(482, "%s %s :Only servers may change this mode.", source->nick.c_str(), channel->name.c_str());
- return MODEACTION_DENY;
- }