-/* 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;
for(i = 0; i < strlen(mask)+1; i++) {
if(cmask[i] == '!') {
cmask[i] = 0;
+ if(!is_valid_nick(cmask)) {
+ return NULL;
+ }
user = malloc(sizeof(*user));
if (!user)
{
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) {
} else
last_user = cuser;
}
+ if(freeUser && (user->flags & USERFLAG_IS_ON_WHO_QUEUE)) {
+ user->flags |= USERFLAG_FREE_AFTER_WHO;
+ freeUser = 0;
+ }
if(user->channel) {
struct ChanUser *chanUser, *next;
for(chanUser = user->channel; chanUser; chanUser = next) {