- /* Find ID from cache */
- if (silc_idcache_find_by_data(CIDC(cmd->argv[1][0]), cmd->argv[1],
- &id_cache) == FALSE) {
- SilcClientCommandContext ctx;
- char ident[512];
-
- SILC_LOG_DEBUG(("Requesting Client ID from server"));
-
- /* No ID found. Do query from the server. The query is done by
- sending simple IDENTIFY command to the server. */
- ctx = silc_calloc(1, sizeof(*ctx));
- ctx->client = client;
- ctx->sock = cmd->sock;
- memset(ident, 0, sizeof(ident));
- snprintf(ident, sizeof(ident), "/IDENTIFY %s", cmd->argv[1]);
- silc_client_parse_command_line(ident, &ctx->argv, &ctx->argv_lens,
- &ctx->argv_types, &ctx->argc, 2);
- silc_client_command_identify(ctx);
-
- /* Mark this command to be pending command and to be executed after
- we have received the IDENTIFY reply from server. */
+ /* Parse the typed nickname. */
+ if (!silc_client_parse_nickname(cmd->argv[1], &nickname, &server, &num)) {
+ silc_say(cmd->client, "Bad nickname");
+ goto out;
+ }
+
+ /* Find client entry */
+ client_entry = silc_idlist_get_client(client, win, nickname, server, num);
+ if (!client_entry) {
+ /* Client entry not found, it was requested thus mark this to be
+ pending command. */