+static void silc_client_command_reply_users_i_cb(SilcClient client,
+ SilcClientConnection conn,
+ SilcChannelEntry *channels,
+ SilcUInt32 channels_count,
+ void *context)
+{
+ if (!channels_count) {
+ SilcClientCommandReplyContext cmd = (SilcClientCommandReplyContext)context;
+ SilcClientConnection conn = (SilcClientConnection)cmd->sock->user_data;
+
+ cmd->status = cmd->error = SILC_STATUS_ERR_NO_SUCH_CHANNEL;
+ SAY(cmd->client, conn, SILC_CLIENT_MESSAGE_ERROR,
+ "%s", silc_client_command_status_message(cmd->error));
+ COMMAND_REPLY_ERROR;
+ SILC_CLIENT_PENDING_EXEC(cmd, SILC_COMMAND_USERS);
+ silc_client_command_reply_free(cmd);
+ return;
+ }
+
+ silc_client_command_reply_users_i(context, NULL);
+}
+
+SILC_CLIENT_CMD_REPLY_FUNC(users_i)
+{
+ SilcClientCommandReplyContext cmd = (SilcClientCommandReplyContext)context;
+
+ SILC_LOG_DEBUG(("Start"));
+
+ if (cmd->error != SILC_STATUS_OK)
+ goto out;
+
+ /* Save USERS info */
+ if (silc_client_command_reply_users_save(
+ cmd, cmd->status, FALSE,
+ silc_client_command_reply_users_i_cb,
+ silc_client_command_reply_users_i))
+ return;
+
+ out:
+ SILC_CLIENT_PENDING_EXEC(cmd, SILC_COMMAND_USERS);
+
+ /* Unregister this command reply */
+ silc_client_command_unregister(cmd->client, SILC_COMMAND_USERS,
+ NULL, silc_client_command_reply_users_i,
+ cmd->ident);
+
+ silc_client_command_reply_free(cmd);
+}