+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