if (!client) {
/* If router did not find such Client ID in its lists then this must
be bogus client or some router in the net is buggy. */
- if (server->server_type == SILC_ROUTER)
+ if (server->server_type != SILC_SERVER)
return FALSE;
/* Take hostname out of nick string if it includes it. */
if (!client) {
/* If router did not find such Client ID in its lists then this must
be bogus client or some router in the net is buggy. */
- if (server->server_type == SILC_ROUTER)
+ if (server->server_type != SILC_SERVER)
return FALSE;
/* Take hostname out of nick string if it includes it. */
if (!client) {
/* If router did not find such Client ID in its lists then this must
be bogus client or some router in the net is buggy. */
- if (server->server_type == SILC_ROUTER)
+ if (server->server_type != SILC_SERVER)
goto error;
/* Take nickname */
if (!server_entry) {
/* If router did not find such Server ID in its lists then this must
be bogus server or some router in the net is buggy. */
- if (server->server_type == SILC_ROUTER)
+ if (server->server_type != SILC_SERVER)
goto error;
/* We don't have that server anywhere, add it. */
if (!channel) {
/* 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)
+ if (server->server_type != SILC_SERVER)
goto error;
/* We don't have that server anywhere, add it. */
(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,
if (!channel) {
SilcBuffer idp;
- if (server->server_type == SILC_ROUTER)
+ if (server->server_type != SILC_SERVER)
goto out;
idp = silc_id_payload_encode(channel_id, SILC_ID_CHANNEL);