nick = silc_nicklist_find(chanrec, sender);
if (!nick) {
- /* We didn't find client but it clearly exists, add it. It must be
- found on the channel->clients list. */
- SilcChannelUser chu;
-
- silc_list_start(channel->clients);
- while ((chu = silc_list_get(channel->clients)) != SILC_LIST_END) {
- if (chu->client == sender) {
- nick = silc_nicklist_insert(chanrec, chu, FALSE);
- break;
- }
- }
+ /* We didn't find client but it clearly exists, add it. */
+ SilcChannelUser chu = silc_client_on_channel(channel, sender);
+ if (chu)
+ nick = silc_nicklist_insert(chanrec, chu, FALSE);
}
if (flags & SILC_MESSAGE_FLAG_ACTION)
void *context)
{
SilcChannelEntry channel = (SilcChannelEntry)context;
+ SilcHashTableList htl;
SilcChannelUser chu;
SILC_SERVER_REC *server = conn->context;
SILC_CHANNEL_REC *chanrec;
if (chanrec == NULL)
return;
- silc_list_start(channel->clients);
- while ((chu = silc_list_get(channel->clients)) != SILC_LIST_END) {
+ silc_hash_table_list(channel->user_list, &htl);
+ while (silc_hash_table_get(&htl, NULL, (void *)&chu)) {
if (!chu->client->nickname)
continue;
if (chu->mode & SILC_CHANNEL_UMODE_CHANFO)
founder = chu->client;
silc_nicklist_insert(chanrec, chu, FALSE);
}
+ silc_hash_table_list_reset(&htl);
ownnick = NICK(silc_nicklist_find(chanrec, conn->local_entry));
nicklist_set_own(CHANNEL(chanrec), ownnick);
case SILC_COMMAND_USERS:
{
+ SilcHashTableList htl;
SilcChannelEntry channel;
SilcChannelUser chu;
MSGLEVEL_CRAP, SILCTXT_USERS_HEADER,
channel->channel_name);
- silc_list_start(channel->clients);
- while ((chu = silc_list_get(channel->clients)) != SILC_LIST_END) {
+ silc_hash_table_list(channel->user_list, &htl);
+ while (silc_hash_table_get(&htl, NULL, (void *)&chu)) {
SilcClientEntry e = chu->client;
char stat[5], *mode;
if (mode)
silc_free(mode);
}
+ silc_hash_table_list_reset(&htl);
}
break;