-/* UserNode.c - NeonServ v5.2
- * Copyright (C) 2011 Philipp Kreil (pk910)
+/* UserNode.c - NeonServ v5.3
+ * Copyright (C) 2011-2012 Philipp Kreil (pk910)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
#include "UserNode.h"
#include "ChanUser.h"
#include "tools.h"
+#include "IRCEvents.h"
static struct UserNode **userList;
void delUser(struct UserNode* user, int freeUser) {
int userListIndex = get_nicklist_entry(user->nick[0]);
if(userListIndex == -1) return;
+ event_freeuser(user);
struct UserNode *cuser, *last_user = NULL;
for(cuser = userList[userListIndex]; cuser; cuser = cuser->next) {
if(cuser == user) {
removeChanUserFromLists(chanUser, 1, 0, freeUser);
}
}
- if(freeUser)
- free(user);
- else
+ if(freeUser) {
+ if(user->flags & USERFLAG_IS_ON_WHO_QUEUE)
+ user->flags |= USERFLAG_FREE_AFTER_WHO;
+ else
+ free(user);
+ } else
user->next = NULL;
}