updates.
[silc.git] / CHANGES
diff --git a/CHANGES b/CHANGES
index 7899d3fc142c588c5ed2fd59bd37a7a487a306af..381095ccae8229d7ae435a9c644d0fd1b081a406 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,363 @@
+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