fixed event_neonserv_kick and user-free-after-kick problem
[NeonServV5.git] / src / WHOHandler.c
index e470abbda19a278d12385e341d6124005f7622c9..b0b8ddc51771f22fa5c349f255f31fd01147c2dc 100644 (file)
@@ -177,6 +177,7 @@ void get_userauth(struct UserNode *user, userauth_callback_t callback, void *dat
     entry = addWHOQueueEntry(bot);
     entry->type = WHOQUEUETYPE_ISONQUEUE | WHOQUEUETYPE_USERAUTH;
     entry->user = user;
+    user->flags |= USERFLAG_IS_ON_WHO_QUEUE;
     entry->callback[0] = callback;
     int i;
     for(i = 1; i < MAXCALLBACKS; i++)
@@ -308,6 +309,10 @@ void recv_whohandler_315(struct ClientSocket *client, char **argv, unsigned int
                 callback(client, entry->user->nick, NULL, entry->data[i]);
             }
         }
+        entry->user->flags &= ~USERFLAG_IS_ON_WHO_QUEUE;
+        if(entry->user->flags & USERFLAG_FREE_AFTER_WHO) {
+            delUser(entry->user, 1);
+        }
     }
     free(entry);
 }