X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcclient%2Fcommand_reply.c;h=35a7e87c261aca18f7401924ae632cc1a213fc62;hb=b1a49687af6bbac5dd64e3ff18650a9d1685e993;hp=43376be33248cbe3706aba68a4ac69f40e540061;hpb=ae13c2505a3c2ea067af59abc822345dbe54a943;p=crypto.git diff --git a/lib/silcclient/command_reply.c b/lib/silcclient/command_reply.c index 43376be3..35a7e87c 100644 --- a/lib/silcclient/command_reply.c +++ b/lib/silcclient/command_reply.c @@ -514,12 +514,22 @@ SILC_CLIENT_CMD_REPLY_FUNC(nick) goto out; } silc_client_receive_new_id(cmd->client, cmd->sock, idp); + + /* Take the new nickname too */ + tmp = silc_argument_get_arg_type(cmd->args, 3, &len); + if (tmp) { + silc_idcache_del_by_context(conn->client_cache, conn->local_entry); + if (conn->nickname) + silc_free(conn->nickname); + conn->nickname = strdup(tmp); + conn->local_entry->nickname = conn->nickname; + silc_client_nickname_format(cmd->client, conn, conn->local_entry); + silc_idcache_add(conn->client_cache, strdup(tmp), + conn->local_entry->id, conn->local_entry, 0, NULL); + } /* Notify application */ - SILC_CLIENT_PENDING_EXEC(cmd, SILC_COMMAND_NICK); - COMMAND_REPLY((ARGS, conn->local_entry)); - silc_client_command_reply_free(cmd); - return; + COMMAND_REPLY((ARGS, conn->local_entry, conn->local_entry->nickname)); out: SILC_CLIENT_PENDING_EXEC(cmd, SILC_COMMAND_NICK);