</tt>
<br /> <br />
-The first argument 'client' is the SILC Client Library context, the `conn'
-is the context for the connection to the remote server, and the `type' is
-the notify type enumeration sent by the server. Rest of the arguments are
-`type' specific and implementation should handle them by the
-SilcNotifyType for example in a <tt>switch</tt> statement. The notify
-types are defined in lib/silccore/silcnotify.h header file. A short
+The first argument 'client' is the SILC Client Library context, the `conn'
+is the context for the connection to the remote server, and the `type' is
+the notify type enumeration sent by the server. Rest of the arguments are
+`type' specific and implementation should handle them by the
+SilcNotifyType for example in a <tt>switch</tt> statement. The notify
+types are defined in lib/silccore/silcnotify.h header file. A short
example:
<br /> <br />
<b>Arguments</b>
<br /> <br />
-The following table describes all notify types and arguments that the
-client library sends in the 'notify' client operation to the application.
-By default all arguments that the library sends to application are valid
-pointers. However, it is possible that some pointers may be NULL. If
-this is the case it is separately mentioned that the argument may be NULL.
-In this case application must ignore that argument. The SilcNotifyType
+The following table describes all notify types and arguments that the
+client library sends in the 'notify' client operation to the application.
+By default all arguments that the library sends to application are valid
+pointers. However, it is possible that some pointers may be NULL. If
+this is the case it is separately mentioned that the argument may be NULL.
+In this case application must ignore that argument. The SilcNotifyType
arguments per notify type is as follows:
<br /> <br />
<tr>
<td><small>SILC_NOTIFY_TYPE_INVITE</td>
<td><small>
-Sent to the client if the user is invited on a channel. The 'channel_name'
-argument may be NULL.
+Sent to the client if the user is invited on a channel. The 'channel
+argument may be NULL but the `channel_name' is always provided.
</td>
-<td width="50%"><small>SilcClientChannel channel, char *channel_name,
+<td width="50%"><small>SilcChannelEntry channel, char *channel_name,
SilcClientEntry inviter
</td>
</tr>
<tr>
<td><small>SILC_NOTIFY_TYPE_JOIN</td>
<td><small>
-Sent when someone joins to a channel.
+Sent when someone joins to a channel. This is also sent whenever you join
+a channel, in addition of receiving SILC_COMMAND_JOIN command reply.
</td>
<td width="50%"><small>SilcClientEntry joining_client, SilcChannelEntry channel
</td>
<tr>
<td><small>SILC_NOTIFY_TYPE_SIGNOFF</td>
<td><small>
-Sent when someone signoff the SILC network. The 'signoff_message' may be
-NULL. The 'leaving_client' SilcClientEntry may be incomplete and contain
-NULL pointers, application must check it's pointers before attempting to
-display for example nickname information.
+Sent when someone signoff the SILC network. The 'signoff_message' may be
+NULL. The `signoff_client' is the client signing off. The `channel' is
+the channel where the client was joined. The `channel' may be NULL.
</td>
-<td width="50%"><small>SilcClientEntry signoff_client, char *signoff_message
+<td width="50%"><small>SilcClientEntry signoff_client, char
+*signoff_message, SilcChannelEntry channel
</td>
</tr>
<td><small>SILC_NOTIFY_TYPE_TOPIC_SET</td>
<td><small>
Sent when the topic of a channel is set/changed. The 'setter_id_type'
-is used to check what type of pointer the 'setter_entry' is. For
-SILC_ID_CLIENT SilcClientEntry, for SILC_ID_SERVER SilcServerEntry and for
+is used to check what type of pointer the 'setter_entry' is. For
+SILC_ID_CLIENT SilcClientEntry, for SILC_ID_SERVER SilcServerEntry and for
SILC_ID_CHANNEL SilcChannelEntry.
</td>
<td width="50%"><small>SilcIdType setter_id_type, void *setter_entry,
<tr>
<td><small>SILC_NOTIFY_TYPE_NICK_CHANGE</td>
<td><small>
-Sent when someone changes their nickname. The 'old_client_entry' includes
-the old nickname and the 'new_client_entry' includes the new nickname.
-Application must understand that the 'old_client_entry' pointer becomes
-invalid after returning from the function.
+Sent when someone changes their nickname. The 'client_entry' is the client
+whose nickname is changed. The `old_nickname' is the old nickname and the
+`new_nickname' is the new nickname. It has been already updated into the
+`client_entry'.
</td>
-<td width="50%"><small>SilcClientEntry old_client_entry,
-SilcClientEntry new_client_entry
+<td width="50%"><small>SilcClientEntry client_entry, const char *old_nickname,
+const char *new_nickname
</td>
</tr>
<td><small>SILC_NOTIFY_TYPE_CMODE_CHANGE</td>
<td><small>
Sent when channel's mode has changed. The 'changer_id_type'
-is used to check what type of pointer the 'changer_entry' is. For
-SILC_ID_CLIENT SilcClientEntry, for SILC_ID_SERVER SilcServerEntry and for
-SILC_ID_CHANNEL SilcChannelEntry. The 'mode' is the mode mask after the
-change. The 'hmac_name' argument may be NULL.
+is used to check what type of pointer the 'changer_entry' is. For
+SILC_ID_CLIENT SilcClientEntry, for SILC_ID_SERVER SilcServerEntry and for
+SILC_ID_CHANNEL SilcChannelEntry. The 'mode' is the mode mask after the
+change. The `cipher_name' is the cipher set for the channel.
+The `hmac_name' is the HMAC set for the channel. The `passphrase'
+is the passphrase that was set for the channel. The `founder_key' is the
+founder's public key when it was set for the channel. The `channel_pubkeys'
+is a list of SilcArgumentDecodedList contexts each containing one channel
+public key. The library will free the list automatically. The arguments
+'cipher_name', 'hmac_name', 'passphrase', 'founder_key' and 'channel_pubkeys'
+may be NULL.
</td>
<td width="50%"><small>SilcIdType changer_id_type, void *changer_entry,
-SilcUInt32 mode, NULL, char *hmac_name, SilcChannelEntry channel
+SilcUInt32 mode, char *cipher_name, char *hmac_name, char *passphrase,
+SilcPublicKey founder_key, SilcDList channel_pubkeys, SilcChannelEntry channel
</td>
</tr>
<td><small>SILC_NOTIFY_TYPE_CUMODE_CHANGE</td>
<td><small>
Sent when a users mode on a channel has changed. The 'changer_id_type'
-is used to check what type of pointer the 'changer_entry' is. For
-SILC_ID_CLIENT SilcClientEntry, for SILC_ID_SERVER SilcServerEntry and for
+is used to check what type of pointer the 'changer_entry' is. For
+SILC_ID_CLIENT SilcClientEntry, for SILC_ID_SERVER SilcServerEntry and for
SILC_ID_CHANNEL SilcChannelEntry. The 'mode' is the mode mask after the
change. The 'target_client' is the client whose mode was changed.
</td>
<tr>
<td><small>SILC_NOTIFY_TYPE_CHANNEL_CHANGE</td>
<td><small>
-Sent when a channel's Channel ID changes. It is possible that channel's
-ID changes and this notify is sent by the server when this happens.
-Usually application does not need to handle this notify type and may
+Sent when a channel's Channel ID changes. It is possible that channel's
+ID changes and this notify is sent by the server when this happens.
+Usually application does not need to handle this notify type and may
safely ignore it when received.
</td>
<td width="50%"><small>SilcChannelEntry channel
<tr>
<td><small>SILC_NOTIFY_TYPE_SERVER_SIGNOFF</td>
<td><small>
-Sent when a server quits the network. The 'clients' is an array
-SilcClientEntry pointers of size of 'clients_count'. Each client in the
-entry is one client signing off from the SILC network.
+Sent when a server quits the network. The 'clients' is a list of
+SilcClientEntry pointers. Each client in the entry is one client signing
+off from the SILC network. The library will free the list. The `server'
+is the quitting server, and it is NULL if the server isn't cached in the
+client library.
</td>
-<td width="50%"><small>NULL, SilcClientEntry *clients, SilcUInt32 clients_count
+<td width="50%"><small>SilcServerEntry server, SilcDList clients
</td>
</tr>
<tr>
<td><small>SILC_NOTIFY_TYPE_KICKED</td>
<td><small>
-Sent when a client (possibly our client) is kicked from a channel. The
-'kick_message' may be NULL. If our client was kicked then 'kicked' is our
+Sent when a client (possibly our client) is kicked from a channel. The
+'kick_message' may be NULL. If our client was kicked then 'kicked' is our
local SilcClientEntry pointer.
</td>
<td width="50%"><small>SilcClientEntry kicked, char *kick_message,
<tr>
<td><small>SILC_NOTIFY_TYPE_KILLED</td>
<td><small>
-Sent when a client (possibly our client) is killed from the network. The
-'kill_message' may be NULL. If our client was killed then 'killed' is our
-local SilcClientEntry pointer. The 'killer_type' is used to check what
-type of pointer the 'killer' is. For SILC_ID_CLIENT SilcClientEntry, for
+Sent when a client (possibly our client) is killed from the network. The
+'kill_message' may be NULL. If our client was killed then 'killed' is our
+local SilcClientEntry pointer. The 'killer_type' is used to check what
+type of pointer the 'killer' is. For SILC_ID_CLIENT SilcClientEntry, for
SILC_ID_SERVER SilcServerEntry and for SILC_ID_CHANNEL SilcChannelEntry.
</td>
<td width="50%"><small>SilcClientEntry killed, char *kill_message,
<td><small>SILC_NOTIFY_TYPE_ERROR</td>
<td><small>
Sent when an error occurs while handling some operation (except command)
-from the client. Application usually cannot handle this notify type and
+from the client. Application usually cannot handle this notify type and
may safely ignore it.
</td>
<td width="50%"><small>SilcStatus error
<tr>
<td><small>SILC_NOTIFY_TYPE_WATCH</td>
<td><small>
-Sent to notify some status change of a client we are wathing. The
-SILC_COMMAND_WATCH is used to manage clients we are wathing and this
-notify type is used to deliver information about that client. If the
-client just changed nickname the 'new_nickname' includes the new nickname.
-Otherwise this pointer is NULL. The 'user_mode' is the client's mode in
-the SILC network. The 'notification' contains the notify type that
-happened for the 'watched_client' (for example
-SILC_NOTIFY_TYPE_NICK_CHANGE if the client changed their nickname).
+Sent to notify some status change of a client we are wathing. The
+SILC_COMMAND_WATCH is used to manage clients we are wathing and this
+notify type is used to deliver information about that client. If the
+client just changed nickname the 'new_nickname' includes the new nickname.
+Otherwise this pointer is NULL. The 'user_mode' is the client's mode in
+the SILC network. The 'notification' contains the notify type that
+happened for the 'watched_client' (for example
+SILC_NOTIFY_TYPE_NICK_CHANGE if the client changed their nickname). If
+the `new_nickname' is NULL and `notification' is SILC_NOTIFY_TYPE_NONE the
+`watched_client' has just joined the network.
</td>
<td width="50%"><small>SilcClientEntry watched_client, char *new_nickname,
-SilcUInt32 user_mode, SilcNotifyType notification
+SilcUInt32 user_mode, SilcNotifyType notification, SilcPublicKey
+public_key
</td>
</tr>
</table>
<br /> <br />
-SILC protocol defines some additional notify types but those notify types
-are not delivered to the application. Some of those notify types are only
-delivered between servers and routers and clients never receive them.
+SILC protocol defines some additional notify types but those notify types
+are not delivered to the application. Some of those notify types are only
+delivered between servers and routers and clients never receive them.
Only the notify types listed above are delivered to application.