From: Pekka Riikonen Date: Fri, 2 Feb 2007 20:30:34 +0000 (+0000) Subject: Added support for SILC protocol 1.3 NEW_CLIENT packet. X-Git-Tag: silc.client.1.1.beta1~31 X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=commitdiff_plain;h=bfd23992de9af6392c1a8f8d9b4afd5b353e852c Added support for SILC protocol 1.3 NEW_CLIENT packet. --- diff --git a/lib/silcclient/client_register.c b/lib/silcclient/client_register.c index 43e15e42..88726f5e 100644 --- a/lib/silcclient/client_register.c +++ b/lib/silcclient/client_register.c @@ -156,9 +156,15 @@ SILC_FSM_STATE(silc_client_st_register) { SilcClientConnection conn = fsm_context; SilcClient client = conn->client; + char *nick = NULL; SILC_LOG_DEBUG(("Register to network")); + /* From SILC protocol version 1.3, nickname is in NEW_CLIENT packet */ + if (conn->internal->remote_version >= 13) + nick = (conn->internal->params.nickname ? + conn->internal->params.nickname : client->username); + /* Send NEW_CLIENT packet to register to network */ if (!silc_packet_send_va(conn->stream, SILC_PACKET_NEW_CLIENT, 0, SILC_STR_UI_SHORT(strlen(client->username)), @@ -167,6 +173,8 @@ SILC_FSM_STATE(silc_client_st_register) SILC_STR_UI_SHORT(strlen(client->realname)), SILC_STR_DATA(client->realname, strlen(client->realname)), + SILC_STR_UI_SHORT(nick ? strlen(nick) : 0), + SILC_STR_DATA(nick, nick ? strlen(nick) : 0), SILC_STR_END)) { /** Error sending packet */ silc_fsm_next(fsm, silc_client_st_register_error); @@ -221,9 +229,9 @@ SILC_FSM_STATE(silc_client_st_register_complete) 1, 5, silc_buffer_data(conn->internal->local_idp), silc_buffer_len(conn->internal->local_idp)); - /* Call NICK command if the nickname was set by the application (and is - not same as the username). */ - if (conn->internal->params.nickname && + /* With SILC protocol version 1.2 call NICK command if the nickname was + set by the application. */ + if (conn->internal->params.nickname && conn->internal->remote_version < 13 && !silc_utf8_strcasecmp(conn->internal->params.nickname, client->username)) silc_client_command_call(client, conn, NULL, "NICK", conn->internal->params.nickname, NULL);