Fixed the USERS & JOIN command replys, added silc-expandos.c to
[silc.git] / lib / silcclient / command_reply.c
index fba3147b535dcdaef6c34867a48a76327b90f49f..279489a05ebbe553609957fef6046143119652f3 100644 (file)
@@ -1061,12 +1061,14 @@ SILC_CLIENT_CMD_REPLY_FUNC(join)
     }
 
     /* 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);
@@ -1714,6 +1716,7 @@ SILC_CLIENT_CMD_REPLY_FUNC(users)
       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);