From ffb16a4b789379d63090dc6b886fcb3f8ef3b762 Mon Sep 17 00:00:00 2001 From: pk910 Date: Mon, 27 Aug 2012 05:46:37 +0200 Subject: [PATCH] fixed viscount modification on QUIT events --- src/IRCParser.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/IRCParser.c b/src/IRCParser.c index d13c173..ebaea30 100644 --- a/src/IRCParser.c +++ b/src/IRCParser.c @@ -412,13 +412,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 && !(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); + //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); + } } } -- 2.20.1