-/* WHOHandler.c - NeonServ v5.2
- * Copyright (C) 2011 Philipp Kreil (pk910)
+/* WHOHandler.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
free(entry);
}
client->whoqueue_last = NULL;
+ client->whoqueue_first = NULL;
}
void get_userlist(struct ChanNode *chan, userlist_callback_t callback, void *data) {
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++)
case '@':
chanuserflags |= CHANUSERFLAG_OPPED;
break;
+ case '%':
+ chanuserflags |= CHANUSERFLAG_HALFOPPED;
+ break;
case '+':
chanuserflags |= CHANUSERFLAG_VOICED;
break;
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);
}