X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=src%2FIRCParser.c;h=f7ff777d877405dca80242be84124731e8f35495;hb=70b7d70a96523b78cd470c6fe2ab78beb345d607;hp=f9e79e0c127c720b34a67f96db5217334d0a2738;hpb=02e797baca7f15e306d70b3b7e2b4d83ff1cf44f;p=NeonServV5.git diff --git a/src/IRCParser.c b/src/IRCParser.c index f9e79e0..f7ff777 100644 --- a/src/IRCParser.c +++ b/src/IRCParser.c @@ -171,7 +171,7 @@ static IRC_CMD(raw_join) { event_registered(user, from); user->flags &= ~USERFLAG_WAS_REGISTERING; } else if(!(chan->flags & CHANFLAG_RECEIVED_USERLIST)) { - if(!isBot(user)) { + if(client->user != user) { //bots are allowed to add themselves DESYNCHRONIZE(cache_sync); return 1; //ignore join } @@ -395,13 +395,16 @@ static IRC_CMD(raw_quit) { struct ChanUser *chanuser, *next_chanuser; for(chanuser = getUserChannels(user, NULL); chanuser; chanuser = next_chanuser) { next_chanuser = getUserChannels(user, chanuser); - chanuser->visCount--; - if(chanuser->visCount <= 0) { - delChanUser(chanuser, 0); //not free, yet! - event_part(chanuser, 1, argv[0]); - if((chanuser->chan->flags & CHANFLAG_RECEIVED_USERLIST) && !(chanuser->chan->flags & CHANFLAG_REJOINING)) - check_full_rejoin(chanuser->chan); - freeChanUser(chanuser); + //decrease visCount counter only if client is in the channel + if(isUserOnChan(client->user, chanuser->chan)) { + chanuser->visCount--; + if(chanuser->visCount <= 0 && !(user->flags & USERFLAG_WAS_REGISTERING)) { + delChanUser(chanuser, 0); //not free, yet! + event_part(chanuser, 1, argv[0]); + if((chanuser->chan->flags & CHANFLAG_RECEIVED_USERLIST) && !(chanuser->chan->flags & CHANFLAG_REJOINING)) + check_full_rejoin(chanuser->chan); + freeChanUser(chanuser); + } } }