conn, SILC_COMMAND_NONE,
channel->internal.resolve_cmd_ident,
silc_client_notify_wait_continue,
- fsm));
+ notify));
/* NOT REACHED */
}
silc_client_get_client_by_id_resolve(
client, conn, &id.u.client_id, NULL,
silc_client_notify_resolved,
- fsm));
+ notify));
/* NOT REACHED */
}
conn, SILC_COMMAND_NONE,
channel->internal.resolve_cmd_ident,
silc_client_notify_wait_continue,
- fsm));
+ notify));
/* NOT REACHED */
}
silc_client_get_client_by_id_resolve(
client, conn, &id.u.client_id, NULL,
silc_client_notify_resolved,
- fsm));
+ notify));
/* NOT REACHED */
}
conn, SILC_COMMAND_NONE,
channel->internal.resolve_cmd_ident,
silc_client_notify_wait_continue,
- fsm));
+ notify));
/* NOT REACHED */
}
conn, SILC_COMMAND_NONE,
channel->internal.resolve_cmd_ident,
silc_client_notify_wait_continue,
- fsm));
+ notify));
/* NOT REACHED */
}
silc_client_get_client_by_id_resolve(
client, conn, &id.u.client_id, NULL,
silc_client_notify_resolved,
- fsm));
+ notify));
/* NOT REACHED */
}
entry = client_entry;
silc_client_get_server_by_id_resolve(
client, conn, &id.u.server_id,
silc_client_notify_resolved,
- fsm));
+ notify));
/* NOT REACHED */
}
entry = server;
silc_client_get_channel_by_id_resolve(
client, conn, &id.u.channel_id,
silc_client_notify_resolved,
- fsm));
+ notify));
/* NOT REACHED */
}
entry = channel_entry;
SilcClientEntry client_entry = NULL;
unsigned char *tmp, *nick, oldnick[128 + 1];
SilcUInt32 tmp_len;
- SilcID id;
+ SilcID id, id2;
SILC_LOG_DEBUG(("Notify: NICK_CHANGE"));
SILC_ID_CLIENT_COMPARE(&id.u.client_id, conn->local_id))
goto out;
+ /* Get new Client ID */
+ if (!silc_argument_get_decoded(args, 2, SILC_ARGUMENT_ID, &id2, NULL))
+ goto out;
+
+ /* Ignore my ID */
+ if (conn->local_id &&
+ SILC_ID_CLIENT_COMPARE(&id2.u.client_id, conn->local_id))
+ goto out;
+
/* Find old Client entry */
client_entry = silc_client_get_client_by_id(client, conn, &id.u.client_id);
if (!client_entry || !client_entry->nickname[0]) {
SILC_FSM_CALL(silc_client_get_client_by_id_resolve(
client, conn, &id.u.client_id, NULL,
silc_client_notify_resolved,
- fsm));
+ notify));
/* NOT REACHED */
}
- /* Get new Client ID */
- if (!silc_argument_get_decoded(args, 2, SILC_ARGUMENT_ID, &id, NULL))
- goto out;
-
/* Take the new nickname */
tmp = silc_argument_get_arg_type(args, 3, &tmp_len);
if (!tmp)
/* Check whether nickname changed at all. It is possible that nick
change notify is received but nickname didn't change, only the
ID changes. If Client ID hash match, nickname didn't change. */
- if (SILC_ID_COMPARE_HASH(&client_entry->id, &id.u.client_id) &&
+ if (SILC_ID_COMPARE_HASH(&client_entry->id, &id2.u.client_id) &&
silc_utf8_strcasecmp(tmp, client_entry->nickname)) {
/* Nickname didn't change. Update only Client ID. We don't notify
application because nickname didn't change. */
silc_idcache_update(conn->internal->client_cache, client_entry,
- &client_entry->id, &id.u.client_id, NULL, NULL, FALSE);
+ &client_entry->id, &id2.u.client_id, NULL,
+ NULL, FALSE);
goto out;
}
conn, SILC_COMMAND_NONE,
channel->internal.resolve_cmd_ident,
silc_client_notify_wait_continue,
- fsm));
+ notify));
/* NOT REACHED */
}
silc_client_get_client_by_id_resolve(
client, conn, &id.u.client_id, NULL,
silc_client_notify_resolved,
- fsm));
+ notify));
/* NOT REACHED */
}
entry = client_entry;
silc_client_get_server_by_id_resolve(
client, conn, &id.u.server_id,
silc_client_notify_resolved,
- fsm));
+ notify));
/* NOT REACHED */
}
entry = server;
silc_client_get_channel_by_id_resolve(
client, conn, &id.u.channel_id,
silc_client_notify_resolved,
- fsm));
+ notify));
/* NOT REACHED */
}
entry = channel_entry;
conn, SILC_COMMAND_NONE,
channel->internal.resolve_cmd_ident,
silc_client_notify_wait_continue,
- fsm));
+ notify));
/* NOT REACHED */
}
silc_client_get_client_by_id_resolve(
client, conn, &id.u.client_id, NULL,
silc_client_notify_resolved,
- fsm));
+ notify));
/* NOT REACHED */
}
entry = client_entry;
silc_client_get_server_by_id_resolve(
client, conn, &id.u.server_id,
silc_client_notify_resolved,
- fsm));
+ notify));
/* NOT REACHED */
}
entry = server;
silc_client_get_channel_by_id_resolve(
client, conn, &id.u.channel_id,
silc_client_notify_resolved,
- fsm));
+ notify));
/* NOT REACHED */
}
entry = channel_entry;
SILC_FSM_CALL(silc_client_get_client_by_id_resolve(
client, conn, &id2.u.client_id, NULL,
silc_client_notify_resolved,
- fsm));
+ notify));
/* NOT REACHED */
}
conn, SILC_COMMAND_NONE,
channel->internal.resolve_cmd_ident,
silc_client_notify_wait_continue,
- fsm));
+ notify));
/* NOT REACHED */
}
conn, SILC_COMMAND_NONE,
channel->internal.resolve_cmd_ident,
silc_client_notify_wait_continue,
- fsm));
+ notify));
/* NOT REACHED */
}
silc_client_get_client_by_id_resolve(
client, conn, &id.u.client_id, NULL,
silc_client_notify_resolved,
- fsm));
+ notify));
/* NOT REACHED */
}
SILC_FSM_CALL(silc_client_get_client_by_id_resolve(
client, conn, &id.u.client_id, NULL,
silc_client_notify_resolved,
- fsm));
+ notify));
/* NOT REACHED */
}
entry = client_entry2;
SILC_FSM_CALL(silc_client_get_server_by_id_resolve(
client, conn, &id.u.server_id,
silc_client_notify_resolved,
- fsm));
+ notify));
/* NOT REACHED */
}
entry = server;
SILC_FSM_CALL(silc_client_get_channel_by_id_resolve(
client, conn, &id.u.channel_id,
silc_client_notify_resolved,
- fsm));
+ notify));
/* NOT REACHED */
}
entry = channel_entry;
SILC_FSM_CALL(silc_client_get_client_by_id_resolve(
client, conn, &id.u.client_id, NULL,
silc_client_notify_resolved,
- fsm));
+ notify));
/* NOT REACHED */
}