<tt>
void (*command_reply)(SilcClient client, SilcClientConnection conn,<br />
-
-SilcCommandPayload cmd_payload, bool success, SilcCommand command,<br />
-
-SilcStatus status, ...);
+ SilcCommand command, SilcStatus status,<br />
+ SilcStatus error, va_list ap);
</tt>
<br /> <br />
SilcChannelPayload. If the `channel_usermodes' is valid then the table
has as many entries as there are entries in the `channels' list, and the
first entry in the table is the user mode on the first channel in the
-`channels' list. The `channel_usermodes' is the table of the user's mdoes
-no the joined channels. The 'attr' is the Requested Attributes that may
+`channels' list. The `channel_usermodes' is the table of the user's modes
+on the joined channels. The 'attr' is the Requested Attributes that may
have been returned by the client and it can be parsed by traversing the
SilcDList and using silc_attribute_get_attribute function. Each entry in
the list is SilcAttribute.
<td><small>
Returns the new Client ID and new nickname inside the SilcClientEntry.
The `old_client_id' is the old Client ID used by the client before the
-nickname was changed.
+nickname was changed. The `nickname' is the new nickname. Note that,
+when user changes nickname SILC_NOTIFY_TYPE_NICK_CHANGE is not delivered
+to application. Instead this SILC_COMMAND_NICK command reply is delivered.
</td>
<td width="50%"><small>SilcClientEntry local_entry, char *nickname,
const SilcClientID *old_client_id
Returns the invite list of the channel. Called also even if invite list
was not modified but SILC_COMMAND_INVITE command was used to invite a user
into a channel. In this case the invite list is not returned by the
-server and 'invite_list' is NULL. The 'invite_list' is list of
-SilcArgumentPayloads. The first 2 bytes are the number of arguments in
-the list and can be parsed with SILC_GET16_MSB macro. The list can be
-parsed with silc_argument_payload_parse function.
+server and 'invite_list' is NULL. The 'invite_list' is SilcArgumenPayload
+which contains one or more arguments, each is one invite list entry. The
+entries can be retrieved with silc_argument_get_first_arg,
+silc_argument_get_next_arg, silc_argument_get_arg_type and
+silc_argument_get_decoded functions.
</td>
-<td width="50%"><small>SilcChannelEntry channel, SilcBuffer invite_list
+<td width="50%"><small>SilcChannelEntry channel,
+SilcArgumentPayload invite_list
</td>
</tr>
<td><small>
Called after killing a client. Returns the client that was killed.
The `client_entry' may be NULL. The `client_entry' will become invalid
-after the command reply has returned from application.
+after the command reply has returned from application. The
+SILC_NOTIFY_TYPE_KILLED will not be delivered for clients that you killed.
</td>
<td width="50%"><small>SilcClientEntry client_entry
</td>
<tr>
<td><small>SILC_COMMAND_JOIN</td>
<td><small>
-Reply received when user joined a channel. The 'ignored' argument can
-be ignored by the application. The 'topic' and 'hmac_name' may be NULL.
-The 'key_payload' is usually ignored by the application. The 'list_count'
-is the number of entries in both 'client_id_list' and 'client_mode_list'.
-The 'client_id_list' is a list of clients on the channel and 'client_mode_list'
-includes those clients' modes on the channel. If application likes to
-resolve information about the clients on the channel it may call
-silc_client_get_clients_by_list function and pass the 'client_id_list' as
-argument to it. The 'client_mode_list' includes 32-bit integers one after
-the other and they are in same order as clients in 'client_mode_list'.
-If application resolves the information with silc_client_get_clients_by_list
-parsing the 'client_mode_list' is not necessary. The 'founder_key' is the
-channel founder's key and may be NULL. The 'channel_pubkeys' is Argument
-List Payload containing Public Key Payloads of all added channel public
-keys, it may be NULL.
+Reply received when user joined a channel. The `channel_mode' contains
+the current channel mode. The `user_list' is the user list on the channel
+and may be traversed with silc_hash_table_get function. Each entry in the
+`user_list' is SilcChannelUser structure, which contains the SilcClientEntry
+and the client's mode on the channel. The library will free the list.
+The `topic' is the current topic on channel or NULL if no topic is set.
+The `cipher' is the encryption algorithm used on channel or NULL if it is
+not available. The `hmac' is the HMAC algorithm used on channel or NULL if
+it is not available. The `founder_key' is the channel founder's public key
+or NULL if founder public key has not been set. The `channel_pubkeys' is
+a list of channel public keys (for authentication on joining) or NULL if
+they have not been set. Each entry in the list is SilcArgumentDecodedList
+each containing one channel SilcPublicKey. The library will free the list.
</td>
<td width="50%"><small>char *channel_name, SilcChannelEntry channel,
-SilcUInt32 channel_mode, int ignored, SilcBuffer key_payload, NULL, NULL,
-char *topic, char *hmac_name, SilcUInt32 list_count, SilcBuffer client_id_list,
-SilcBuffer client_mode_list, SilcPublicKey founder_key,
-SilcBuffer channel_pubkeys, SilcUint32 user_limit
+SilcUInt32 channel_mode, SilcHashTableList *user_list, char *topic,
+char *cipher, char *hmac, SilcPublicKey founder_key,
+SilcDList channel_pubkeys, SilcUint32 user_limit
</td>
</tr>
public key list when the list was altered. The 'founder_key' and
'channel_pubkeys' arguments may be NULL. The 'channel_pubkeys' is a list
of SilcArgumentDecodedList contexts which each contain one channel public
-key. The library will automatically free the list.
+key. The library will automatically free the list. If the `founder_key'
+was present it will be updated to `channel' entry by the library after
+calling the command_reply callback. Application may check if the `founder_key'
+is different from the key in `channel' entry to detect if it was changed.
</td>
<td width="50%"><small>SilcChannelEntry channel, SilcUInt32 mode,
SilcPublicKey founder_key, SilcDList channel_pubkeys, SilcUint32 user_limit
of that list is equivalent to invite list. See description of
SILC_COMMAND_INVITE command reply.
</td>
-<td width="50%"><small>SilcChannelEntry channel, SilcBuffer ban_list
+<td width="50%"><small>SilcChannelEntry channel, SilcArgumentPayload ban_list
</td>
</tr>
<tr>
<td><small>SILC_COMMAND_DETACH</td>
<td><small>
-Called after being detached from the SILC network. There is no arguments
-to this reply.
+Called after being detached from the SILC network. The command reply delivers
+the detachment data buffer `detach_data' that the application should save
+for example into a file. The data will be needed when resuming back to
+the network. When resuming the data is saved into SilcClientConnectionParams
+structure and given as argument to silc_client_connect_to_server or
+silc_client_key_exchange functions.
</td>
-<td width="50%"><small>none
+<td width="50%"><small>SilcBuffer detach_data
</td>
</tr>
SilcChannelUser structure, which contains the SilcClientEntry and the
client's mode on the channel.
</td>
-<td width="50%"><small>SilcChannelEntry channel, SilcHashTableList user_list
+<td width="50%"><small>SilcChannelEntry channel, SilcHashTableList *user_list
</td>
</tr>