log(DEBUG,"add_channel: user channel max exceeded: %s %s",user->nick,cname);
WriteServ(user->fd,"405 %s %s :You are on too many channels",user->nick, cname);
+
+ if (created == 2)
+ {
+ log(DEBUG,"BLAMMO, Whacking channel.");
+ /* Things went seriously pear shaped, so take this away. bwahaha. */
+ chan_hash::iterator n = chanlist.find(cname);
+ if (n != chanlist.end())
+ {
+ Ptr->DelUser((char*)user);
+ delete Ptr;
+ chanlist.erase(n);
+ for (unsigned int index =0; index < user->chans.size(); index++)
+ {
+ if (user->chans[index].channel == Ptr)
+ {
+ user->chans[index].channel == NULL;
+ user->chans[index].uc_modes = 0;
+ }
+ }
+ }
+ }
return NULL;
}
log(DEBUG,"closing fd %lu",(unsigned long)user->fd);
if (user->registered == 7) {
+ purge_empty_chans(user);
FOREACH_MOD(I_OnUserQuit,OnUserQuit(user,reason));
WriteCommonExcept(user,"QUIT :%s",reason);
}
// this must come before the WriteOpers so that it doesnt try to fill their buffer with anything
// if they were an oper with +s.
if (user->registered == 7) {
- purge_empty_chans(user);
// fix by brain: only show local quits because we only show local connects (it just makes SENSE)
if (user->fd > -1)
WriteOpers("*** Client exiting: %s!%s@%s [%s]",user->nick,user->ident,user->host,reason);