From: pk910 Date: Mon, 31 Oct 2011 22:38:14 +0000 (+0100) Subject: always update chanuser flag information when getting them X-Git-Tag: v5.3~228 X-Git-Url: http://git.pk910.de/?p=NeonServV5.git;a=commitdiff_plain;h=7c39c2184ee4608e7fc3328cec09592135db0cf4 always update chanuser flag information when getting them --- diff --git a/src/WHOHandler.c b/src/WHOHandler.c index ffb1e47..c8c6582 100644 --- a/src/WHOHandler.c +++ b/src/WHOHandler.c @@ -223,21 +223,22 @@ void recv_whohandler_354(struct ClientSocket *client, char **argv, unsigned int } struct UserNode *user; + struct ChanUser *chanuser; if(chanuserflags & CHANUSERFLAG_INVISIBLE) { user = createTempUser(argv[4]); user->flags |= USERFLAG_ISTMPUSER; chan->flags |= CHANFLAG_HAVE_INVISIBLES; - struct ChanUser *chanuser = addInvisibleChanUser(chan, user); + chanuser = addInvisibleChanUser(chan, user); chanuser->flags = (chanuser->flags & ~CHANUSERFLAG_OPPED_OR_VOICED) | chanuserflags; } else { user = getUserByNick(argv[4]); if(user == NULL) { user = addUser(argv[4]); } - if(!isUserOnChan(user, chan)) { - struct ChanUser *chanuser = addChanUser(chan, user); - chanuser->flags = (chanuser->flags & ~CHANUSERFLAG_OPPED_OR_VOICED) | chanuserflags; + if(!(chanuser = getChanUser(user, chan))) { + chanuser = addChanUser(chan, user); } + chanuser->flags = (chanuser->flags & ~CHANUSERFLAG_OPPED_OR_VOICED) | chanuserflags; } user->flags = (user->flags & ~USERFLAG_ISIRCOP) | userflags; user->last_who = time(0);