updates.
[silc.git] / CHANGES
diff --git a/CHANGES b/CHANGES
index 14b9cebdaed00349e7a4f2b6246be0ca5bb2627b..faaa44cbd62a3b4621fbb976c018997d7fa0af51 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,86 @@
+Tue Feb 20 14:14:14 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * The RSA key length is now save to the RsaKey context in the
+         key generation process in lib/silccrypt/rsa.c.  The key length
+         is now used to figure out the maximum size of the block allowed
+         to be encrypted/signed.
+
+       * Added silc_mp_mp2bin_noalloc into lib/silcmath/mpbin.[ch].  It
+         is equivalent to the silc_mp_mp2bin but does not allocate any
+         memory.
+
+       * Changed silc_mp_mp2bin API to take length argument.  If it is
+         non-zero then the buffer is allocated that large.  If zero, then
+         the size is approximated using silc_mp_sizeinbase, which however
+         is not relieable.
+
+Mon Feb 19 19:59:28 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * The client entry's userinfo pointer must be always valid. 
+         Otherwise the [<unknown>] bug will surface beacuse the WHOIS
+         will fail since it requires the userinfo.  Now, the userinfo
+         is allocated as "" if actual userinfo does not exist.  Actually,
+         it must exist and it is totally Ok to drop client connections
+         that does not announce the userinfo.  However, we will make
+         this workaround for now.
+
+       * Added silc_net_get_remote_port into lib/silcutil/silcnet.[ch]
+         to return the remote port by socket.
+
+Mon Feb 19 14:26:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+       * Changed SILC_SERVER_COMMAND_EXEC_PENDING macro to the name
+         SILC_SERVER_PENDING_EXEC and added an new macro
+         SILC_SERVER_PENDING_DESTRUCTOR which is called to free the
+         data or when error occurs while processing the pending command.
+
+         Added new argument `destructor' into silc_server_command_pending
+         and to the SilcServerCommandPending object.  This destructor is
+         now called after calling the pending callback or if error occurs
+         immediately.  If error occurs the actual pending callback won't
+         be called at all - only the destructor.  The destructor may be
+         NULL if destructor is not needed.
+
+         All this applies for client library code as well.  Similar
+         changes were made there as well for the pending commands.
+
+         In the client, the application must now allocate the 
+         SilcClientCommandContext with the silc_client_command_alloc
+         function.
+
+       * Added reference counter to the SilcServerCommandContext.  Added
+         function silc_server_command_alloc and silc_server_command_dup 
+         functions.
+
+         Same type of functions added to the client library for the same
+         purpose as well.
+
+       * Removed the cmd_ident from IDListData away since it is now 
+         global for all connections.  It is the command identifier used
+         in command sending and with pending commands.  The affected file
+         is silcd/idlist.h.
+
+       * Added reference counter to the SilcSocketConnection objecet to
+         indicate the usage count of the object.  The object won't be
+         freed untill the reference counter hits zero.  Currently only
+         server uses this, and client ignores it.  The client must be
+         set to use this too later.  The affected files are
+         lib/silccore/silcsockconn.[ch].  Added also the function
+         silc_socket_dup to increase the reference counter.
+
+         This was mainly added because it is possible that the socket
+         is removed underneath of pending command or other async
+         operation.  Now it won't be free'd and proper DISCONNECTING
+         flags, etc. can be set to avoid sending data to connection that
+         is not valid anymore.
+
+       * Added SILC_SET_DISCONNECTING to server.c when EOF is read from
+         the connection.  After that it sets SILC_SET_DISCONNECTED.
+         It is, however, possible that the socket data is not still freed.
+         The silc_server_packet_process now checks that data is not
+         read or written to connection that is DISCONNECTED.  The socket
+         get's freed when the reference counter hits zero.
+
 Mon Feb 19 00:50:57 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
 
        * Changed the client operation API: channel_message operation's