-/* WHOHandler.c - NeonServ v5.3
+/* WHOHandler.c - NeonServ v5.4
* Copyright (C) 2011-2012 Philipp Kreil (pk910)
*
* This program is free software: you can redistribute it and/or modify
struct UserNode *user = getUserByNick(argv[5]);
struct ChanUser *chanuser;
- if((chanuserflags & CHANUSERFLAG_INVISIBLE)) {
- if(!user) {
- user = createTempUser(argv[5]);
- user->flags |= USERFLAG_ISTMPUSER;
- }
+ if((chanuserflags & CHANUSERFLAG_INVISIBLE) && (!user || (user && !isBot(user)))) {
+ user = createTempUser(argv[5]); //always add a temponary user to prevent cache problems when the user joins right now (while it's stored in our cache as being invisible)
+ user->flags |= USERFLAG_ISTMPUSER;
chan->flags |= CHANFLAG_HAVE_INVISIBLES;
chanuser = addInvisibleChanUser(chan, user);
chanuser->flags = (chanuser->flags & ~CHANUSERFLAG_OPPED_OR_VOICED) | chanuserflags;