updates.
[silc.git] / CHANGES
diff --git a/CHANGES b/CHANGES
index 3744d0732d0bde25ca09d1906b48f6c3e1c73bc8..022a733cb9d862df923593036671c23672a13175 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,630 @@
+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].
+
+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