udpates.
[silc.git] / apps / silcd / command_reply.c
index 8945bb4191bfba1d34f506380a964354b95e6ffc..5ac3cb09f1f5481f3aef482667d0191476422034 100644 (file)
@@ -495,7 +495,7 @@ silc_server_command_reply_identify_save(SilcServerCommandReplyContext cmd)
                                                   server_id, FALSE, NULL);
     if (!server_entry) {
       /* If router did not find such Server ID in its lists then this must
-        be bogus client or some router in the net is buggy. */
+        be bogus server or some router in the net is buggy. */
       if (server->server_type == SILC_ROUTER)
        goto error;
       
@@ -529,8 +529,8 @@ silc_server_command_reply_identify_save(SilcServerCommandReplyContext cmd)
       channel = silc_idlist_find_channel_by_id(server->global_list, channel_id,
                                               NULL);
     if (!channel) {
-      /* If router did not find such Server ID in its lists then this must
-        be bogus client or some router in the net is buggy. */
+      /* If router did not find such Channel ID in its lists then this must
+        be bogus channel or some router in the net is buggy. */
       if (server->server_type == SILC_ROUTER)
        goto error;
       
@@ -798,6 +798,13 @@ SILC_SERVER_CMD_REPLY_FUNC(join)
                    (created == 0 ? "existing" : "created"), channel_name,
                    silc_id_render(id, SILC_ID_CHANNEL)));
 
+    /* If the channel is found from global list we must move it to the
+       local list. */
+    entry = silc_idlist_find_channel_by_name(server->global_list, 
+                                            channel_name, &cache);
+    if (entry)
+      silc_idlist_del_channel(server->global_list, entry);
+
     /* Add the channel to our local list. */
     entry = silc_idlist_add_channel(server->local_list, strdup(channel_name), 
                                    SILC_CHANNEL_MODE_NONE, id,