updates.
[silc.git] / CHANGES
diff --git a/CHANGES b/CHANGES
index a0696db738e8fe1486c4abcc8fe8f4056b60e7d5..b147d9083cb69c22f26e26951eff682b55ce8fe5 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,247 @@
+Tue Jan 30 22:39:15 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Changed the client's pending command handling to the same as the
+         server's pending command handling.  It is also now possible to
+         execute command reply functions from other command reply
+         function as the function callbacks for commands and command
+         replies are one and same.  The pending commands are not static
+         list anymore, it is mallocated SilcDList in lib/silcclient/client.h
+         in client connection context.  Thus, pending commands are server
+         connection specific as it is convenient.
+
+         Changed the function silc_client_command_pending and
+         silc_client_command_pending_del and added new function
+         silc_client_command_pending_check.  Removed the 
+         SILC_CLIENT_CMD_REPLY_EXEC, and SILC_CLIENT_PENDING_COMMAND_CHECK
+         macros.
+
+       * Added cmd_ident, current command identifier, to the client
+         connection context in lib/silcclient/client.h to keep track on
+         command identifiers used in command sending.  Client's command reply
+         function handling now supports the mandatory command identifiers.
+
+       * Added SILC_CLIENT_COMMAND_EXEC_PENDING macros to all command reply
+         funtions in client to fully support pending command callbacks.
+
+       * NOTE: the name_list in USERS (old NAMES) command is NOT sent anymore
+         as one of the arguments to the application in the command reply
+         client operation.
+
+       * NOTE: The FORWARDED flag is depracated.  It used to be depracated
+         before first releasing SILC but came back.  Now it is removed again
+         and should come back nomore.  The FORWARDED flag was used only
+         by the JOINing procedure by forwarding the command packet to router.
+         Now, the JOINing procedure has been changed to more generic (due
+         to various router environment issues) and FORWARDED is not needed
+         anymore for anything.  The protocol specification is yet to be
+         updated.
+
+         Now, removed silc_server_packet_forward from server and the flag
+         SILC_PACKET_FORWARDED from lib/silccore/silcpacket.h.
+
+Tue Jan 30 00:05:05 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Renamed NAMES command to USERS command.  The NAMES was named that
+         due to historical reasons.  Now it is renamed.  Also, rewrote
+         parts of the USERS command.  The nickname list is not sent anymore
+         by the server.  Only Client ID and mode lists are sent in the USERS
+         command.  Changed this also to the protocol specification.
+
+         The client now resolves the names and stuff after it receives
+         the USERS list from the server when joining to the channel.
+
+       * WHOIS and IDENTIFY commands has been changed to support multiple
+         Client ID's per command.  One can now search for multiple users
+         in the network by sending only one WHOIS or IDENTIFY command.
+         Changed the code and the protocol specifications.
+
+       * Removed silc_server_command_identify_parse and changed that IDENTIFY
+         uses silc_server_command_whois_parse to parse the request. */
+
+       * If normal server, do not parse the WHOIS and IDENTIFY requests
+         before sending it to the router.  Saves some time.
+
+Sun Jan 28 16:19:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Fixed JOIN command on client library.  Wrong number of arguments
+         used to crash the client.
+
+       * Added silc_server_channel_has_global function to check whether
+         channel has global users or not.
+
+       * Added silc_server_channel_has_local function to check whether channel
+         has locally connected clients on the channel.
+
+       * The silc_server_remove_from_one_channel now checks whether the
+         channel has global users or not after given client was removed from
+         the channel.  It also checks whether the channel has local clients
+         on the channel anymore.  If it does not have then the channel entry
+         is removed as it is not needed anymore.
+
+       * The silc_server_notify now checks on JOIN notify whether the joining
+         client is one of locally connected or global.  If it is global then
+         the channel has now global users on the channel and that is marked
+         to the channel entry.  Also, it now saves the global client to
+         global list who is joining and JOINs it to the channel.  This is
+         for normal server, that is.
+
+         Changed silc_server_send_notify_on_channel, 
+         silc_server_packet_relay_to_channel and 
+         silc_server_packet_send_to_channel check if we are normal server
+         and client has router set (ie. global client) do not send the
+         message to that client, as it is already routed to our router.
+
+       * Implemented LEAVE notify type handling in silc_server_notify 
+         function.
+
+       * Tested LEAVE command in router environment successfully.  Tested
+         with two routers, two servers and two clients.
+
+       * Updated TODO.
+
+       * idlist_find_xxx_by_id routines now dumps the ID on the debug mode.
+
+       * Implemented SIGNOFF notify type handling in silc_server_notify
+         function.
+
+       * silc_server_remove_id now removes the client entry from all channels
+         it has joined and thusly sends SIGNOFF notify type.
+
+       * Rewrote the NAMES list generation in server by removing two excess
+         loops.  The lists are created now inside one loop.
+
+Sat Jan 27 22:34:56 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * silc_server_remove_channel_user checks now also global list
+         for channel and client.
+
+       * silc_server_new_channel_user checks now both local and global
+         list for channel and client.  Fixed a bug in client id decoding.
+         Used to decode wrong buffer.
+
+       * silc_server_channel_message checks now both local and global
+         list for channel entry.
+
+       * Tested channel joining (hence JOIN) in router environment
+         successfully.  Tested with two routers, two servers and two
+         clients.
+
+       * Tested channel message sending in router environment successfully.
+
+Thu Jan 11 03:22:57 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Added silc_server_save_channel_key into server.[ch] to save the
+         received channel key in Channel Key payload processing. It is
+         also used in JOIN command reply handling.
+
+         Equivalent function silc_client_save_channel_key added into
+         client.[ch] into client library.
+
+       * Changed JOIN command reply to send information whether the channel
+         was created or not (is existing already) and the channel key 
+         payload.  Changed protocol specs accordingly.
+
+       * Fixed bugs in WHOIS and IDENTIFY command reply sending when
+         the request was sent by ID and not by nickname.  Crashed on
+         NULL dereference.
+
+Sat Dec 23 21:55:07 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Fixed a bug in Client library.  IDENTIFY and WHOIS reply functions
+         now correctly save the received data.
+
+       * silc_server_free_sock_user_data now notifies routers in the 
+         network about entities leaving the network.
+
+         At the same time implemented functions silc_server_remove_id
+         and silc_server_send_remove_id to receive and send REMOVE_ID
+         packets.  The packet is used to notify routers in the network
+         about leaving entities.  The ID removed will become invalid in
+         the network.
+
+       * Added function silc_idlist_del_server into server. Removes and
+         free's server entry from ID list.
+
+       * silc_server_private_message function now checks, if we are router,
+         that the destination ID really is valid ID, naturally.
+
+       * In router when NEW_ID packet is received (for new client) the
+         hash of the Client ID is saved in the ID Cache but the
+         client->nickname is set to NULL, instead of putting the hash
+         to it as well.
+
+         IDENTIFY command now also checks that client->nickname must be
+         valid. If it is not if will request the data from the server who
+         owns the client.  Added new function 
+         silc_server_command_identify_check.
+
+       * Added silc_command_set_command into lib/silccore/silcommand.[ch]
+         to set the command to already allocated Command Payload.
+
+       * Tested private message sending in router environment with two
+         routers, two servers and two clients.  Fixed minor bugs and now
+         it works fine.
+
+       * Fixed segfault from client's NAMES command. Used to crash if
+         not on any channel.
+
+       * Forwarded packets must not be routed even if it is not destined
+         to the receiver.  Changed server code comply with this.
+
+Sun Dec 17 14:40:08 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Added `require_reverse_mapping' boolean value to ServerParams
+         structure. If TRUE (not default) the server will require that
+         the connecting host has fully qualified domain name.
+
+         If the reverse mapping is not required and hostname could not be
+         found the IP address is used as hostname.
+
+Sat Dec 16 17:39:54 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Implemented version string checking to both client and server.
+         The check is incomplete currently due to the abnormal version 
+         strings used in development version of SILC.
+
+       * Changed all command functions in server to use the new
+         CHECK_ARGS macro.
+
+Fri Dec 15 15:55:12 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Changed char *data to unsigned char *data in ID Cache system to
+         support binary data as ID Cache data. Changed code to support
+         binary data in lib/silccore/idcache.c.
+
+       * Renamed silc_server_packet_relay_command_reply to 
+         silc_server_command_reply as it is normal packet receiving
+         function. Rewrote the function to accept command replys for
+         servers and not only for clients.
+
+       * Mark remote router always as registered server if we are connecting
+         to it.  Otherwise, commands sent by the router to us are ignored.
+
+       * All ID List find routines now returns the ID Cache Entry pointer
+         as well if requested.
+
+       * WHOIS command works now in router environment, tested with two
+         routers, two servers and two clients.
+
+       * Cleaned up and rewrote IDENTIFY command. IDENTIFY should work now
+         in router environment (as it is almost equivalent to WHOIS) but
+         hasn't been tested thoroughly.  Added new functions:
+
+         silc_server_command_identify_parse
+         silc_server_command_identify_send_reply
+         silc_server_command_identify_from_client
+         silc_server_command_identify_from_server
+
+       * Disabled route cache adding because adding two different ID's with
+         same IP replaces the old cache entry thus giving wrong route.
+         The entry->router->connection is always the fastest route anyway
+         so route cache may not be needed.  Of course, new routes maybe
+         established after receiving the ID when the entry->router->connection
+         might not be anymore the most optimal.
+
 Thu Dec 14 15:55:35 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
 
        * Add route cache for received ID for fast routing.