+Tue Feb 20 14:14:14 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * The RSA key length is now save to the RsaKey context in the
+ key generation process in lib/silccrypt/rsa.c. The key length
+ is now used to figure out the maximum size of the block allowed
+ to be encrypted/signed.
+
+ * Added silc_mp_mp2bin_noalloc into lib/silcmath/mpbin.[ch]. It
+ is equivalent to the silc_mp_mp2bin but does not allocate any
+ memory.
+
+ * Changed silc_mp_mp2bin API to take length argument. If it is
+ non-zero then the buffer is allocated that large. If zero, then
+ the size is approximated using silc_mp_sizeinbase, which however
+ is not relieable.
+
+Mon Feb 19 19:59:28 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * The client entry's userinfo pointer must be always valid.
+ Otherwise the [<unknown>] bug will surface beacuse the WHOIS
+ will fail since it requires the userinfo. Now, the userinfo
+ is allocated as "" if actual userinfo does not exist. Actually,
+ it must exist and it is totally Ok to drop client connections
+ that does not announce the userinfo. However, we will make
+ this workaround for now.
+
+ * Added silc_net_get_remote_port into lib/silcutil/silcnet.[ch]
+ to return the remote port by socket.
+
+Mon Feb 19 14:26:49 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Changed SILC_SERVER_COMMAND_EXEC_PENDING macro to the name
+ SILC_SERVER_PENDING_EXEC and added an new macro
+ SILC_SERVER_PENDING_DESTRUCTOR which is called to free the
+ data or when error occurs while processing the pending command.
+
+ Added new argument `destructor' into silc_server_command_pending
+ and to the SilcServerCommandPending object. This destructor is
+ now called after calling the pending callback or if error occurs
+ immediately. If error occurs the actual pending callback won't
+ be called at all - only the destructor. The destructor may be
+ NULL if destructor is not needed.
+
+ All this applies for client library code as well. Similar
+ changes were made there as well for the pending commands.
+
+ In the client, the application must now allocate the
+ SilcClientCommandContext with the silc_client_command_alloc
+ function.
+
+ * Added reference counter to the SilcServerCommandContext. Added
+ function silc_server_command_alloc and silc_server_command_dup
+ functions.
+
+ Same type of functions added to the client library for the same
+ purpose as well.
+
+ * Removed the cmd_ident from IDListData away since it is now
+ global for all connections. It is the command identifier used
+ in command sending and with pending commands. The affected file
+ is silcd/idlist.h.
+
+ * Added reference counter to the SilcSocketConnection objecet to
+ indicate the usage count of the object. The object won't be
+ freed untill the reference counter hits zero. Currently only
+ server uses this, and client ignores it. The client must be
+ set to use this too later. The affected files are
+ lib/silccore/silcsockconn.[ch]. Added also the function
+ silc_socket_dup to increase the reference counter.
+
+ This was mainly added because it is possible that the socket
+ is removed underneath of pending command or other async
+ operation. Now it won't be free'd and proper DISCONNECTING
+ flags, etc. can be set to avoid sending data to connection that
+ is not valid anymore.
+
+ * Added SILC_SET_DISCONNECTING to server.c when EOF is read from
+ the connection. After that it sets SILC_SET_DISCONNECTED.
+ It is, however, possible that the socket data is not still freed.
+ The silc_server_packet_process now checks that data is not
+ read or written to connection that is DISCONNECTED. The socket
+ get's freed when the reference counter hits zero.
+
+Mon Feb 19 00:50:57 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Changed the client operation API: channel_message operation's
+ `sender' is now the client entry of the sender, not the nickname
+ and the `channel' is the channel entry, not the channel name.
+
+ In the private_message operation the `sender' is now also the
+ client entry of the sender not the nickname.
+
+ Affected file is lib/silcclient/ops.h and all applications
+ using the client operations.
+
+Sat Feb 17 22:11:50 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Moved the calling of ops->connect() from connect_to_server_final
+ into receive_new_id functin since that is the point when the
+ client is actually allowed to send traffic to network. The
+ affected file is lib/silcclient/client.c.
+
+Sat Feb 17 13:15:35 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * When receiving NEW_CHANNEL_LIST, NEW_CHANNEL_USER_LIST,
+ NEW_ID_LIST and SET_MODE_LIST packets, broadcast the list packet
+ (if needs broadcasting) instead of broadcasting the packets one
+ by one which would make a burst in the network traffic.
+
+ * Added `broadcast' argument to the functions in silcd/server.[ch]
+ silc_server_create_new_channel[_with_id] to indicate whether
+ to send New Channel packet to primary router.
+
+Sat Feb 17 01:06:44 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Added new function into the silcd/server.[ch] files:
+ silc_server_create_new_channel_with_id to create new channel with
+ already existing Channel ID.
+
+ * Added new packet type SILC_PACKET_SET_MODE_LIST into the file
+ lib/silccore/silcpacket.h. This packet is used t send list of
+ Set Mode payloads inside one packet. Server uses this to set
+ the modes for the channels and clients on those channels, that it
+ announced to the router when it connected to it. The protocol
+ specification has been updated accordingly.
+
+ * The silc_server_new_channel did not handle the packet coming
+ from normal server as it normally does not send that. However,
+ when it announces its channels it does send it. Implemented
+ the support for that.
+
+ * Added SILC_ID_CHANNEL_COMPARE macro to compare to Channel ID's
+ into the file lib/silccore/id.h.
+
+Fri Feb 16 23:57:29 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+ * Fixed memory leaks in the functions silc_idlist_del_client,
+ silc_idlist_del_channel and silc_idlist_del_server in the file
+ silcd/idlist.c. All of those leaked like a sieve.
+
+ * Fixed some small memory leaks in the client's function
+ silc_client_notify_by_server.
+
+ * Added functions into silcd/server.c: silc_server_announce_clients,
+ silc_server_announce_channels and silc_server_announce_server.
+ These functions are used by normal and router server to announce
+ to its primary router about clients, channels and servers (when
+ router) that we own. This is done after we've connected to the
+ router.
+
+ These functions effectively implements the following packet types:
+ SILC_PACKET_NEW_CHANNEL_LIST, SILC_PACKET_NEW_CHANNEL_USER_LIST
+ and SILC_PACKET_NEW_ID_LIST.
+
+ * Added new functions into the silcd/packet_receive.[ch]:
+ silc_server_new_id_list, silc_server_new_channel_list and
+ silc_server_new_channel_user_list to handle the incoming
+ NEW_ID_LIST, NEW_CHANNEL_LIST and NEW_CHANNEL_USER_LIST packets.
+
+ * Added support of changing Channel ID in the function
+ silc_server_replace_id. If the server that announces a channel
+ to the router already exists in the router (with same name but
+ with different Channel ID), router is responsible to send
+ Replace ID packet to the server and force the server to change
+ the Channel ID to the one router has.
+
+ * Added new notify type SILC_NOTIFY_TYPE_CHANNEL_CHANGE to notify
+ client that the Channel ID has been changed by the router. The
+ normal server sends this to the client. Client must start using
+ the new Channel ID as the channel's ID.
+
+ Implemented handling of this new type into lib/silcclient/client.c
+ into the function silc_client_notify_by_server.
+
+ * Added new function silc_idlist_replace_channel_id into the files
+ silcd/idlist.[ch] to replace the Channel ID.
+
Fri Feb 16 14:14:00 EET 2001 Pekka Riikonen <priikone@poseidon.pspt.fi>
* Call silc_server_command_identify_check always when processing