updates.
[silc.git] / CHANGES
diff --git a/CHANGES b/CHANGES
index 3744d0732d0bde25ca09d1906b48f6c3e1c73bc8..381095ccae8229d7ae435a9c644d0fd1b081a406 100644 (file)
--- a/CHANGES
+++ b/CHANGES
+Sun Oct  7 12:29:25 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Sleep two (2) seconds after sending QUIT command to server.
+         Affected file lib/silcclient/command.c.
+
+       * Assure that if outgoing data buffer is pending do not force
+         send any data.  Affected file silcd/packet_send.c.
+
+       * Assure that if outgoing data buffer is pending do not force
+         send any data.  Affected file lib/silcclient/client.c.
+
+       * Implemented the backup router support when the primary router
+         goes down.  The servers and routers can now use the backup
+         router as new primary router without loosing connectivity.
+
+Sat Oct  6 21:18:54 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Added new SILC_IDLIST_STATUS_DISABLED flag for entries
+         in the server to indicate disabled entry.  All data read
+         from the connection will be ignored and no data is sent
+         for entry that is disabled.  Affected files are
+         silcd/idlist.h, silcd/server.c.
+
+Fri Oct  5 00:03:29 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Created SFTP client and server test programs in the
+         lib/silcsftp/tests directory.
+
+Wed Oct  3 23:31:42 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Implemented memory filesystem (virtual filesystem) for
+         SFTP server.  Affected file lib/silcsftp/silcsftp_fs.h,
+         sftp_fs_memory.c.
+
+Sun Sep 30 22:10:57 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Implemented the SFTP (SSH File Transfer Protocol) to the
+         lib/silcsftp.  It includes SFTP client and SFTP server
+         implementations.
+
+Sun Sep 30 10:35:44 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Moved lib/silccore/silcprotocol.[ch] to the
+         lib/silcutil library.
+
+       * Added silc_buffer_format_vp and silc_buffer_unformat_vp to
+         take variable argument list pointer as argument.  Affected
+         file lib/silcutil/silcbuffmt.[ch].
+
+       * Added silc_buffer_set function that is used to set data
+         to a SilcBuffer that is not allocated at all (SilcBufferStruct).
+         Affected file lib/silcutil/silcbuffer.h.
+
+       * Changed various routines in the core library to use the new
+         silc_buffer_set instead of allocating new buffer only for
+         temporary purposes.
+
+       * Added 64-bit value formatting and unformatting support to the
+         silc_buffer_[un]format routines.  Affected file is
+         lib/silcutil/silcbuffmt.[ch].
+
+         Added also 64-bit macros: SILC_GET64_MSB and SILC_PUT64_MSB,
+         to includes/bitmove.h.
+
+Fri Sep 28 21:30:10 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Fixed channel user mode saving in client library.  Affected
+         file lib/silcclient/command[_reply].c.
+
+Thu Sep 27 22:52:30 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Defined the file transfer to the SILC Protocol.  Added
+         new packet type SILC_PACKET_FTP and defined File Transfer
+         Payload.  The mandatory file transfer protocol is SFTP
+         (SSH File Transfer Protocol).  Affected file in addition
+         of the internet draft is lib/silccore/silcpacket.h.
+
+       * Deprecated the SILC_PACKET_CELL_ROUTERS and defined new 
+         packet SILC_PACKET_RESUME_ROUTER instead.  The new packet
+         is used as part of backup router protocol when the primary
+         router of the cell is back online and wishes to resume
+         the position as primary router.
+
+       * Redefined the MAC generation keys in the protocol.  The
+         same key is not used anymore in both direction.  Both
+         direction will now use different keys for sending and
+         receiving.  This fixes a potential security flaw.  This
+         change causes incompatibilities in the protocol.
+
+       * Redefined also the MAC computation from the packet.
+         An packet sequence number is now added to the MAC 
+         computation.  This prevents possible replay attacks against
+         the protocol.  This change too causes incompatibilities
+         in the protocol.
+
+         Added `sequence' field to the SilcPacketContext to hold
+         the current sequence number for the packet.
+
+Wed Sep 26 20:15:22 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Added `created' field to the SilcIDListData in the file
+         silcd/idlist.h to indicate the time when the entry was
+         created.
+
+       * Added `created' field to the SilcChannelEntry too.  Affected
+         file silcd/idlist.h.
+
+       * Added `creation_time' aguments to all the announcement functions
+         in the server.  If it is provided then only the entries that
+         was created after the provided time frame are actually
+         announced.  Affected file silcd/server.[ch].
+
+       * The protocol says that the Channel ID's IP address must be
+         based on the router's IP address.  Added check for this in
+         the silc_server_new_channel when processing incoming New Channel
+         Payload.  Affected file silcd/packet_receive.c.
+
+       * Print out the correct version with --version in SILC client.
+         Affected file irssi/src/silc/core/silc-core.c.
+
+Mon Sep 24 17:19:00 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Fixed WHOWAS command to check for completnes of the client
+         entry always, not just when the command is coming from client.
+         Affected file silcd/command.c.
+
+       * Added new function silc_server_packet_queue_purge to purge the
+         outgoing data queue to the network.  After the function returns
+         it is guaranteed that the outgoing packet queue is empty.
+         Affected file silcd/packet_send.[ch].
+
+       * Purge the outgoing packet queue in the rekey protocol's final
+         callback to assure that all rekey packets go to the network
+         before quitting the protocol.  Affected file silcd/server.c.
+
+       * Added silc_client_packet_queue_parse as similar function as
+         in server to the client library.  The affected file is
+         lib/silcclient/client.c.
+
+Sun Sep 23 15:15:53 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Splitted silcd/server.c and created silcd/server_util.[ch]
+         for utility functions.
+
+       * Added new socket flag SILC_SF_DISABLED to indicate that the
+         connection is open but nothing can be sent to or received from
+         the connection.  Affected file lib/silcutil/silsockconn.[ch].
+         The checking for disabled socket is checked in the low level
+         silc_socket_write and silc_socket_read functions.
+
+Thu Sep 20 23:11:28 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Allow only nicknames and channel names that fits into the
+         7-bit unsigned char ASCII set.  Affected file silcd/command.c.
+
+Thu Sep 20 18:04:12 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * When processing JOIN command reply in server check that if
+         the channel exists in our global list we'll move it the local
+         list.  Affected file silcd/command_reply.c.
+
+       * Fixed the check whether client is joined on the channel already
+         in JOIN command.  Affected file lib/silcclient/command.c.
+
+       * Fixed the JOIN command reply to check whether the channel
+         already exists.  Affected file lib/silcclient/command_reply.c.
+
+Wed Sep 19 22:58:32 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Added silc_ske_status_string to map the SKE error numbers
+         to readable strings.  The affected files are
+         lib/silcske/silcske[_status].[ch].
+
+Tue Sep 18 22:50:41 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Do not show the private channels on the WHOIS channel list
+         as it is not allowed by the protocol.  The affected file is
+         silcd/server.c.
+
+Sun Sep 16 12:32:58 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Assure that the packet length digged from the actual packet
+         is something sensible in the silc_packet_decrypt_rest_special
+         in lib/silccrypt/silcpacket.c.
+
+       * Free and NULL the allocated pointer in silc_hmac_alloc if
+         the HMAC allocation fails.  The affected file is
+         lib/silccrypt/silchmac.c.
+
+       * Print the selected security properties to the log files in
+         the server.  Affected file silcd/protocol.c.
+
+       * Add SKE's reference counter even if calling the completion
+         callback manually.  Otherwise it goes negative, although it
+         does not cause any problems.  The affected file is
+         lib/silcske/silcske.c.
+
+       * Remove the client entry with short timeout after giving the
+         KILL command.  Affected file lib/silcclient/command.c.
+
+       * Fixed to send error reply in WHOIS and IDENTIFY commands in
+         case all found clients are already disconnected (WHOWAS would
+         found them) in the server.  Affected file silcd/command.c.
+
+       * Update the last_receive (time of last data received) to be 
+         updated only when received private or channel message so that
+         the idle time showed in WHOIS makes more sense.
+
+       * Added boolean field `valid' in to the SilcClientEntry in the
+         client library to indicate whether the entry is valid or not.
+         This fixes the nickname change bug on channel when changing
+         the nickname to be same than the old (like nick to Nick) the
+         nickname formatter doesn't set the new nick anymore to Nick@host.
+         Affected file lib/silcclient/idlist.[ch].
+
+       * Now actually fixed the nickname changing on disconnection.
+         Added new function silc_change_nick to the Irssi SILC Client.
+         Affected file irssi/src/silc/core/client_ops.c,
+         irssi/src/silc/core/silc-nicklist.[ch].
+
+Sat Sep 15 13:29:17 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Check that the public key exists in the GETKEY command before
+         trying to encode it.  Affected file silcd/command.c.
+
+       * Print some notifications on received public keys with GETKEY
+         command in the Irssi SILC Client.  Affected files are
+         irssi/src/fe-common/silc/module-formats.[ch],
+         irssi/src/silc/core/client_ops.c.
+
+       * Use IDENTIFY command to resolve the server information in the
+         GETKEY command instead of INFO command.  Affected file
+         lib/silcclient/command.c.
+
+       * All command reply functions in the client library now calls
+         the pending command reply callbacks even if an error has
+         occurred.  The server has done this a long time and now it was
+         time to move the client library to this as well.  Now all
+         errors can be delivered back to the pending command reply
+         callbacks if necessary.  Affected files are
+         lib/silcclient/command[_reply].[ch].
+
+       * Change the nickname on disconnection back to the username
+         because in reconnect the server will enforce it to it anyway.
+         Affected file irssi/src/silc/core/silc-servers.c.
+
+       * Fixed a config file parsing bug in the Irssi SILC client.
+         Affected file irssi/src/silc/core/clientconfig.c.
+
+Thu Sep 13 23:11:18 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * When printing the channel mode on JOIN, verify that the
+         channel key and channel's HMAC are valid.  Affected file
+         irssi/src/silc/core/client_ops.c.
+
+Thu Sep 13 20:24:52 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Added defines SILC_DEFAULT_CIPHER, SILC_DEFAULT_HMAC,
+         SILC_DEFAULT_HASH and SILC_DEFAULT_PKCS in the file
+         lib/silccrypt/[silccipher.h|silchmac.h|silchash.h|silcpkcs.h].
+
+       * Removed channel key rekey task deleting from the function
+         silc_server_save_channel_key.  Affected file silcd/server.c.
+         Added explicit timeout task context instead that is used to   
+         delete the task if we are registering a new task before the
+         new task has elapsed.
+
+       * When channel key rekey occurs the client library now saves
+         the old channel key for a short period of time (10 seconds) and
+         is able to use it in case some is still sending channel
+         messages encrypted with the old key after the rekey.  Affected
+         file lib/silcclient/[idlist.h|client_channel.c].
+
+Sun Sep  9 15:49:16 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Added check to the silc_server_new_id_real to not accept
+         new ID if it is the sender's own ID.  Affected file is
+         silcd/packet_receive.c.
+
+       * Assure that we do not announce ourself or the one we've
+         sending our announcements when we're router and are announcing
+         servers to our primary router.  Affected file silcd/server.c.
+
+       * Fixed silc_server_command_identify_check_client to assemble
+         correct WHOIS packet.  It send corrupted WHOIS packet and
+         caused problem with router to router connections.  Affected
+         file silcd/command.c.
+
+         Fixed also silc_server_command_whois_check the same way
+         as for the IDENTIFY command.
+
+       * Added new SilcIDListStatus to the server in the SilcIDListData
+         structure.   The status now includes the current status of
+         the entry (like registered, resolved etc.).  Affected file
+         silcd/idlist.[ch].  Defined a bunch of different status types
+         as well.  This replaced the old boolean registered field as well.
+
+         Added resolve_cmd_ident field to the SilcClientEntry structure
+         too so that if the entry is for example being resolved so 
+         another command may attach to the same pending command reply
+         without requiring to resolve the same entry again.  This concept
+         should optimize the WHOIS and the IDENTIFY resolving under
+         heavy load by taking away unnecessary resolving for entries
+         that are being resolved already.
+
+         Added support for adding multiple pending commands for one
+         command idenfier.  Affected file silcd/command[_reply].[ch].
+
+       * Fixed WHOIS and IDENTIFY save to remove the cache entry
+         before deleting the data.  Otherwise the hash table will have
+         freed data in comparison functions.  Affected file is
+         silcd/command_reply.c.
+
+       * Fixed silc_idlist_replace_client_id to add the new entry to
+         the cache with NULL nickname.  Otherwise there will be invalid
+         memory as the nickname after the nickname is freed.  Affected
+         file silcd/packet_receive.c.
+
+       * Fixed the silc_idlist_get_clients_by_hash.  The entries was
+         saved into wrong slots because the previous number of entries
+         was not taken into account.  Affected file silcd/idlist.c.
+         Fixed same thing in silc_idlist_get_clients_by_nickname too.
+
+       * If we are router and we receive JOIN notify to a channel that
+         does not have any users then notified client is marked as the
+         channel founder, as it is it.  The affected file is
+         silcd/packet_receive.c
+
+       * Added to the extended hash table API's table_del_*ext functions
+         the destructor as argument too, so that the caller can decide
+         which destructor to use or whether to use destructor at all.
+         Affected file lib/silcutil/silchashtable.[ch].
+
+       * Fixed ID Cache purging.  It actually deleted the entries from
+         the hash table after the data was freed.  The hash table ended
+         up comparing freed memory.  The affected file is
+         lib/silccore/silcidcache.c.
+
+Sat Sep  8 10:22:10 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Fixed Irssi SILC client's KILL command's HELP syntax.
+
+       * The USERS command now resolves the detailed user information
+         if the userinfo field is missing.  Affected file is
+         lib/silcclient/command_reply.c.
+
+       * Do not print error in silc_file_read if the read file does
+         not exist.  Just silently return NULL.  Affected file is
+         lib/silcutil/silcutil.c.
+
+       * Fixed the silc_log_output to not wine about NULL filename
+         and to not create some bogus " " filename.  Affected file is
+         lib/silcutil/silclog.c.
+
+Fri Sep  7 22:16:38 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Fixed various printing bugs on the user interface in the
+         Irssi SILC Client.  Minor changes that were forgotten from
+         the release.
+
+Fri Sep  7 17:28:37 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Fixed the configure.in.pre and the compilation and distribution
+         environment to support the new autoconf 2.52.  That version is
+         now required to compile the CVS trunk.
+
+Thu Sep  6 12:47:37 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Renamed function silc_parse_nickname to silc_parse_userfqdn
+         to generally parse user@fqdn format strings.  Affected file
+         lib/silcutil/silcutil.c.
+
+       * Added nickname_format and nickname_force_format fields to the
+         SilcClientParams structure.  The first one defines the format
+         for the nicknames that the library will enforce if the receives
+         multiple same nicknames.  The second one is boolean value and
+         can be used to force the library to always enforce the format
+         to the nicknames regardles whether there are multiple nicknames
+         or not.  This configurable formatting was employed to flexibly
+         support accessing multiple nicknames from the user interface.
+         The userinterface can now set the nicknames to what ever format
+         they prefer.  Affected file lib/silcclient/silcapi.h.
+
+         Added function silc_client_nickname_format to the file
+         lib/silcclient/idlist.c.  It performs the nickname formatting.
+
+         Added new field `hostname´ to the SilcClientEntry context.
+         It holds the hostname of the client.  Affected file is
+         lib/silcclient/idlist.h.
+
+       * Irssi SILC Client sets the nicknames in nick@hostn format.
+         Fe. priikone@otaku, priikone@otaku2 etc.  Affected file
+         irssi/src/silc/core/silc-core.c.
+
+         The WHOIS printing now also shows both the real nickname and
+         the formatted nickname so that user knows how to access the
+         user if there are multiple same nicknames cached.  Affected
+         file irssi/src/silc/core/client_ops.c.  Changed the WHOIS
+         printing formatting too to take the hostname now as a separate
+         argument.  The Affected file is
+         irssi/src/fe-common/silc/modules-formats.[ch].
+
+       * Changed the silc_client_get_clients_local to accept the formatted
+         nickname as argument.  It accepts the real nickname too but the
+         formatted nickname can be used to find the true entry from 
+         multiple entries.  Affected file lib/silcclient/silcapi.h and
+         lib/silcclient/idlist.c.
+
+       * Added nickname_format_parse field to the SilcClientParams.
+         It is a callback function provided by the application to parse
+         the nickname out of the formatted nickname string. The library
+         calls it to get the nickname from the formatted string. Since
+         the application generally knows better the format of the nickname
+         string it parses it instead of the library, even though library
+         encodes the formatted string.  If the callback function is not
+         provided then the library will use the string as is.  The
+         affected file is lib/silcclient/silcapi.h.
+
+       * All the nickname strings passed to the client library in 
+         commands are now expected to be formatted nickname strings.
+         If the command does not support the formatted nickname string
+         it will assume that the sent string is the actual nickname.
+         Affected file lib/silcclient/command.c.
+
+Tue Sep  4 22:31:28 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Added public key authentication support to OPER and SILCOPER
+         commands in the client library.  Affected file is
+         lib/silcclient/command.c.
+
+Tue Sep  4 12:39:17 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Changed the get_auth_methdod client operation to be asynchronous.
+         It can be async if the application resolves the authentication
+         method from the server during the negotiation.  Added new
+         SilcGetAuthMeth completion callback that the application will
+         call after resolving the authentication method.
+
+         Added function silc_client_request_authentication_method that
+         the application can use to resolve the authentication method
+         from the server.  Added also SilcConnectionAuthRequest callback
+         that the library will call after the server has replied.  The
+         application can call this function if it does not know the
+         current authentication method.
+
+         Affected files are lib/silcclient/client.c and 
+         lib/silcclient/silcapi.h.
+
+       * The Irssi SILC client now automatically resolves the authentication
+         method incase any configuration information is not present (and
+         currently there never is).  The affected file is
+         irssi/src/silc/core/client_ops.c.
+
+       * Fixed public key authentication from the client library.
+         Affected file lib/silcclient/protocol.c.  Changed also the
+         protocol specification about the public key authentication in
+         the connection authentication protocol.  The actual data to be
+         signed is now computed with a hash function before signing.
+
+       * Fixed the public key authentication from the server as well.
+         Affected file silcd/protocol.c.
+
+       * Removed the mlock()'s from the memory allocation routines.
+         Affected file lib/silcutil/silcmemory.c.  The ./configure does
+         not check anymore for the mlock().  Affected file is
+         configure.in.pre.
+
+       * Fixed USERS command in server to allow the execution of the
+         command for private and secret channels if the client sending
+         the command is on the channel.  Affected file silcd/command.c.
+
+       * Fixed silc_client_get_clients_local to return the clients
+         count correctly.  It could return wrong value.  Affected file
+         lib/silcclient/idlist.c.
+
+Mon Sep  3 20:09:59 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Fixed the lib/silcmath/mpi/mpi.h to always use 32-bit data
+         types.  The assembler optimizations seemed not to like 64-bit
+         data types.  The assmebler optimizations thus are now enabled
+         also for BSD systems as opposed to only enable them for Linux.
+
+       * Do not check for threads at all on BSD systems.  Affected
+         file configure.in.pre.
+
+       * Removed -n and -h options from the Irssi SILC Client since
+         they are not used in silc.
+
+       * Fixed the prime generation to assure that the first digit
+         of the generated random number is not zero since our conversion
+         routines does not like number strings that starts with zero
+         digit.  If zero digit is seen the random number is regenerated.
+         This caused some corrupted RSA keys when the zero first digit
+         was met.  Affected file lib/silcmath/silcprimegen.c.
+
+Sun Sep  2 17:17:24 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Fixed WIN32 configuration in the ./configure script.
+         Fixed to include xti.h on environments that has it.
+         Patches by Carsten Ilchmann and andrew.
+
+Sat Sep  1 00:29:33 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Changed the silc_id_create_client_id to be collision
+         resistant.  It is now assured that there cannot be created
+         two same client ID's.  I suspect that some weird bugs in 
+         the server were actually caused by duplicate Client IDs.
+         Affected file silcd/serverid.[ch].  A router receiving
+         new ID now also assures and informs the sending server
+         if the ID caused collision.
+
+       * Changed the silc_id_create_channel_id to also assure that
+         there are no collisions.
+
+Wed Aug 29 17:55:01 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Statement about ignoring the Mutual Authentication flag when
+         performing rekey with PFS was a bit misleading.  It is ignored
+         if it was set in the initial negotiation, it cannot be even
+         set in the rekey.  Fixed in the ke-auth draft.  Started the
+         new versions of the protocol drafts in the doc/.
+
+Sun Aug 26 14:59:15 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Fixed a bug in silc_client_command_identify_save when saving
+         new channel information.  The channel name was no duplicated
+         and caused crash on exit.  Affected file is
+         lib/silcclient/command_reply.c.
+
+Fri Aug 17 23:07:45 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Fixed the getkey command handling in the server.  Send just
+         empty OK reply to the sender if the key could not be fetched
+         (but everything else was ok, like the key just was not available).
+         Changed the public key parameter to optional in the protocol
+         specs so that empty OK reply can be sent.  Affected file
+         silcd/command.c.
+
+         Added a message to Irssi SILC client to tell to user if the
+         server did not return a public key.
+
+Tue Aug 14 07:29:27 CEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Fixed a channel key regeneration bug.  It registered new
+         timeout tasks exponentially until all system resources were
+         used.  Affected file silcd/server.c.
+
+Sun Aug 12 20:48:14 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Added the SILC Document generator to the scripts/silcdoc.
+         It can be used to generate the Toolkit Reference Manual out
+         of the source tree.  Internally it will also use the RoboDoc
+         generator now imported in util/robodoc.
+
+Sun Aug 12 12:28:17 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Added couple of return's in rekey protocol if error orccurred
+         during the protocol.  The execution must be terminated.
+         Affected file silcd/protocol.c.  Also, terminate the protocol
+         always with timeout.
+
+Sat Aug 11 12:36:02 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * The client's Client ID was created initally from the wrong
+         nickname (it could have been in format nick@host) in the
+         silc_server_new_client.  Affected file silcd/packet_receive.c
+
+Sat Aug 11 00:29:57 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Added some SILC_LOG_ERROR's to various error conditions
+         if client could not be added to ID cache.  Affected files
+         silcd/packet_receive.c and silcd/server.c.
+
+       * When client's sock->user_data is freed, NULL also the 
+         client->router and client->connection pointers.  Added check
+         for these pointers being NULL to various places around the
+         code.  Affected file silcd/server.c.
+
+       * Added client->data.registered == TRUE checks to various
+         places around the code to assure that unregistered client's
+         are not handled when it is not allowed.  Affected file
+         silcd/server.c.
+
+       * Added `bool registered' fields to all 
+         silc_idlist_[server|client]_get_* routines to indicate whether
+         the fetched client needs to be registered or not.  Affected
+         file silcd/idlist.[ch].
+
+       * Add your own entry as registered to the ID cache in the
+         server.  Affected file server.c.
+
+       * Fixed a bug in silc_server_new_server.  The SilcServer was
+         set as the new server's context instead of SilcServerEntry.
+         This naturally caused some weird bugs.
+
+Thu Aug  9 18:28:37 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Do not delete the channel rekey task when adding it
+         for in silc_server_create_channel_key.
+
+       * Changed the silc_server_create_channel_key to return
+         TRUE or FALSE to indicate the success of the channel key
+         creation.
+
+Thu Jul 26 11:32:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Fixed MSVC++ project files and added missing files to
+         Makefiles under win32/.
+
+Wed Jul 25 18:43:54 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Do not add TCP_NODELAY flag if the operating system
+         does not have it defined.  Affected files are
+         lib/silcutil/[unix/win32]/silc[unix/win32]net.c.
+
+       * Fixed buffer overflow from Irssi SILC Client.  Affected
+         file irssi/src/fe-common/core/themes.c.
+
+       * Fixed double free in client library in the file
+         lib/silcclient/client.c when disconnecting from server.
+
+       * Applied double free patch from cras to Irssi SILC client.
+         Affected files irssi/src/core/[modules/expandos].c
+
+       * Fixed the disconnection handling to Irssi SILC Client.
+         The application must call silc_client_close_connection
+         in ops->connect client operation in case of failure of
+         the connection.  Affected file is
+         irssi/src/silc/core/client_ops.c.
+
+       * Do not set sock->protocol to NULL in the function
+         silc_client_close_connection after executing the protocol's
+         final callback since the sock might not be valid anymore.
+         Affected file lib/silcclient/client.c.
+
+Wed Jul 25 16:04:35 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Do not enable SILC_THREADS if the linking with libpthread
+         did not happen.  Affected file configure.in.pre.
+
+       * Added notion to protocol specification that server must
+         verify the sent authentication payload with CMODE when
+         setting the channel founder key.  Implemented it to the
+         server.  Affected file silcd/command.c.
+
+Mon Jul 23 18:31:43 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Added _EXTRA_DIST SILC distribution variable to the
+         distributions file.  It is used to conditionally add extra
+         files or directories to the specific distribution.  Affected
+         files ./prepare, Makefile.am.pre and distributions.
+
+         Removed the `_' from the start of the distribution names.
+         It is redundant.
+
+       * Added README.WIN32 for instructions to compile the Toolkit
+         under WIN32.
+
+Mon Jul 23 10:12:37 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Fixed a double free in disconnection in the server.  Affected
+         file is silcd/server.c.
+
+       * Fixed the lib/silcske/groups.c to work now also with GMP
+         MP library.  The string conversion did not work when using
+         specific base and the base is indicated in the string as well.
+
+       * Created win32/ directory which now includes MSVC++ specific
+         stuff so that toolkit (DLLs) may be compiled with MSVC++.
+         It will appear only in the toolkit distribution
+
+Sun Jul 22 19:40:30 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Changed the key material distribution function in case when
+         the hash output is too short.  The data is now concatenated
+         a bit differently than it used to.  Made the change to the
+         SKE protocol specification.
+
+       * Added better GMP detection to configure.in.pre.  A patch
+         by salo.
+
+Fri Jul 20 13:16:00 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Fixed a minor bug in SKE that might cause some problem on
+         some platforms.  Affected file lib/silcske/silcske.c.
+
+       * Added the cookie checking for initiator in the SKE.  It checks
+         that the responder returns the sent cookie unmodified.  The
+         affected file is lib/silcske/silcske.c.  Added new SKE
+         error type INVALID_COOKIE that can be sent during the
+         negotiation.  Fixed some memory leaks as well.
+
+       * Added the "invalid cookie" error message to Irssi SILC client's
+         message formats.
+
+Thu Jul 19 21:44:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Added `task_max' field to the SilcClientParams to indicate
+         the maximum tasks the scheduler can handle.  If set to zero,
+         default values are used.  Affected file lib/silcclient/silcapi.h.
+
+       * Fixed memory leaks in silc_client_close_connection.  Affected
+         file lib/silcclient/client.c.
+
+       * Added silc_client_del_client_entry to client library to free
+         all memory of given client entry.  Affected file is
+         lib/silcclient/idlist.[ch].
+
+       * Added new functions silc_client_del_channel and
+         silc_client_del_server to delete channel and server entries.
+         Affected file lib/silcclient/[silcapi.h/idlist.c].
+
+       * Removed silc_client_del_client_by_id from silcapi.h.
+
+       * Fixed the INFO command to return the server's own info
+         correctly when querying by Server ID.  Affected file is
+         silcd/command.c.
+
+Thu Jul 19 14:47:30 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Removed the non-blocking settings in WIN32 code in the
+         silc_sock_[read/write] and added SleepEx instead.  Affected
+         file lib/silcutil/win32/silcwin32sockconn.c.  The availability
+         of input data is now checked with FIONREAD and ioctlsocket.
+
+Wed Jul 18 18:34:01 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Call silc_schedule_task_del_by_context in the 
+         silc_protocol_cancel instead of silc_schedule_task_del_by_callback.
+         Affected file lib/silccore/silcprotocol.c.
+
+       * Call silc_protocol_cancel for active protocols in the
+         silc_server_close_connection if the funtion
+         silc_server_free_sock_user_data has not been called.
+         Affected file silcd/server.c.
+
+       * Generic tasks cannot be deleted using the del_by_fd
+         task deleting function since generic tasks does not match
+         any specific fd.  Affected file lib/silcutil/silcschedule.[ch].
+
+       * Added a notion to SILCOPER help file that the SILCOPER works
+         only on router server, not on normal server.
+
+Wed Jul 18 09:40:04 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Added for WIN32 support for the new scheduler as well.
+         Affected file lib/silcutil/win32/silcwin32schedule.c.
+
+       * Fixed the SHA1 implementation to work on various platforms.
+
+Tue Jul 17 23:04:10 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Rewrote the SILC Scheduler entirely.  Removed the old SILC Task
+         API.  It is part of the scheduler now.  Everything else is
+         as previously but some functions has changed their names.
+         Checkout the lib/silcutil/silcschedule.h for the interface.
+         Updated all applications to use the new interface.  Affected
+         files are lib/silcutil/silcschedule.[ch].
+
+Tue Jul 17 16:53:30 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Found a bug in the SKE implementation.  The HASH value,
+         specified by the protocol, was not computed correctly.  The
+         public key of the responder was not added to the computation
+         even though it is mandatory.  Affected file lib/silcske/silcske.c.
+         This unfortunately causes incompatibilities with older
+         clients and servers.
+
+       * Added WIN32 specific network init and uninit functions:
+         silc_net_win32_init and silc_net_win32_uninit to init and uninit
+         the Winsock2.  Affected file lib/silcutil/silcnet.h and
+         lib/silcutil/win32/silcwin32net.c.
+
+       * Set the socket always to nonblocking mode on WIN32 after
+         reading data or writing data.  Affected file is
+         lib/silcutil/win32/silcwin32sockconn.c.
+
+Mon Jul 16 22:55:26 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Fixed various compilation problems under WIN32.  Affected
+         files lib/silcutil/win32/silcwin32thread.c and
+         lib/silcutil/win32/silcwin32schedule.c.
+
+       * Removed all _internal.h #includes from public header
+         files.  Internal headers must never be included from
+         public headers.
+
+         Removed also the lib/silcske/payload_internal.h file.
+
+       * All include files that may be needed (public and some others
+         included by the public headers) by application developers are
+         now copied to the ./includes directory.  It does not copy any
+         internal headers.  Affected file Makefile.defines.pre and all
+         Makefile.am's under lib/ and subdirs.
+
+Thu Jul 12 17:49:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Do not change the ~/.silc directory's permissions automatically.
+         Affected file irssi/src/silc/core/clientutil.c.
+
+Thu Jul 12 10:18:40 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Do not cancel the protocol in silc_server_close_connection
+         it might cause recursion.  Now cancelled in the function
+         silc_server_free_sock_user_data.  Affected file silcd/server.c.
+
+       * Fixed the silc_server_remove_clients_by_server to regenerate
+         the channel keys correctly finally.  Added also new function
+         silc_server_remove_clients_channels to actually do it.
+         Affected file silcd/server.c.
+
+       * Fixed the silc_server_new_channel to not crash by giving
+         wrong router to the new channel.  Affected file is
+         silcd/packet_receive.c.
+
+Wed Jul 11 18:31:57 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Added SilcClientParams structure to the lib/silcclient/silcapi.h
+         which is given as argument to the silc_client_alloc now.
+         It can be used to configure the client and set various parameters
+         that affect the function of the client.
+
+       * The USERS command in server did not check whether the channel
+         is private or secret.  Affected file silcd/command.c.
+
+       * Added new argument to the USERS command in protocol specification.
+         The USERS command now can take the channel name as argument
+         as well.  Added support for this in client and server and
+         updated the protocol specs.
+
+       * Completed the GETKEY command in client. It can be now used
+         to fetch also servers public key not only some clients. 
+         Affected files lib/silcclient/command[_reply].c.
+
+       * Added silc_client_get_server to return server entry by the
+         server name.  Affected files lib/silcclient/silcapi.h and
+         idlist.c.
+
+       * Redefined the IDENTIFY command in protocol specification to be
+         more generic.  It now can be used to query information about
+         any entity in the SILC Network, including clients, servers and
+         channels.  The query may be based either the entity's name
+         or the ID.  Added support for this in both client and server.
+
+         Affected files silcd/command.c and lib/silcclient/command.c
+         and command_reply.c.
+
+       * Optimized the WHOIS and WHOWAS commands in the server. Removed
+         the _from_client and _from_server functions.  Affected file
+         silcd/command.c.
+
+       * Added silc_client_get_channel_by_id_resolve to the file
+         lib/silcclient/silcapi.h to resolve channel information by
+         its ID.  Added also silc_client_get_channel_by_id that
+         does not resolve it from the server.
+
+Tue Jul 10 18:05:38 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Added SilcServerEntry context into the client library
+         to represent one server.  The INFO command now allocates
+         these to save the resolved server info.  For now on the
+         client library will also keep information about servers,
+         connected and resolved with INFO.
+
+         The INFO command now allocates the SilcServerEntry context
+         and saves the server info there.  The COMMAND_REPLY in
+         the INFO now returns the parameters to application in 
+         same order as defined in the protocol specification.
+
+         The entries are cached in the client->server_cache.
+
+       * The INFO command is now issued after received the Client ID
+         from the server.  Affected file lib/silcclient/client.c.
+
+       * The CMODE_CHANGE notify may now return also an SilcServerEntry
+         to the application as the mode changer might be server.
+         It is guaranteed that NULL is not returned anymore to the
+         application.  Affected file lib/silcclient/client_notify.c.
+
+         The ID Type is now also passed to the application so that
+         it can check whether the returned entry is SilcClientEntry
+         or SilcServerEntry.
+
+         Added new function silc_client_get_server_by_id to return
+         the server entry by ID.  Affected files are the
+         lib/silcclient/silcapi.h and lib/silcclient/idlist.c.
+
+       * Do not create the channel in the Irssi SILC Client when issuing
+         the JOIN command but when received the sucessful JOIN command
+         reply.  Otherwise the channel might get created even though we
+         could not join it.  The Affected file is
+         irssi/src/silc/core/[silc-channels.c/client_ops.c].
+
+       * Fixed a channel joining bug in router.  The router must also
+         check the channel modes, invite and ban lists etc. when serving
+         the JOIN command sent by normal server.  Affected file is
+         silcd/command.c.  The router now resolves the client's 
+         information from the server who sent the JOIN command if it
+         does not know it, and processes the JOIN command only after
+         that.
+
+       * Changed the SilcCommandCb to take new argument; void *context2.
+         Affected file lib/silccore/silccommand.h
+
+         The second argument in the command callbacks in the server now
+         includes the SilcServerCommandReplyContext if the command was
+         called as pending command callback from the command reply.
+         Otherwise it is NULL. When called as pending the status of the
+         command reply will be checked and if it was erronous the
+         error will be sent to the original sender of the command.
+         This way the client always receives the error messages even
+         though the server was actually the one who received the error
+         when it resent the command to router, for example.  Affected
+         files silcd/command[_reply].[ch].
+
+       * Fixed sending WHOWAS command's error message to client if
+         the requested client could not be found.  It was missing.
+         silcd/command.c.
+
+       * Changed the CMODE and CUMODE commands reply arguments in the
+         protocol specification.  The Channel ID is now sent in both
+         of the commands to identify the channel.  Implemented this
+         new feature to the client and server.  Affected files
+         lib/silcclient/command_reply.c and silcd/command.c.
+
+       * Made better checks for invite and ban lists in the JOIN
+         command in server.  Affected file silcd/command.c.
+
+Mon Jul  9 18:28:34 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * The server now performs the incoming host IP/DNS lookup
+         using the silc_socket_host_lookup and thus does not block
+         the server anymore.  Affected file silcd/server.c.
+
+       * Completed the multi-thread support for SILC Scheduler in
+         the lib/silcutil/silcschedule.c.
+
+       * Fixed the configure.in.pre to detect the pthread correctly
+         on various systems.
+
+       * Fixed a deadlock in silc_task_queue_wakeup in the file
+         lib/silcutil/silctask.c.
+
+Mon Jul  9 13:40:03 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Added new function silc_schedule_wakeup that is used in
+         multi-threaded environment to wakeup the main thread's
+         schduler. It needs to be used when a thread adds a new task
+         or removes a task from task queues. After waking up, the
+         scheduler will detect the task queue changes. If threads
+         support is not compiled in this function has no effect.
+         Implemented the wakeup mechanism to both Unix and WIN32
+         systems.  Affected files are lib/silcutil/silcschedule.[ch],
+         lib/silcutil/unix/silcunixschedule.c and the
+         lib/silcutil/win32/silcwin32schedule.c.
+
+       * Added new function silc_task_queue_wakeup to wakeup the
+         scheduler by the specified task queue.  Affected file
+         lib/silcutil/silctask.[ch].
+
+       * The silc_socket_host_lookup_start now wakes up the scheduler
+         after adding the timeout task.  Affected file is
+         lib/silcutil/silcsockconn.c.
+
+       * The silc_socket_host_lookup is synchronous now if the threads
+         support is not compiled in.  However, the callback is still
+         called asyncronously through the scheduler, anyway.  Affected
+         file lib/silcutil/silcsockconn.c.
+
+Mon Jul  9 00:24:45 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Added new function silc_socket_host_lookup to perform
+         asynchronous IP and FQDN lookups for the socket connection.
+         Affected files lib/silcutil/silcsockconn.[ch].
+
+Sun Jul  8 18:44:53 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Added SILC_MUTEX_DEFINE to define the mutex on environments
+         that may or may not compile the mutex support in.
+       
+         Changed the silc_mutex_alloc interface. It allocates the
+         mutex now to the sent pointer and returns TRUE or FALSE.
+
+         Affected file lib/silcutil/silcmutex.h.
+
+       * Wrote the SILC Task Queue interface to support multi-threads.
+         Affected file lib/silcutil/silctask.[ch].
+
+       * Wrote the SILC Scheduler to support multi-threads.  Affected
+         file lib/silcutil/silcschedule.c.
+
+Sun Jul  8 11:16:01 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Implemented the SILC Mutex API and SILC Thread API for WIN32
+         in lib/silcutil/win32/.
+
+Sun Jul  8 00:18:15 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Defined SILC Mutex API and SILC Thread API and implemented
+         them for Unix.  Affected files are
+         lib/silcutil/silcmutex.h, lib/silcutil/silcthread.h,
+         lib/silcutil/unix/silcunixmutex.c and
+         lib/silcutil/unix/silcunixthread.c.
+
+Sat Jul  7 14:40:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Fixed the silc_server_remove_clients_by_server's channel
+         key re-generation.  The hash table handling was incorrect
+         and would not work with many channels.  Affected file is
+         silcd/server.c.
+
+       * Fixed some memory leaks around the server code.
+
+       * Rewrote the silc_server_get_users_on_channel to support IPv6
+         based Client ID's.  Affected file silcd/server.c.
+
+       * Defined the SILC_MESSAGE_FLAG_SIGNED to the protocol
+         specification.  However, a separate document must be written
+         to define the detailed signing procedure and the payload
+         associated with the flag.  Defined the flag to the
+         lib/silccore/silcchannel.h as well.
+
+Fri Jul  6 18:26:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Changed the dynamic tables to static size tables in the
+         lib/silccrypt/silchmac.c.
+
+       * Removed GCC dependencies from the code.  A patch by cras.
+
+Fri Jul  6 09:39:35 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Do not show the error "Error receiving packet bla bla"
+         in server if it really was not an error (-2 means that reading
+         is pending).  Affected file silcd/server.c.
+
+Thu Jul  5 21:22:32 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Fixed a possible crash in silc_server_remove_clients_by_server
+         in silcd/server.c.  Fixed there also some memory leaks.
+
+       * Fixed the silc_idlist_replace_client_id.  It could replace
+         wrong key in the hash table.  Affected file silcd/idlist.c.
+
+       * Do not check whether there are global users on the channel
+         if the channel->global_users is FALSE.  Affected functions
+         silc_server_remove_from_one_channel and
+         silc_server_remove_from_channels in silcd/server.c.  Also,
+         do not check if the removed client is local as we can be
+         sure that global client was not removed from the channel
+         and checking for global users is not needed.
+
+       * The silc_server_remove_clients_by_server now re-generates
+         the channel keys correctly for those channels that had
+         clients removed from them.  Affected file silcd/server.c.
+
+Tue Jul  3 11:39:20 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Found the reason of random crashes in the server.  We weren't
+         ignoring the SIGPIPE signal (which can be sent in write())
+         and it crashed the server.  Affected file silcd/silcd.c.
+
+Fri Jun 29 20:05:25 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Assure that sock->user_data is not NULL in the function
+         silc_server_packet_send in silcd/packet_send.c.
+
+       * Disconnect the remote connection if it could not be added
+         to any ID lists in the server.  The affected file is
+         silcd/server.c.
+
+       * Check in silc_server_packet_send[_real/dest] that the
+         socket is not disconnecting and ignore the data if it is.
+         Affected file silcd/packet_send.c.
+
+       * Define inline to __inline on native WIN32 compilation.
+         Affected file includes/silcwin32.h.
+
+       * Added some explicit type casts for inline code since MSVC
+         require them.  Affected files lib/silcutil/silcbuffer.h,
+         lib/trq/silcdlist.h and lib/trq/silclist.h.
+
+       * Print warning in log files from now on if the packet
+         decryption fails.  Affected file silcd/server.c.
+
+Thu Jun 28 21:30:39 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Changed the `say' client operation's interface to accept
+         new `type' argument to indicate the type of the message sent
+         by the library.  The application may filter the library's
+         messages according the type.  The affected file is the
+         lib/silcclient/silcapi.h.
+
+       * Added two new functions to lib/silcclient/silcapi.h:
+         silc_client_del_client and silc_client_del_client_by_id.
+         Affected file lib/silcclient/idlist.c.
+
+       * Moved the clientincludes.h from includes/ to silc/ and
+         serverincludes.h from includes/ to silcd/.
+
+       * The modes for the CMODE and CUMODE are now passed as
+         uint32 for application with COMMAND_REPLY.  The affected
+         file is lib/silcclient/command_reply.c.
+
+Wed Jun 27 22:24:47 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * /WHOIS without arguments shows client's own information.
+         Affected file lib/silcclient/command.c.
+
+       * Changed PING to not accept any arguments.  The specs
+         says that client can ping only the connected server so
+         requiring an argument is not needed.  Affected file is
+         lib/silcclient/command.c.
+
+Wed Jun 27 00:10:33 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Fixed a fatal bug in private message sending and reception
+         encryption and decryption when using private message keys.
+         The implementation was incorrect and did not follow the
+         specification.  It causd that some of the message were
+         lost since it did not use the sending and receiving keys
+         as the protocol suggests.  This has been fixed and will cause
+         incompatibilities with older clients when sending private
+         message encrypted with private message keys.  Affected files
+         lib/silcclient/client_prvmsg.c, lib/silcclient/client_keyagr.c
+         and various other in Irssi SILC Client.
+
+         Added `responder' boolean argument to the functions
+         silc_client_add_private_message_key[_ske] to indicate when
+         the key is added as responder or initiator of the key
+         negotiation.
+
+Tue Jun 26 19:23:07 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Removed the silc_ske_check_version function and created
+         a SilcSKECheckVersion callback.  Added also a function
+         silc_ske_set_callbacks that is now used to set all SKE
+         callbacks.  The callback functions are not given to
+         the SKE functions anymore, but this function is used to
+         set the callbacks.
+
+       * Fixed the WIN32 DLL generation in lib/Makefile.am.pre.
+
+       * Added `silc_version' argument to the silc_client_alloc
+         to define the version of the application for the library.
+         The library will use the version string to compare it
+         against the remote host's (usually a server) version
+         string.  Affected file lib/silcclient/silcapi.h
+
+       * Added the KE protocol context to Key Agreement context
+         in client library so that we can abort the SKE if it
+         is in process when we get timeout.  Affected file is
+         lib/silcclient/client_keyagr.c.
+
+       * Do not resolve the client ID forever if it returns in the
+         first time that such client does not exist.  This was done
+         for example with private message.  Affected file is
+         lib/silcclient/client_prvmsg.c.
+
+Mon Jun 25 21:42:51 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Do not add regex.h for WIN32.  The affected file
+         includes/silcincludes.h.
+
+       * Added WIN32 DLL generation to lib/Makefile.am.pre.  It might
+         not work yet 100%.  It generates the DLL's automatically
+         when compiling with --with-win32 under cygwin.
+
+Sun Jun 24 19:49:23 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * lib/contrib/regex.c is not compiled on WIN32.
+
+       * Added silc_net_get_socket_opt function to the
+         lib/silcutil/silcnet.h.
+
+       * Added includes/silcwin32.h for WIN32 specific includes
+         and definitions.
+
+       * Do not use ptime structure or any of the posix process
+         functions on WIN32 in lib/silccrypt/silrng.c.
+
+       * Added silc_gettimeofday to provide generic function
+         for struct timeval on all platforms.  Added the function
+         to lib/silcutil/silcutil.h.
+
+Sun Jun 24 12:19:52 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Moved the lib/silccore/silcsockconn.[ch] to the utility
+         library as they clearly belong there.  As a plus side we
+         can make the actual socket connection routines platform
+         specific.
+
+         Added also new generic function silc_socket_read and
+         silc_socket_write (that used to be silc_packet_[read/write].
+         The implementation of these are platform specific.
+
+       * Added WIN32 specific routines of silc_socket_[read/write]
+         to lib/silcutil/win32/silcwin32sockconn.c.
+
+Sat Jun 23 16:01:00 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Added preliminary support for native WIN32 compilation under
+         cygwin (using the -mno-cygwin option for GCC) to the
+         ./configure.in.pre.  The --with-win32 now prepares the
+         compilation for native WIN32.
+
+       * Rewrote the SILC Scheduler interface in the file
+         lib/silcutil/silcschedule.h.  The scheduler is now context
+         based and does not have anymore any global static scheduler.
+         Moved the Unix scheduler to the lib/silcutil/unix/ directory
+         and created lib/silcutil/win32 directory for WIN32 based
+         scheduler.
+
+       * Added Unix specific network routines to the
+         lib/silcutil/unix/silcunixnet.c and the old
+         lib/silcutil/silcnet.c includes now only generic routines.
+
+         Added WIN32 specific network routines to the
+         lib/silcutil/win32/silcwin32net.c.
+
+       * Added Unix specific utility functions from the
+         lib/silcutil/silcutil.c to lib/silcutil/unix/silcunixutil.c.
+
+       * Added WIN32 SILC Scheduler to the file
+         lib/silcutil/win32/silcwin32schedule.c. The code is of course
+          untested.
+
+Fri Jun 22 10:44:14 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
+
+       * Do not handle JOIN notify in the server if the target client
+         is not registered (idata->registered == FALSE).  The affected
+         file is silcd/packet_receive.c.
+
+       * Update the nickrec->founder in event_cumode in the Irssi SILC
+         client.  Affected file irssi/src/silc/core/silc-channels.c.
+
+       * Fixed the CUMODE_CHANGE notify handling in the server when
+         server and router are announcing their clients on channels.
+         Now the mode changes are saved and notified correctly.  The
+         affected file is /silcd/packet_receive.c.
+
+       * Fixed silc_idlit_replace_[server/client/channel]_id functions.
+         They really did not replace the cache entry in the ID Cache.
+         Now they do that.  Affected file silcd/idlist.c.
+
+       * Fixed the KICK notify handling in the Irssi SILC client to
+         update the channel records so that the kicked client does not
+         appear to be on the channel.  The affected file is 
+         irssi/src/silc/core/silc-channels.c.
+
+       * Always update the conn->current_channel when executing command
+         on a channel.  Affected file irssi/src/silc/core/silc-servers.c.
+
+       * Fixed the KILL notify handling in Irssi SILC client to remove
+         the killed client on all channels.
+
+Thu Jun 21 17:10:08 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Fixed the silc_parse_command_line to remove extra spaces
+         from the start and end of the arguments.  Affected file is
+         lib/silcutil/silcutil.c.
+
+       * Cancel and free any active protocol in the function
+         silc_server_close_connection.  Affected file silcd/server.c.
+
+       * Cancel and free any active protocol in the function
+         silc_client_close_connction.  Affected file is
+         lib/silcclient/client.c.
+
+       * Do not execute the KILL command for clients that are in
+         history (ie. they are not in the network).  Affected file is
+         silcd/command.c.
+
+       * Fixed KILL notify handling, client does not crash anymore.
+         Affected file irssi/src/silc/core/silc-channels.c.
+
+       * Reduced the default packet buffer size from 2048 to 1024 in   
+         lib/silccore/silcpacket.c.
+
+       * Added SILC_SKE_STATUS_FREED SKE status type and a reference
+         counter to the SKE context that is incresed when the SKE library
+         performs async operation outside the library.  If the outside
+         process frees the SKE context and FREED status will be set 
+         and the library will detect after the sync operation that the
+         libary is freed.  The affected files are
+         lib/silcske/silcske[_status].[ch].
+
+       * Resolve the client entry information in the function
+         silc_client_channel_message to assure that NULL pointer is not
+         passed as client entry to the application. */
+
+       * Fixed the task timeout calculation to assure that there is
+         never negative timeouts.  The affected file is 
+         lib/silcutil/silcschedule.c.
+
+       * Fixed the channel user mode notification sending in server.
+         It was sent point-to-point to the router (or to server by router)
+         but it needs to be destined to a channel.  The routines now
+         supports sending the channel user mode notifys to the channels
+         when announcing clients and channels.  Affected files are
+         silcd/server.c and silcd/packet_receive.c.
+
+       * Fixed the CHANNEL_CHANGE notify handling in the client libary.
+         It did not actually replace the old channel entry in the cache.
+         Affected file lib/silcclient/client_notify.c.
+
+Tue Jun 19 22:10:36 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Fixed a possible crash in silc_packet_send_prepare.  It now
+         assures always that there is enough space in the buffer and
+         at the tail area of the buffer (for MAC). 
+
+         Fixed the inbound buffer reallocation in silc_packet_read.
+         It was old code and did not handle the reallocation correctly.
+         Affected
+
+         The affected file is lib/silccore/silcpacket.c.
+
+       * Fixed buffer overflow in silc_parse_nickname in the file
+         lib/silcutil/silcutil.c.
+
+Tue Jun 19 13:40:09 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * make install generates new server keys only if there is not
+         keys already.
+
+Mon Jun 18 18:49:07 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Set SILC_MESSAGE_FLAG_NOREPLY when sending the away message.
+         Added check that if the NOREPLY is set then we will not send
+         the away message.  This avoids infinite loop of away messages
+         if both clients are away.  The affected file is
+         lib/silcclient/client_prvmsg.c.
+
+       * Fixed client crash if /NICK was given without arguments.
+         Affected file lib/silcclient/command.c.
+
+       * Server does not send the invite list in INVITE command back
+         to the client if the list was not altered.  Added this notion
+         to the protocol spec as well.  Affected file silcd/command.c.
+
+         Fixed possible crash in INVITE command by checking the
+         value of silc_server_get_client_route command.
+
+       * Fixed the INVITE notify type handling.  The arguments are now
+         taken in correct order and client does not crash.  The affected
+         file is irssi/src/silc/core/silc-channels.c.
+
+         Removed the "Inviting xxx to channel" message from the
+         client library away and let the application handle it.
+         Affected file lib/silcclient/command.c.  Added that message
+         to Irssi SILC client's message formats.
+
+       * Fixed CMODE command crash in client.  It now checks the
+         amount of arguments correctly and does not crash.  The affected
+         file is lib/silcclient/command.c.
+
+       * Do not create new channel automatically in silc_channels_join
+         but check whether the channel by that name already exists.
+         Affected file irssi/silc/core/silc-channels.c.
+
+       * Do not send the SERVER_SIGNOFF to router if the disconnected
+         entity was the router.  Affected file silcd/server.c.
+
+       * Added the handling of the SERVER_SIGNOFF notify to the Irssi
+         SILC client as it was missing from there.
+
+         Added the handling of the KICK notify to the Irssi SILC client
+         as it was missing.  Added "you have been kicked" message to
+         Irssi SILC client's message modules formats.
+
+         Added the handing of the KILL notify to the Irssi SILC client
+         as it was missing.  Added the kill message module formats 
+         as well.
+
+         The affected file is irssi/src/silc/core/silc-channels.c.
+
+       * The router did not save the channel mode the server announced.
+         Affected file silcd/packet_receive.c.
+
+       * Fixed a possible crash in INFO command in server.  If the
+         server did not provide the server info it crashed.  Affected
+         file silcd/command.c.
+
+Sun Jun 17 15:26:05 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Fixed the GETKEY command in the server to check also the
+         global list.  Otherwise the GETKEY would not work correctly
+         in normal SILC server.  Affected file silcd/command.c.
+
+Sat Jun 16 18:00:00 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Fixed GETKEY crash, it crashed if the command did not succseed.
+
+Tue Jun 12 21:36:18 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Redefined the SILC MP API in lib/silcmath/silcmp.h. The API
+         is now real and not just an macro interface to GMP.
+
+         Removed the entire GMP from the source tree and imported new
+         NSS MPI library instead.  Reason for removing GMP is that it is
+         extremely large and compiles extremely slow.  The NSS MPI
+         is only a few files and compiles in less than 10 seconds.
+         The speed is also about the same as GMP.  The MPI is imported
+         to lib/silcmath/mpi.
+
+         If the system has GMP installed we will still use the GMP.
+         If it is not then the NSS MPI will be compiled.
+
+Mon Jun 11 18:07:24 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Merged a long nickname (127 characters long) crash bugfix from
+         Irssi CVS tree.  Affected file irssi/src/core/misc.c.
+
+       * Merged a freed memory reference bugfix from Irssi CVS tree.
+         Affected file irssi/src/core/commands.c.
+
+Sun Jun 10 16:08:35 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Added the server's public key sving and verification to the
+         server when performing the SKE.  This was missing and the
+         remote server's (or router's) public key was accepted without
+         checking whether we have it previously or trust it at all.
+         Affected file silcd/protocol.c.
+
+Sat Jun  9 20:17:30 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Check in the silc_server_timeout_remote if protocol is active
+         and make sure that the protocol's final callback is called so
+         that all memory if freed.  Affected file silcd/server.c.
+
+Sat Jun  9 12:51:27 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * silc_server_whois_send_reply crashed the server if the nickname
+         was 127 characters long.  Affected file silcd/command.c.
+
+Thu Jun  7 16:29:56 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Added sanity check to the silc_server_new_client. If the hostname
+         is provided inside username then check that the provided hostname
+         really is the same as the resolved one.  If the hostname was not
+         resolved then check it from the public key.  Affected file is
+         silcd/packet_receive.c.
+
+       * Fixed a fatal bug in Irssi SILC client. Do not send QUIT command
+         if the server disconnected us and the connection is not valid
+         anymore.  Affected file irssi/src/silc/core/silc-channels.c.
+
+       * Moved the silc_client_[chmode|chumode|chumode_char] away from
+         the library to the lib/silcutil/silcutil.[ch].
+
+Thu Jun  7 08:57:16 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Close log file after open.  Affected file 
+         lib/silcutil/silclog.c.
+
+       * Check whether sock == NULL in silc_client_send_packet and return
+         if it is.  Affected file lib/silcclient/silcclient.c.
+
+       * Check rec->entry == NULL in the Irssi SILC Client before
+         sending the channel message.  Affecte file is
+         irssi/src/silc/core/silc-servers.c.
+
+Tue Jun  5 08:08:21 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Merged a splitted window bugfix from Irssi CVS tree.  The 
+         affected file is irssi/src/fe-text/textbuffer-view.c.
+
+       * Fixed the ME, ACTION and NOTICE printing in Irssi Client.
+         It did not print nickname.
+
+       * Improved the distributions system a bit.
+
+Mon Jun  4 17:57:16 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Merged /WINDOW bugfix from irssi CVS tree. Affected file is
+         irssi/src/fe-text/gui-window.c.
+
+       * Fixed a fatal bug in Irssi SILC client. Crashed if sent message
+         to in-active server.  The affected file is
+         irssi/src/silc/core/client_ops.c.
+
+       * Resolve the client in USERS command reply if the entry does
+         not have username resolved.  The affected file is
+         lib/silcclient/command_reply.c.  Also, changed the IDENTIFY
+         command to WHOIS command to really resolve stuff.  The USERS
+         is not used any more in any critical section so WHOIS can
+         be used even though it might be slower than IDENTIFY.
+
+       * Changed the lib/silcutil/silchashtable.h header to ROBODoc
+         format.
+
+Sun Jun  3 14:21:32 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Changed the protocol API a bit more consistent in the
+         lib/silccore/silcprotocol.[ch].
+
+       * Changed the following headers to ROBODoc format:
+
+               lib/silccore/silcpayload.h
+               lib/silccore/silcprotocol.h
+               lib/silccore/silcsockconn.h
+
+         All core library headers are now formatted.
+
+Sat Jun  2 10:45:09 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Fixed a bug in Irssi SILC client; do not show that you are
+         server/router operator if you really are not.  Affected file is
+         irssi/src/silc/core/client_ops.c.
+
+       * Renamed silc_command_free_payload to silc_command_payload_free.
+         Affected file lib/silccore/silccommand.h
+
+       * Added silcmath.h to include the prototoypes of various routines
+         in the lib/silcmath.  Removed the old modinv.h, mpbin.h and
+         silcprimegen.h.
+
+       * Changed the following headers to ROBODoc format:
+
+               lib/silccore/silcchannel.h
+               lib/silccore/silccommand.h
+               lib/silccore/silcid.h
+               lib/silccore/silcidcache.h
+               lib/silccore/silcmode.h
+               lib/silccore/silcnotify.h
+               lib/silccore/silcpacket.h
+               lib/silcmath/silcmath.h
+
+Fri Jun  1 22:19:37 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Added checking to the server code not to start the server if
+         ciphers and stuff are not configured properly.  Affected files
+         silcd/serverconfig.[h] and silcd/server.c.
+
+       * Changed the layout of the header files of the public interfaces
+         in the SILC libraries.  The new layout supports ROBODoc 
+         documentation tool (and some others) so that it is easy to create
+         a library reference manual.  All the other headers and source
+         code must still follow the CodingStyle document.  Also source
+         code must not include these ROBODoc stuffs, only the headers.
+         Furthermore, all public interface headers must now be named
+         by using `silc' prefix, example: silcapi.h, silccipher.h.
+         Some files were renamed due to this.  All the other headers
+         must not be used as public interfaces.  I will update the
+         CodingStyle document later.  Changed following headers, so far:
+
+               lib/silcclient/silcapi.h
+               lib/silccore/silcauth.h
+               lib/silccore/silcprivate.h
+               lib/silccrypt/silcdh.h
+
+Fri Jun  1 10:28:09 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Updated TODO.
+
+       * Removed silc_client_packet_send_flush from the client library
+         as it is not needed.  Affected file lib/silcclient/client.[ch].
+
+       * Added printing of message of unresolved authentication method
+         to the Irssi SILC client.  Added it to the module formats.
+         Removed the same message from the client library.
+
+Thu May 31 13:57:33 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Added new distribution feature, DISTLABEL.  Every distribution
+         can define own preprocessor label that can be used in the
+         source code.  For example: #ifdef SILC_DIST_CLIENT.  Affected
+         file distributions, acconfig.h.pre and prepare.
+
+Tue May 29 22:16:40 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Added Makefile.defines_int to include the actual definitions
+         for Makefile.defines.in.  Tested the new distribution system,
+         created distributions and tested installation.
+
+       * Added AWAY message printing to the Irssi SILC client.  Added
+         the messages to the irssi/src/fe-common/silc/module-formats.[ch].
+
+       * Added SCONNECT command to call the SILC's CONNECT command.
+         Cannot use CONNECT directly since Irssi uses that internally.
+         Affected file irssi/src/silc/core/silc-servers.c.
+
+         Added ACTION local command.  It is same as ME command but takes
+         the channel as mandatory argument.
+
+         Rewrote some of the Irssi's help files to suite for SILC
+         protocol.
+
+Mon May 28 19:05:22 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Added Makefile.defines[.in] that should for now on be included
+         in all Makefile.am file in the source tree.  That file includes
+         all common compilation definitions for SILC source tree.
+
+Mon May 28 10:30:51 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Minor changes to the ./prepare script to change the package
+         name according the distribution name to the configure.in.
+
+Sun May 27 22:24:57 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Created new distribution system.  Added file `distributions'
+         that defines all the distributions that can be created out of
+         the SILC source tree.  The ./prepare script now reads that
+         file to determine how to prepare the distributions.  The
+         first argument to the ./prepare is the name of the distribution
+         and second is the version of the distribution.  If given
+         without arguments it creates the default (toolkit) distribution
+         with the default version (defined in ./prepare).
+
+         All Makefile.am files that are subject to the distributions
+         are now named as Makefile.am.pre.  These are ./Makefile.am
+         and lib/Makefile.am.  Others may be changed later.
+
+Sun May 27 15:57:17 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Added invite list, ban list, some key management and connection
+         error message printing to module formats in the Irssi SILC client.
+
+       * Added new silc_client_set_away_message to set the away message
+         that is back to the person who sent private message.  The 
+         affected file lib/silcclient/silcapi.h and the
+         lib/silcclient/client_prvmsg.c.
+
+Sun May 27 12:39:48 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Fixed the private message sending in the Irssi SILC client,
+         added local command KEY to the Irssi SILC client.
+
+         Added key management and key agreement message formats to the
+         irssi/src/fe-common/silc/module-formats.[ch].
+
+         Added USERS (alias WHO) printing, server/router operator
+         indication and LIST command printing to the module formats.
+
+Sat May 26 17:43:42 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Fixed channel joining notify handling, cumode notify handling
+         from Irssi SILC client.
+
+       * Added SILC specific module-formats to the Irssi SILC client so
+         that SILC specific message hilighting, colors etc is possible.
+         Affected file irssi/src/fe-common/silc/module-formats.[ch].
+
+         Added channel mode, channel user mode, actions, notices,
+         whois and whowas printing to the the module-formats.c.
+
+       * Fixed a bug in channel deletion in the server.  The channel
+         is not left to the cache even if the channel founder auth mode
+         is set when there are no users anymore on the channel.  Affected
+         file silcd/server.c.
+
+       * The silc_net_localhost now resolves the entire hostname including
+         the domain name.  Affected file lib/silcutil/silcnet.c.
+
+Sat May 26 12:13:37 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Changed the ask_passphrase client operation to be ascynchronous.
+         It has now a completion callback and a context that the 
+         application must call after it has got the passphrase from
+         the user.  Affected files lib/silcclient/silcapi.h,
+         lib/silcclient/protocol.c, lib/silcclient/command.c and
+         silc/client_ops.c.
+
+         Added SilcAskPassphrase callback that the application calls
+         to deliver the passphrase to the library.
+
+       * Changed the SKE protocol's SilcSKEVerifyCb to be asynchronous.
+         The public key verification and especially a certificate
+         verification is asynchronous procedure.
+
+         Added new SILC_SKE_STATUS_PENDING status to indicate the
+         request is pending and a callback will be called to finalize
+         the request.
+
+         Added also SILC_SKE_STATUS_PUBLIC_KEY_NOT_PROVIDED status to
+         indicate that remote end did not send its public key (or
+         certificate), even though we require it.  Added check for this
+         condition in the SKE.  This was a security bug, now fixed.
+
+         Defined new SilcSKEVerifyCbCompletion callback that is called
+         when the verification process is completed.
+
+         The affected files lib/silcske/silcske_status.h and
+         lib/silcske/silcske.[ch].
+
+       * Changed the verify_public_key client operation to be async
+         as well.  Defined SilcVerifyPublicKey callback that is used to
+         indicate the success of the public key verification process.
+
+         Changed the server and client to use the new async client 
+         operations.
+
+       * Changed the Irssi SILC client's internal scheduler to be called
+         twice as many times as it used to be.  As a result the client
+         should be a bit faster now.  Affected file is
+         irssi/src/silc/core/silc-core.c.
+
+       * Added support to Irssi SILC client of asynchronous public key
+         verification and passphrase inquiry.  Affected file is
+         irssi/src/silc/core/silc-core.c.
+
+Fri May 25 14:38:38 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Do not say "You have left channel %s" in client library.
+         Moved it to the application.  Affected files are
+         lib/silcclient/command.c and silc/client_ops.c.
+
+       * Fixed silc_client_get_clients.  Command context was not
+         duplicated and was freed memory in the callback.  Affected
+         file lib/silcclient/idlist.c.
+
+       * Do not say "you are now talking..." on JOIN command in the
+         client library.  The appliation must handle it.
+
+       * Do not say ".. changed topic to" in command reply in the
+         client libary.  The application must handle it.
+
+       * Fixed TOPIC command sending in the client library.
+
+       * Fixed a memory leak in silc_client_command_free in the file
+         lib/silcclient/command.c.
+
+Thu May 24 19:08:55 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Imported a modified version of Irssi client to the source tree.
+         The Irssi will be used to create a new client called
+         Irssi SILC.  Imported to irssi/.
+
+         Added silc_core_init_finish function to the Irssi.  Affected
+         file irssi/configure.in.
+
+         A lot changes in the Makefile.ams around the irssi tree.
+
+Tue May 22 22:23:49 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Do not rehash if the new size is same as the old size of the
+         hash table, in the silc_hash_table_rehash*.  The affected file
+         lib/silcutil/silchashtable.c.
+
+       * Replaced hash_table_del_by_context calls from the server
+         (when channel->user_list and client->channels) to the
+         hash_table_del as it is sufficient and faster.
+
+Tue May 22 17:27:16 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Added silc_hash_table_list, silc_hash_table_get and the
+         SilcHashTableList structure to provide an alternative way to
+         traverse the hash table.  The affected files are
+         lib/silcutil/silchashtable.[ch].
+
+       * Changed the server's idlist routines to use the hash table
+         routines to optimize the code.
+
+Mon May 21 21:46:20 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Replaced the client entry's `channel' list and channel entry's
+         `user_list' list to hash tables for optimized lookup.  Changed
+         the code to use the hash table interface around the code. 
+         Affected file lib/silcd/idlist.[ch].
+
+       * Added `auto_rehash' boolean argument to the function
+         silc_hash_table_alloc to indicate whether the hash table should
+         auto-rehash when it thinks is appropriate time.  It will
+         increase the hash table size if the there is twice as much
+         entries in the table than the size of the table, and will
+         decrease the size if there are twice as less entries than
+         the size of the table.
+
+Mon May 21 09:51:11 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Fixed silc_xxx_get_supported to not crash at some circumstances.
+
+Sun May 20 13:45:58 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * silc_idcache_purge_by_context deletes the entry now by context
+         as it is supposed to do.  Affected file lib/silccore/idcache.c.
+
+       * Send the ERR_NO_SUCH_NICK in the WHOIS command reply if the
+         client is not anymore valid (WHOWAS givens the info) and not
+         the ERR_NO_SUCH_CLIENT_ID if the nickname still exists.
+
+Sat May 19 16:30:03 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Removed the `data' and `data_len' arguments from the ID Cache
+         interfaces and added `name' argument.  ID Cache does not handle
+         anymore the binary data only a names associated with given ID.
+
+       * When hashing a Client ID with silc_hash_id the entire ID is
+         not hashed anymore, instead only the hash of the Client ID is
+         hashed.  This way we can access the Client ID from the cache
+         with Client ID but with the hash of the ID (which is a hash of
+         the nickname) as well without any difference in performance.
+
+         Added also silc_idcache_find_by_id_one_ext to do one on one 
+         searching when we have the actual ID.  Added also function
+         silc_hash_client_id_compare.  The affected files are
+         lib/silccore/idcache.[ch] and lib/silcutil/silcutil.[ch].
+
+       * When hashing the name associated with a ID it is always done
+         in lowercase.  This way we can access the cache without worrying
+         about case-sensitivity, even though, for example nicknames are
+         case sensitive.
+
+       * Fixed a bug in server with channel message sending.  It put
+         wrong ID type as destination ID.  The affected file 
+         silcd/packet_send.c.
+
+       * silc_idcache_del_by_context now deletes from all hash tables
+         by context.  Affected file lib/silccore/idcache.c.
+
+Fri May 18 17:42:00 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Changed the client library to use the new ID Cache interface.
+         Changes around the source tree.
+
+       * Added silc_hash_table_rehash_ext to rehash with specific
+         hash function.  Affected file lib/silcutil/silchashtable.[ch].
+
+       * Added silc_hash_string_compare to compare two strings in the
+         hash table.  Affected file lib/silcutil/silcutil.[ch].
+
+Fri May 18 11:18:45 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Added new function silc_idcache_del_by_context into the
+         lib/silccore/idcache.[ch].
+
+       * Changed the server's ID list routines to use the new ID Cache
+         interface.  Changes around the source tree.
+
+Fri May 18 08:35:31 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Added silc_hash_table_del[_by_context]_ext functions in to the
+         lib/silcutil/silchashtable.[ch].
+
+         Removed silc_hash_table_find_all* routines and added new
+         silc_hash_table_find_foreach to replace them.
+
+         Added silc_hash_table_replace_ext function as extended
+         replacing function.  Separated the simple hash table interface
+         from the extended hash table interface in the file
+         lib/silcutil/silchashtable.h.
+
+       * Fixed minor bugs and changed it to use some of the new
+         hash table functions in lib/silccore/idcache.c
+
+Thu May 17 18:15:12 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Added new function silc_hash_table_find_all to return all keys
+         in the hash table by the specified key.  As the hash table is
+         collision resistant it also makes it possible to have several
+         duplicate keys in the hash table.  This function may be used to
+         find all of the keys from the hash.
+
+         Added user_context arguments to the SilcHashFunction,
+         SilcHashCompare and SilcHashDestructor to deliver user specified
+         context.
+
+         Added new fuctions silc_hash_table_find[_all]_ext to do
+         extended lookup with specified hash and compare functions and
+         specified user contexts.
+
+         Added new function silc_hash_table_add_ext to add the key
+         with specified hash function and user context.
+
+         Added new function silc_hash_table_foreach to traverse all
+         entrys in the hash table.  Added SilcHashForeach callback
+         function.
+
+         Added new function silc_hash_table_del_by_context to delete
+         the entry only if the context associated with the key matches.
+
+         Affected files are lib/silcutil/silchashtable.[ch].
+
+       * Removed silc_hash_[server/client/channel]_id and added just
+         silc_hash_id to the lib/silcutil/silcutil.[ch].  Added also
+         silc_hash_id_compare to compare two ID's using as the hash table
+         comparison function.  Added also silc_hash_data to hash
+         binary data and silc_hash_data_compare to compare it.
+
+       * Removed silc_idlist_find_client_by_hash as it is not needed
+         anymore.  Affected file silcd/idlist.[ch].
+
+       * Rewrote the entire ID Cache system (in lib/silccore/idcache.[ch])
+         to use internally the SilcHashTable.  The new ID Cache is a lot
+         faster than the old one.  Some of the ID Cache interface was also
+         rewritten and obsolete and stupid functions were removed.
+
+Wed May 16 23:03:30 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Added entry_count field to the SilcHashTable to keep the number
+         of the entries in the table.  Implemented the function
+         silc_hash_table_rehash.  Added new function
+         silc_hash_table_count.  Affected file lib/silcutil/silchashtable.c.
+
+         Fixed a minor bug in silc_hash_table_free.
+
+       * Added silc_hash_string, silc_hash_uint, silc_hash_ptr,
+         silc_hash_client_id, silc_hash_server_id and silc_hash_channel_id
+         into the lib/silcutil/silcutil.[ch].
+
 Wed May 16 20:02:47 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
 
        * Implemented a collision resistant hash table into the