- /* NOTE: If the user is an oper here, we can extend their user->chans by up to
- * OperMaxchans. For remote users which are not bound by the channel limits,
- * we can extend infinitely. Otherwise, nope, youre restricted to MaxChans.
- */
-
-
-
- /*
- * We place no restrictions on remote users, users that are override-joining, or users that are
- * currently in under MaxChans channels. For all others, they won't get in here. -- w00t
- */
- if (!IS_LOCAL(user) || override == true || user->chans.size() < Instance->Config->MaxChans)
- {
- return chanrec::ForceChan(Instance, Ptr, user, privs);
- }
-
- /*
- * If the above fails, and the user is an oper -- we let them in if they are under OperMaxChans.
- * Otherwise, they're stuck, and need to override to get in, etc. -- w00t
- */
- if (IS_OPER(user))
- {
- if (user->chans.size() < Instance->Config->OperMaxChans)
- {
- return chanrec::ForceChan(Instance, Ptr, user, privs);
- }
- }
-
- user->WriteServ("405 %s %s :You are on too many channels",user->nick, cname);
-
- if (new_channel)
- {
- /* Things went seriously pear shaped, so take this away. bwahaha. */
- chan_hash::iterator n = Instance->chanlist->find(cname);
- if (n != Instance->chanlist->end())
- {
- Ptr->DelUser(user);
- DELETE(Ptr);
- Instance->chanlist->erase(n);
- }
- }
-
- return NULL;