fixed WHOHandler.c: don't WHO if requested nickname is invalid and use only one reply...
authorpk910 <philipp@zoelle1.de>
Sun, 8 Jan 2012 04:32:00 +0000 (05:32 +0100)
committerpk910 <philipp@zoelle1.de>
Sun, 8 Jan 2012 04:32:00 +0000 (05:32 +0100)
src/WHOHandler.c

index b0b8ddc51771f22fa5c349f255f31fd01147c2dc..eafa62fcfccfd86cba1bfeeeec4fc376fe345b03 100644 (file)
@@ -170,6 +170,10 @@ void get_userauth(struct UserNode *user, userauth_callback_t callback, void *dat
     bot = whobot;
     if(bot == NULL) bot = getBots(SOCKET_FLAG_READY, NULL);
     //check if we really need to who the user
+    if(!is_valid_nick(user->nick)) {
+        callback(bot, user->nick, NULL, data);
+        return;
+    }
     if((user->flags & (USERFLAG_ISAUTHED | USERFLAG_ISIRCOP | USERFLAG_ISBOT | USERFLAG_ISSERVER)) || (time(0) - user->last_who) <= REWHO_TIMEOUT) {
         callback(bot, user->nick, user, data);
         return;
@@ -254,7 +258,7 @@ void recv_whohandler_354(struct ClientSocket *client, char **argv, unsigned int
             strcpy(user->auth, argv[6]);
             user->flags |= USERFLAG_ISAUTHED;
         }
-    } else if(type & WHOQUEUETYPE_USERAUTH) {
+    } else if((type & WHOQUEUETYPE_USERAUTH) && !(entry->type & WHOQUEUETYPE_FOUND)) {
         //:OGN2.OnlineGamesNet.net 354 Skynet 1 pk910 2001:41d0:2:1d3b::babe Skynet pk910
         entry->type |= WHOQUEUETYPE_FOUND;
         entry->user->last_who = time(0);