- if (NoisyOverride)
- {
- irc::string x = chan->name;
- if (!user->IsInvited(x))
- {
- /* XXX - Ugly cast for a parameter that isn't used? :< - Om */
- chan->WriteChannelWithServ(ServerInstance->Config->ServerName, "NOTICE %s :%s invited himself into the channel", cname, user->nick);
- }
- }
- ServerInstance->WriteOpers("*** "+std::string(user->nick)+" used operoverride to bypass +i on "+std::string(cname));
- return -1;
- }
-
- if ((chan->key[0]) && (CanOverride(user,"KEY")))
- {
- if (NoisyOverride)
- chan->WriteChannelWithServ(ServerInstance->Config->ServerName, "NOTICE %s :%s bypassed the channel key", cname, user->nick);
- ServerInstance->WriteOpers("*** "+std::string(user->nick)+" used operoverride to bypass +k on "+std::string(cname));
- return -1;
- }
-
- if ((chan->limit > 0) && (chan->GetUserCounter() >= chan->limit) && (CanOverride(user,"LIMIT")))
- {
- if (NoisyOverride)
- chan->WriteChannelWithServ(ServerInstance->Config->ServerName, "NOTICE %s :%s passed through your channel limit", cname, user->nick);
- ServerInstance->WriteOpers("*** "+std::string(user->nick)+" used operoverride to bypass +l on "+std::string(cname));
- return -1;
+ if (!invapi->IsInvited(user, chan))
+ return HandleJoinOverride(user, chan, keygiven, "invite-only", "+i");
+ return MOD_RES_ALLOW;