From 70f9fe3245bcfe95706e68142db3527425319191 Mon Sep 17 00:00:00 2001 From: pk910 Date: Wed, 14 Dec 2011 22:15:14 +0100 Subject: [PATCH] fixed invi join for BNC bots --- src/IRCParser.c | 2 +- src/WHOHandler.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/IRCParser.c b/src/IRCParser.c index d1189bb..c3fe086 100644 --- a/src/IRCParser.c +++ b/src/IRCParser.c @@ -202,7 +202,7 @@ static IRC_CMD(raw_join) { //request member list chan->chanbot = user; struct ChanUser *chanuser = addChanUser(chan, user); //it must be a bot - get_userlist(chan, got_channel_userlist, chanuser); + get_userlist_with_invisible(chan, got_channel_userlist, chanuser); putsock(client, "MODE %s", chan->name); putsock(client, "MODE %s +b", chan->name); } else if(!isUserOnChan(user, chan) && ((chan->flags & CHANFLAG_RECEIVED_USERLIST) || isBot(user))) { diff --git a/src/WHOHandler.c b/src/WHOHandler.c index f7287a3..ab1b0c0 100644 --- a/src/WHOHandler.c +++ b/src/WHOHandler.c @@ -224,7 +224,7 @@ void recv_whohandler_354(struct ClientSocket *client, char **argv, unsigned int struct UserNode *user = getUserByNick(argv[4]); struct ChanUser *chanuser; - if((chanuserflags & CHANUSERFLAG_INVISIBLE) && !isBot(user)) { + if((chanuserflags & CHANUSERFLAG_INVISIBLE) && (!user || !isBot(user))) { user = createTempUser(argv[4]); user->flags |= USERFLAG_ISTMPUSER; chan->flags |= CHANFLAG_HAVE_INVISIBLES; @@ -237,7 +237,7 @@ void recv_whohandler_354(struct ClientSocket *client, char **argv, unsigned int if(!(chanuser = getChanUser(user, chan))) { chanuser = addChanUser(chan, user); } - chanuser->flags = (chanuser->flags & ~CHANUSERFLAG_OPPED_OR_VOICED) | chanuserflags; + chanuser->flags = (chanuser->flags & ~(CHANUSERFLAG_OPPED_OR_VOICED | CHANUSERFLAG_INVISIBLE)) | chanuserflags; } user->flags = (user->flags & ~USERFLAG_ISIRCOP) | userflags; user->last_who = time(0); -- 2.20.1