SILC_LOG_DEBUG(("Start"));
/* Get command reply payload from packet */
- payload = silc_command_payload_parse(buffer);
+ payload = silc_command_payload_parse(buffer->data, buffer->len);
if (!payload) {
/* Silently ignore bad reply packet */
SILC_LOG_DEBUG(("Bad command reply packet"));
SilcServer server = cmd->server;
unsigned char *tmp, *id_data;
char *nickname, *username, *realname, *servername = NULL;
+ unsigned char *fingerprint;
SilcClientID *client_id;
SilcClientEntry client;
char global = FALSE;
char *nick;
- uint32 mode = 0, len, id_len;
+ uint32 mode = 0, len, id_len, flen;
id_data = silc_argument_get_arg_type(cmd->args, 2, &id_len);
nickname = silc_argument_get_arg_type(cmd->args, 3, &len);
if (!client_id)
return FALSE;
+ fingerprint = silc_argument_get_arg_type(cmd->args, 9, &flen);
+
/* Check if we have this client cached already. */
client = silc_idlist_find_client_by_id(server->local_list, client_id,
silc_free(client_id);
}
+ if (fingerprint && flen == sizeof(client->data.fingerprint))
+ memcpy(client->data.fingerprint, fingerprint, flen);
+
return TRUE;
}
id_data = silc_argument_get_arg_type(cmd->args, 2, &id_len);
if (!id_data)
return FALSE;
- idp = silc_id_payload_parse_data(id_data, id_len);
+ idp = silc_id_payload_parse(id_data, id_len);
if (!idp)
return FALSE;
tmp = silc_argument_get_arg_type(cmd->args, 2, &len);
if (!tmp)
goto out;
- idp = silc_id_payload_parse_data(tmp, len);
+ idp = silc_id_payload_parse(tmp, len);
if (!idp)
goto out;
}
out:
- SILC_SERVER_PENDING_EXEC(cmd, SILC_COMMAND_GETKEY);
- SILC_SERVER_PENDING_DESTRUCTOR(cmd, SILC_COMMAND_GETKEY);
+ SILC_SERVER_PENDING_EXEC(cmd, SILC_COMMAND_LIST);
+ SILC_SERVER_PENDING_DESTRUCTOR(cmd, SILC_COMMAND_LIST);
silc_free(channel_id);
silc_server_command_reply_free(cmd);
}