}
/* Join client to the channel */
- chu = silc_calloc(1, sizeof(*chu));
- chu->client = client_entry;
- chu->channel = channel;
- chu->mode = mode;
- silc_hash_table_add(channel->user_list, client_entry, chu);
- silc_hash_table_add(client_entry->channels, channel, chu);
+ if (!silc_client_on_channel(channel, client_entry)) {
+ chu = silc_calloc(1, sizeof(*chu));
+ chu->client = client_entry;
+ chu->channel = channel;
+ chu->mode = mode;
+ silc_hash_table_add(channel->user_list, client_entry, chu);
+ silc_hash_table_add(client_entry->channels, channel, chu);
+ }
silc_free(client_id);
silc_buffer_pull(client_id_list, idp_len);
if (!silc_client_on_channel(channel, client_entry)) {
chu = silc_calloc(1, sizeof(*chu));
chu->client = client_entry;
+ chu->mode = mode;
chu->channel = channel;
silc_hash_table_add(channel->user_list, client_entry, chu);
silc_hash_table_add(client_entry->channels, channel, chu);