Thu Mar 13 13:31:35 EET 2008 Pekka Riikonen * Fixed silcd crash in NEW_CLIENT packet handling when nickname is not present in the packet. Affected files are apps/silcd/packet_receive.c. Fri Feb 22 16:12:27 EET 2008 Pekka Riikonen * Fixed partial encryption in CTR mode in AES. Change does not affect interoperability in SILC due to the way CTR is used in SILC. But, fixed anyway. Affected files are lib/silccrypt/aes.c and rijndael_internal.h. Tue Jan 8 09:41:57 EET 2008 Pekka Riikonen * Fixed printable fingerprint bufferoverlfow, RedHat bug 372021. Affected file is lib/silcutil/silcutil.c. Sun Dec 30 14:00:46 EET 2007 Pekka Riikonen * Fixed unix signal delivery in SILC scheduler. Affected file is lib/silcutil/unix/silcunixschedule.c. Sun Nov 18 16:43:04 CET 2007 Jochen Eisinger * Add -avoid-version and -rpath flags when compiling the plugin. Affected file is apps/irssi/src/fe-common/silc/Makefile.in Thu Nov 15 18:03:53 EET 2007 Pekka Riikonen * Reprocess JOIN command synchronously after resolving channel user list. Affected file is lib/silcclient/command_reply.c. * In JOIN command reply check if the channel key is already saved. If it is we have received new key from server while resolving user and must not save the old key. Affected file is lib/silcclient/command_reply.c. * Remove all channel keys and hmacs after giving LEAVE command. Affected file is lib/silcclient/command_reply.c. Tue Nov 13 18:24:56 EET 2007 Pekka Riikonen * Added missing channel unreferencing in CMODE, CUMODE, TOPIC, INVITE, BAN and KICK command replies. Affected file is lib/silcclient/command_reply.c. Sun Nov 11 23:04:54 EET 2007 Pekka Riikonen * Free stream data and abort ongoing protocols correctly for primary router connections receiving end of stream. Affected file is apps/silcd/server.c. Sun Nov 11 16:02:12 EET 2007 Pekka Riikonen * SILC Server 1.1 Beta4. Sun Nov 11 14:15:48 EET 2007 Pekka Riikonen * SILC Toolkit 1.1.5. Sun Nov 11 11:22:35 EET 2007 Pekka Riikonen * Fixed connection authentication with public keys to use correct public key as responder. Affected file is lib/silcske/silcconnauth.c. * Fixed public key authentication in server. Affected file is apps/silcd/serverconfig.c. * Fixed OPER and SILCOPER public key authentication. Affected file is apps/silcd/server.c. * Fixed prefer_passphrase_auth flag in server. Fixed disconnection of unauthenticated connection. Affected file is apps/silcd/server.c. * Fixed client resuming in server. Affected file is apps/silcd/packet_receive.c. * Fixed IDENTIFY and WHOWAS command reply to correctly update client entries (fixes a crash). Affected file is apps/silcd/command_reply.c. Tue Nov 6 16:39:20 EET 2007 Pekka Riikonen * SILC Client 1.1.3. Mon Nov 5 23:07:58 EET 2007 Pekka Riikonen * Zero tail of CTR mode IV in IV Included mode. Change does not cause compatibility issues. Affected file is lib/silcske/silcske.c. Mon Nov 5 22:24:25 EET 2007 Pekka Riikonen * SILC Toolkit 1.1.4. * Fixed CTR mode rekey. Affected file is lib/silcske/silcske.c. * Rewrote the IV Included CTR mode encryption/decryption in packet engine. Affected file is lib/silccore/silcpacket.c. Sun Nov 4 15:20:25 EET 2007 Pekka Riikonen * Removed module_path and module options from the server config file format. Affected file is apps/silcd/serverconfig.c. * Fixed non-IPv6 compilation error. Affected file is lib/silcutil/unix/silcunixnet.c. Sat Nov 3 23:23:38 EET 2007 Pekka Riikonen * Do not free packet engine before uninitializing scheduler. Do not disconnct already disconnected streams. Affected files are in apps/silcd/. * Fixed setting correct ID for re-encrypted channel messages in router-to-router connections. Affected file is apps/silcd/packet_send.c. Sun Sep 30 15:16:18 EEST 2007 Pekka Riikonen * Fixed channel private key deleting when deleting the channel. Affected file is lib/silcclient/client_channel.c. Sun Sep 9 17:52:49 EEST 2007 Pekka Riikonen * SILC Toolkit 1.1.3. * Fixed possible buffer overflows from SILC Config code. Patch from Jérémy Bobbio. Affected file is lib/silcutil/silcconfig.c. Sun Aug 26 12:28:49 EEST 2007 Pekka Riikonen * Fixed TIMEOUT handling in user info resolving during JOINing, fixes crash. Affected file is lib/silcclient/client_notify.c. * Fixed mandatory UN and HN SILC public key identifier checking (both must be present). Affected file is lib/silccrypt/silcpk.c. Tue Aug 7 20:56:06 EEST 2007 Pekka Riikonen * Fixed alignment issues with 64-bit CPUs. Affected files are lib/silcutil/silcschedule.c and unix/silcunixschedule.c. * Added "There are now xx nick's" to "are xx nicks". Affected file is apps/irssi/src/fe-common/silc/module-formats.c. Sat Aug 4 18:37:22 EEST 2007 Pekka Riikonen * Fixed USERS command user mode handling (integer overflow). Affected file is lib/silcclient/command_reply.c. Thu Jul 19 21:08:49 EEST 2007 Pekka Riikonen * Fixed big-endian issues from aes implementation. Affected files are lib/silccrypt/aes.c. * Fixed lib/silcutil/silcatomic.h compilation on IA64. Patch from Jérémy Bobbio. * Fixed public key identifier parsing to check lengths correctly. Affected file is lib/silccrypt/silcpk.c. Wed Jul 4 08:06:38 EEST 2007 Pekka Riikonen * SILC Toolkit 1.1.2. * SILC Client 1.1.2. Mon Jul 2 17:28:47 CEST 2007 Pekka Riikonen * In silc_client_free check that scheduler is allocated before trying to free it. Affected file is lib/silcclient/client.c. * Fixed buffer overflow in NICK_CHANGE notify. The destination buffer for old nickname was too small. Affected file is lib/silclient/client_notify.c. Sun Jul 1 19:15:15 EEST 2007 Pekka Riikonen * SILC Server 1.1 Beta1. Sun Jul 1 12:40:06 EEST 2007 Pekka Riikonen * Added support for rekey with PFS when using CTR mode encryption. Affected file is lib/silcske/silcske.c. * Added silc_idcache_move that can be used to move entries between caches. Affected files are lib/silcapputil/silcidcache.[ch]. * Added better checks for invalid argument and notify payloads. Affected files are lib/silccore/silcnotify.c and silcargument.c. * Fixed SILC_PACKET_FLAG_LONG_PAD bitmask value. Affected file lib/silccore/silcpacket.h. Sat Jun 30 21:48:08 EEST 2007 Pekka Riikonen * Set the destination ID to packet stream as SKE responder if ID was present in key exchange packet. Affected file is lib/silcske/silcske.[ch]. * Handle also zero timeouts in the scheduler notify callback to avoid problems with SILC Plugin. Affected file is apps/irssi/src/silc/core/silc-core.c. Thu Jun 28 19:19:13 EEST 2007 Pekka Riikonen * SILC Client 1.1.1. Sun Jun 24 18:47:55 EEST 2007 Pekka Riikonen * SILC Toolkit 1.1.1. * Compile sources with _GNU_SOURCE on Linux systems. Affected file is configure.ad. Sun Jun 24 16:33:59 EEST 2007 Pekka Riikonen * Fixed Unix signal task dispatching to not lock the signals when dispatching the callback to avoid deadlocks. Affected file is lib/silcutil/unix/silcunixschedule.c. Sun Jun 24 14:43:21 CEST 2007 Jochen Eisinger * Fix configure output for with-plugin. Affected file is apps/irssi/configure.ad Tue Jun 19 17:05:48 EEST 2007 Pekka Riikonen * Added SILC_VERSION macro for checking package versions at compile time. Affected files are configure.ad, includes/silc.h.in and includes/silcversion.h.in. Mon Jun 18 23:47:22 EEST 2007 Pekka Riikonen * Use SILC_VERIFY to assert that silc_rwlock_wrlock can be called only once per thread on Unix. Affected file is lib/silcutil/unix/silcunixthread.c. Added same for mutex as well. Documented same on the API in lib/silcutil/silcmutex.h. * Fixed USERS command reply write-lock unlocking. Affected file is lib/silcclient/command_reply.c. Mon Jun 18 08:14:26 EEST 2007 Pekka Riikonen * Fixed silc_create_key_pair to check for valid identifier. Affected file is lib/silcapputil/silcapputil.c. Sun Jun 17 20:08:26 CEST 2007 Jochen Eisinger * Rewrite signed public message handling, adopting the new hilight interface. Affected file is apps/irssi/src/fe-common/silc/fe-silc-messages.c Thu Jun 14 21:15:31 CEST 2007 Jochen Eisinger * Fix off by one error when loading modules. Affected file is apps/irssi/src/core/modules-load.c * Don't delete hilight entry (because it's just a pointer, not a copy). Affected file is apps/irssi/src/fe-common/silc/fe-silc-messages.c Mon Jun 11 22:10:17 EEST 2007 Pekka Riikonen * Added __SILC_TOOLKIT_x_x_x macro to all Toolkit distribution which can be used to check for Toolkit version in third-party software. Affected file is configure.ad, includes/silc.h.in. Sun Jun 10 17:32:15 EEST 2007 Pekka Riikonen * Added support for channel@server channel name strings to client library (SILC protocol version 1.3 change). Affected files are lib/silcclient/silcclient_entry.h, client_entry.c. * Added full_nicknames and full_channel_names settings to SilcClientParams that can be used to specify whether client library returns full nickname and channel name strings. Full strings are nick@server and channel@server. Affected file is lib/silcclient/client_entry.c and command.c. Sat Jun 9 19:43:25 EEST 2007 Pekka Riikonen * Fixed unix connecting failure to return error code correctly. Affected file is lib/silcutil/unix/silcunixnet.c. Fri Jun 8 23:32:33 EEST 2007 Pekka Riikonen * Fixed SKE timeout double free crash. Affected file is lib/silcske/silcske.c. * Fixed MIME multipart decoding buffer overflow. Affected file is lib/silcutil/silcmime.c. Thanks to Matt Miller for patch. Fri Jun 8 18:39:34 EEST 2007 Pekka Riikonen * Fixed connection auth protocol timeout crash. Affected file is lib/silcske/silconnauth.c. * Fixed FSM machine finishing to check for existing threads at the final free callback to allow time for the threads to finish. Affected file lib/silcutil/silcfsm.c. Thu Jun 7 21:25:31 EEST 2007 Pekka Riikonen * Fixed silc_client_get_clients_local to check the nick's server also if nick@server nickname string is given to the function. Affected file is lib/silcclient/client_entry.c. Wed Jun 6 18:33:05 EEST 2007 Pekka Riikonen * Added notify callback to silc_schedule_init which can be used to set a notify callback for scheduler which is called when task is added to scheduler or deleted from scheduler. Affected file is lib/silcutil/silcschedule.[ch]. * Dispatch timeout tasks after dispatching FD tasks if the timeout was very short. Affected file is lib/silcutil/silcschedule.c. * Rewrote the SILC scheduler handling in SILC Client to not poll every few msecs but to use the new notify callback. Affected file is apps/irssi/src/silc/core/silc-core.c. * Fixed SFTP client library read buffer size which was too small. Affected file is lib/silcsftp/sftp_client.c. * Fixed file transfer crash bug in /QUIT in SILC Client. Close the FTP sessions before quitting the client. Affected file is apps/irssi/src/silc/core/silc-servers.c. Tue Jun 5 20:48:40 EEST 2007 Pekka Riikonen * Fixed silc_packet_get_ids to decode the IDs correctly. Affected file is lib/silccore/silcpacket.c. * Fixed silc_client_get_clients_local to parse correctly nickname string that may have server name in it (nick@server) regardless whether it was formatted nickname or not. Affected file is lib/silcclient/client_entry.c. Mon Jun 4 22:02:53 CEST 2007 Jochen Eisinger * Only destroy sendbuffers, if they still exist (they cease to exist during /upgrade). Affected file is apps/irssi/src/silc/core/silc-servers.c Mon Jun 4 21:24:17 EEST 2007 Pekka Riikonen * Removed --enable-silc-plugin. Added --with-silc-plugin. Affected files are configure.ad, lib/configure.ad, apps/irssi/configure.ad, apps/irssi/configure.in, apps/irssi/scripts/Makefile.am, apps/irssi/scripts/examples/Makefile.am, apps/irssi/src/silc/core/silc/Makefile.am, apps/irssi/src/fe-common/silc/Makefile.am. Mon Jun 4 08:35:59 EEST 2007 Pekka Riikonen * SILC Client 1.1. Sun Jun 3 14:00:09 EEST 2007 Pekka Riikonen * Fixed DESTDIR handling in make install. Sat Jun 2 21:04:32 EEST 2007 Pekka Riikonen * SIM modules are not delivered to SILC CLient distribution anymore. * Changed default installation path from /usr/local/silc to /usr/local for all distributions. * Removed --with-etcdir and --with-docdir. The etcdir is now the system's default. The Docdir is system's default. Sat Jun 2 00:51:57 EEST 2007 Pekka Riikonen * If public key/private key loading fails set the return pointer to NULL. Affected file is lib/silccrypt/silcpkcs.c. * If private key loading fails in silc_load_key_pair free the loaded public key. Affected file is lib/silcapputil/silcapputil.c. * Fixed key pair loading crash with SILC Plugin if key pair loading fails. Affected file is apps/irssi/src/silc/core/silc-core.c. * Fixed SILC Client help and script file installation path to go to prefix/share/silc. Affected files are apps/irssi/src/scripts/Makefile.am and apps/irssi/docs/help/Makefile.am.gen. Thu May 31 16:49:13 EEST 2007 Pekka Riikonen * Fixed UTC offset minutes to be actually minutes. Affected file is lib/silcutil/silctime.c. Thu May 31 09:40:56 EEST 2007 Pekka Riikonen * SILC Toolkit 1.1. * Added support for checking for timezone and tm_gmtoff. Affected files are configure.ad and lib/silcutil/silctime.c. Wed May 30 18:46:34 EEST 2007 Pekka Riikonen * Added silc-toolkit.spec.in RPM spec file. Mon May 28 23:21:39 EEST 2007 Pekka Riikonen * Fixed nickname formatting crash when updating existing client entry. Affected file is lib/silcclient/client_entry.c. * Fixed MIME object encoding in attribute payload encoding. Affected file is lib/silccore/silcattrs.c. Mon May 28 09:02:26 EEST 2007 Pekka Riikonen * SILC Client 1.1 Beta6 Sun May 27 20:38:30 EEST 2007 Pekka Riikonen * Copy SILC Plugin's libfe_common_silc.so to libfe_silc.so so that user's don't have to do it manually. Affected file is apps/irssi/src/fe-common/silc/core/Makefile.am. Thu May 24 15:30:31 EEST 2007 Pekka Riikonen * SILC Toolkit 1.1 Beta4. * Fixed channel and server entry freeing in client library. Affected file is lib/silcclient/client_entry.c. * Do not allow stopping client before it has been started. Affected file is lib/silcclient/client.c. Wed May 23 23:21:03 EEST 2007 Pekka Riikonen * Fixed formatted nickname renaming to rename also irssi's nicklist (/NAMES etc). Affected file is apps/irssi/src/silc/core/client_ops.c. * Fixed SILC Plugin crash when stopping client library before it has been started. Affected file is apps/irssi/src/silc/core/silc-core.c. Tue May 22 17:18:54 EEST 2007 Pekka Riikonen * For SILC Client and SILC Server check for 1.1 Toolkit in configure. Affected file is configure.ad. * Added better library linking flags and orders for SILC Client. Affected file is configure.ad, Makefile.defines_int.in and apps/irssi/src/fe-text/Makefile.am Mon May 21 08:26:38 EEST 2007 Pekka Riikonen * SILC Client 1.1 Beta5. Sun May 20 18:34:22 CEST 2007 Jochen Eisinger * Add hooks for Irssi 0.8.11 module functions. Affected file is apps/irssi/src/fe-common/silc/fe-common-silc.c Sat May 19 14:46:36 EEST 2007 Pekka Riikonen * Fixed passphrase authentication with server. Affected file is lib/silcclient/client_connect.c. * Fixed passphrase authentication as responder. Affected file is lib/silcske/silcconnauth.c. * Changed SilcAskPassphrase and SilcGetAuthMeth callbacks to return data as const. Affected file is lib/silcclient/silcclient.h. * Fixed timeout calculation in Symbian scheduler. Affected file is lib/silcutil/symbian/silcsymbianscheduler.c. Fri May 18 21:10:38 EEST 2007 Pekka Riikonen * Do not uninitialize u.m.threads atomic int in finish but in free. Fixes crash on any platform using atomic operations using mutexes (like Symbian). Affected file is lib/silcutil/silcfsm.c. * Fixes Symbian scheduler wakeup synchronization. Affected file is lib/silcutil/symbian/silcsymbianscheduler.c. Fri May 18 18:10:36 EEST 2007 Pekka Riikonen * Fixed nickname formatting to handle already formatted nicknames better. Affected file is lib/silccilent/client_entry.c. * Added "foo#2 appears as foo" support to SILC Client when user leaves or quits and one formatted nickname remain. Affected file is apps/irssi/src/silc/core/client_ops.c. * Send SilcChannelEntry to application in SILC_NOTIFY_TYPE_SIGNOFF. Affected file is lib/silcclient/client_notify.c. Thu May 17 18:05:10 EEST 2007 Pekka Riikonen * Fixed silc_show_public_key to not free public key in case of failure. Affected file is lib/silcapputil/silcapputil.c. Thu May 17 17:09:50 EEST 2007 Pekka Riikonen * SILC Toolkit 1.1 Beta3. * Porting Toolkit to Symbian. It should work while some sporadic odd crashes remain. However I was able to run mybot on SILCNet. Basically tested scheduler, net routines, socket routines, threads and some other utility routines. Affected files are in lib/silcutil/symbian/. Thu May 17 11:57:40 EEST 2007 Pekka Riikonen * Show realname and email address from public key when verifying cached public keys with GETKEY. Affected files are apps/irssi/src/fe-common/module-formats.[ch] and apps/irssi/src/silc/core/client_ops.c. Wed May 16 20:41:04 CEST 2007 Jochen Eisinger * Include SILC Plugin theme. Affected file is apps/irssi/plugin.theme * Include SILC Plugin /silc command help. Affected file is apps/irssi/docs/help/silc * Create channels before joining them. Affected file is apps/irssi/src/silc/core/client_ops.c Wed May 16 18:59:22 EEST 2007 Pekka Riikonen * Fixed channel private key listing with /key. Affected file is apps/irssi/src/silc/core/silc-channels.c. * Fixed the public headers from anonymous structures. Affected files are lib/. * Changed silc_buffer_*len macros to inline functions. Affected file is lib/silcutil/silcbuffer.h. Wed May 16 10:21:45 EEST 2007 Pekka Riikonen * Fixed nickname format parsing in JOIN notify handling and in WHOIS command reply. Affected file is apps/irssi/src/silc/core/client_ops.c. Wed May 16 09:34:10 EEST 2007 Pekka Riikonen * SILC Client 1.1 Beta4. Tue May 15 23:55:41 EEST 2007 Pekka Riikonen * Added SILC_VERIFY macro which is equivalent to SILC_ASSERT but is compiled always in. Affected file is lib/silcutil/silclog.h. * Use SILC_VERIFY in FSM macros instead of SILC_ASSERT which is not there in release builds. Affected file is lib/silcutil/silcfsm.h. Tue May 15 21:19:09 CEST 2007 Jochen Eisinger * SILC Client 1.1-beta3 Mon May 14 23:20:59 EEST 2007 Pekka Riikonen * Added silc_utf8_c2w and silc_utf8_w2c to do UTF-8 to widechar and widechar to UTF-8 conversions. Affected files are lib/silcutil/silcutf8.[ch]. Mon May 14 19:45:14 CEST 2007 Jochen Eisinger * Include a README for the SILC Plugin Sun May 13 22:08:59 CEST 2007 Jochen Eisinger * Adopt perl Makefiles for SILC Plugin. Sun May 13 18:27:13 EEST 2007 Pekka Riikonen * Fixed client library initialization when the running callback is not given to silc_client_init. Affected file is lib/silcclient/client.c. * Fixed Symbian compilation problems around the tree. Added new Carbide.c++ project files to symbian/ directory. * Fixed SilcLog API to work on Symbian. On Symbian it doesn't use any globals. Affected files are lib/silcutil/silclog.c and silclog_i.h. Sun May 13 16:54:35 CEST 2007 Jochen Eisinger * Fix several warnings in Irssi's Makefiles. Sun May 13 12:16:30 CEST 2007 Jochen Eisinger * Disable ASM if --with-pic was given. Affected file is lib/silccrypt/configure.ad Fri May 11 19:10:54 EEST 2007 Pekka Riikonen * Wakeup scheduler in silc_fsm_continue and silc_fsm_next_later in case they are called from a thread. Affected file is lib/silcutil/silcfsm.c. * Fixed WIN32 thread creation to handle the Tls correctly. Affected file is lib/silcutil/win32/silcwin32thread.c. Thu May 10 18:29:18 EEST 2007 Pekka Riikonen * SILC Toolkit 1.1-beta2. Thu May 10 18:21:10 EEST 2007 Pekka Riikonen * Fixed silc_net_tcp_connect crash on Unix and Win32. Handle the socket async operation correctly. Changed that DNS lookup is now done during connecting. Affected files are lib/silcutil/[unix|win32]/silc[unix|win32]net.c. * Changed also silc_net_tcp_connect on Symbian to do DNS lookup. Affected file is lib/silcutil/symbian/silcsymbiannet.c. * Optimize silc_net_gethostbyname to check if the name is already IP address. Affected file is lib/silcutil/silcnet.c. Wed May 9 19:51:28 EEST 2007 Pekka Riikonen * Print filename instead of empty function name in debug output on WIN32. Affected files are lib/silcutil/silclog_i.h and silclog.c. * Rewrote WIN32 SILC Scheduler. It now handles non-blocking file descriptors and sockets better. Though, room for optimization remains. Affected file is lib/silcutil/win32/silcwin32schedule.c. * Removed silc_net_win32_[init|uninit]. They are called now automatically when SILC Scheduler is allocated. Wrote IPv4 address parser because inet_addr seemed not to work on my WIN32. Affected file is lib/silcutil/win32/silcwin32net.c. * Improved socketstream.h and stream.h documentation. Tue May 8 18:13:38 EEST 2007 Pekka Riikonen * Changed private message waiting API in client library to make it work better with multiple waiting threads. The waiting is not always per client entry instead of per connection. Affected files are lib/silcclient/client_prvmsg.c, client.h and silcclient.h. * Changed silc_packet_wait_init function to accept the the expected Source ID of the packet as argument. If specified only packets with the specified types and Source ID are delivered. Affected files are lib/silccore/silcpacket.[ch]. * Fixed file transfer disconnection crash when closing the session directly in the monitor callback after disconnection. Affected file is lib/silcclient/client_ftp.c. * Make Toolkit compile on WIN32. Affected files in win32/ and in lib/silcutil/win32/. * Changed silc_compare_timeval to return negative, zero or positive instead of just TRUE or FALSE. This fixes 0 timeout task dispatching on Windows. Affected files are lib/silcutil/silctime.[ch] and silcschedule.c. Mon May 7 18:18:48 EEST 2007 Pekka Riikonen * Fixed CMODE channel auth public key retrieval. Affected file is lib/silcclient/command.c. * Fixed CMODE command reply to return channel public keys correctly. Affected files are lib/silcclient/command_reply.c and client_channel.c. Sun May 6 12:43:19 EEST 2007 Pekka Riikonen * Added current channel key cipher name and HMAC name to SilcChannelEntry. Fixed channel private key creation. Affected files are lib/silcclient/client_channel.c, client_entry and silcclient_entry.h. * Allow formatted nicknames as input to silc_client_get_clients and silc_client_get_clients_whois. Affected file is lib/silcclient/client_entry.c. * Fixed silc_message_payload_free crash. Affected file is lib/silccore/silcmessage.c. * Added SILC_STATUS_ERR_NO_SUCH_PUBLIC_KEY to lib/silccore/silcstatus.h. Thu May 3 18:07:50 EEST 2007 Pekka Riikonen * Imported libtommath 0.41. Renamed all mp_* functions to tma_mp_* functions to avoid rare linking problems on systems with mp_* functions. Affected files are in lib/silcmath/. Wed May 2 17:46:25 EEST 2007 Pekka Riikonen * SILC Toolkit 1.1 Beta1. Wed May 2 11:38:17 EEST 2007 Pekka Riikonen * Set the server and router operator modes to local entry after successful OPER or SILCOPER commands. Affected file is lib/silcclient/command_reply.c. Tue May 1 14:17:06 EEST 2007 Pekka Riikonen * Ported SILC Socket Stream API, SILC Net API, SILC Schedule API, and other smaller APIs to WIN32. Affected files are in lib/silcutil/win32/. * Changed the various regex APIs as generic code in util library. Affected files are lib/silcutil/silcstrutil.[ch]. Sat Apr 28 13:47:47 EEST 2007 Pekka Riikonen * Ported SILC Server to the new Toolkit API, working towards SILC Server 1.1. Affected files are in apps/silcd/. * Added silc_skr_del_public_key, silc_skr_[ref|unref]_public_key to lib/silcskr/silcskr.[ch]. * Fixed SILC public key copying to copy the identifier also. Affected file is lib/silccrypt/silcpk.c. * Added silc_packet_error_string to lib/silccore/silcpacket.[ch]. * Fixed OPER and SILCOPER passphrase asking in Client library. Affected file is lib/silcclient/command.c. Tue Apr 24 17:55:24 EEST 2007 Pekka Riikonen * Fixed command queue enabling after connecting to server. The comparisons was from after changing to silc_utf8_strcasecmp. Affected file is apps/irssi/src/silc/core/silc-servers.c. * Fixed nickname setting with own client entry with 1.3 protocol version server. Affected file lib/silcclient/client_register.c. * Ignore error notify for local client entry. Affected file is lib/silcclient/client_notify.c. * Implemented responder rekey to SKE library. Affected files are lib/silcske/silcske.[ch]. * Fixed connection auth protocol completion sending. Affected file lib/silcske/silcconnauth.c. Mon Apr 23 17:20:01 EEST 2007 Pekka Riikonen * Do not call TCP network listener callback with any error status, as documented. Affected file is lib/silcutil/unix/silcunixnet.c. Sun Apr 22 21:13:28 EEST 2007 Pekka Riikonen * Preliminary SILC Server 1.1 changes committed to apps/silcd/. * Added SILC_SKR_USAGE_SERVICE_AUTHORIZATION SKR key usage type. Changed silc_skr_find to have SilcSchedule argument and removed it from silc_skr_[alloc|init]. Affected files are lib/silcskr/silcskr.[ch]. * Allow NULL id for silc_idcache_add. Affected file is lib/silcapputil/silcidcache.c. * Added silc_packet_stream_is_valid, silc_packet_get_ids and silc_packet_engine_get_streams to lib/silccore/silcpacket.[ch]. Fixed also channel message encryption with router-to-router packets. * Added silc_id_str2id2 to lib/silccore/silcid.[ch]. * Added silc_net_get_error_string, silc_net_listener_get_ip and silc_net_listener_get_hostname to lib/silcutil/silcnet.[ch]. Tue Apr 10 15:55:42 CEST 2007 Jochen Eisinger * Add option --enable-silc-plugin. Affected files are apps/irssi/configure.{ad,in} * Only compile the SILC Plugin if required. Affected files are apps/irssi/src/Makefile.am, apps/irssi/src/fe-common/Makefile.am * Conditionally build the SILC Plugin. Affected files are apps/irssi/src/silc/core/Makefile.am, apps/irssi/src/fe-common/silc/Makefile.am * Backout delayed protocol exit and replace with a lame busy wait. Affected files are apps/irssi/src/fe-text/silc.c, apps/irssi/src/silc/core/silc-core.c * Fix key generation for SILC Plugin. Affected file apps/irssi/src/silc/core/clientutil.c Tue Apr 10 12:40:19 CEST 2007 Jochen Eisinger * Only pass -rpath to libtool when building shared libraries. Affected file lib/Makefile.ad * Removing the stray "s" in configure.ad Sat Mar 24 19:13:58 CET 2007 Jochen Eisinger * Redraw the screen after creating a new key. Affected file apps/irssi/src/silc/core/clientutil.c Sun Mar 18 15:54:10 EET 2007 Pekka Riikonen * Added SILC Client setting /set nickname_format that specifies the nickname format string. Changed default nickname format string to "%n#%a". Affected file is apps/irssi/src/silc/core/silc-core.c, apps/irssi/silc.conf. * Fixed nickname parsing with WHOIS command to accept formatted nicknames. Changed the silc_client_get_clients_local to allow the searched nickname to be formatted nickname. Removed %s and %S nickname formatters. Affected files are in lib/silcclient/. * Added silc_client_nickname_parse to Client library API. Affected file is lib/silcclient/silcclient.h. * Fixed nickname parsing and resolving with /MSG, /FILE and /KEY commands. Affected file are apps/irssi/src/silc/core/silc-servers.c and silc-channels.c. Sat Mar 17 19:07:15 CET 2007 Jochen Eisinger * Incorporate SILC Plugin patches. Affected files are apps/irssi/src/fe-common/silc/module-formats.{c,h}, apps/irssi/src/silc/core/clientutil.{c,h}, apps/irssi/src/silc/core/silc-core.c, apps/irssi/src/silc/core/silc-chatnets.{c,h}, apps/irssi/src/fe-common/silc/fe-silcnet.c, and apps/irssi/src/fe-common/silc/module.h Wed Mar 14 17:31:28 EET 2007 Pekka Riikonen * In notify handling resolve user entries many times if the resolving timedout. Affected file lib/silcclient/client_notify.c. * silc_client_get_clients_local do not return any invalid entries. Affected file is lib/silcclient/client_entry.c. * Do not print "there are now xx user on this channel" for users that actually aren't anymore on the channel. Affected file is apps/irssi/src/client_ops.c. Sun Mar 11 17:43:18 CET 2007 Jochen Eisinger * When joining channels with a password given in the config file, use it. Also use it when cycling (it would be better to get the password from the server, but this isn't possible in SILC). Affected files apps/irssi/src/silc/core/silc-servers.c, apps/irssi/src/silc/core/silc-channels.c Sun Mar 11 15:22:42 CET 2007 Jochen Eisinger * Import perl script for sign_messages from silc-plugin. Affected file apps/irssi/scripts/silc.pl Sun Mar 11 15:19:10 CET 2007 Jochen Eisinger * Only wait for a nick on connecting, when it differs (not counting case) from the username. Affected file is apps/irssi/src/silc/core/silc-servers.c Sun Mar 11 13:50:53 CET 2007 Jochen Eisinger * Use time settings for lag settings. Affected file is apps/irssi/src/silc/core/silc-lag.c Tue Feb 27 17:07:34 EET 2007 Pekka Riikonen * Added silc_thread_yield. Affected file is lib/silcutil/silcmutex.h. Wed Feb 21 17:01:01 EET 2007 Pekka Riikonen * Fixed WHOIS command and requested attributes handling in client library. Affected files are lib/silcclient/command.c and lib/silcclient/client_attrs.c. * Fixed silc_time_value to actually work. Added new function silc_timezone. Affected files are lib/silcutil/silctime.[ch]. Tue Feb 20 08:31:28 EET 2007 Pekka Riikonen * SILC Client 1.1 beta2. Mon Feb 19 16:06:27 EET 2007 Pekka Riikonen * Fixed client to properly abort TCP stream creation when giving /QUIT. Affected file apps/irssi/src/silc/core/silc-servers.c. * Fixed several connecting aborting crashes from the client library, packet engine and socket stream. Affected files are in lib/silclient/, lib/silccore/silcpacket.c and lib/silcutil/unix/silcunixsocketstream.c. * Fixed private key export double free crash in key generation. Affected file is lib/silccrypt/silcpk.c. * Fixed FSM event waiting when there are multiple signallers and the waiter goes away after the first signal. Affected file in lib/silcutil/silcfsm.c. Sun Feb 18 22:02:22 EET 2007 Pekka Riikonen * Fixed FSM event signalling to check if the waiter has gone away already. Affected file is lib/silcutil/silcfsm.c. * Fixed counter mode encryption/decryption to handle non-padded SILC packets correctly. The silc_cipher_set_iv now in counter mode resets for a new block. Affected files are in lib/silcske/, lib/silccrypt/, lib/silcpacket/. Sun Feb 18 12:15:21 EET 2007 Pekka Riikonen * SILC Client 1.1 beta1. * Memory leak fixes around the libraries. Fri Feb 16 16:53:16 EET 2007 Pekka Riikonen * Added better check for epoll() in configure. Affected file is lib/configure.ad. Thu Feb 15 16:50:34 EET 2007 Pekka Riikonen * Fixed per scheduler data input buffer in packet engine. Use list of inbufs instead of just one so that multiple streams can do partial reads to different buffers. Affected file is lib/silccore/silcpacket.c. * Fixed WATCH notify handling in client library. Affected file is lib/silcclient/client_notify.c. Wed Feb 14 17:05:38 EET 2007 Pekka Riikonen * Fixed packet wrapper stream API to support encoder/decoder for packets, and to handle partial reading correctly. Fixed also inbuf size checking in reading to have enough space before reading. Affected files are lib/silccore/silcpacket.[ch]. * Rewrote file transfer in client library. Affected files are in lib/silcclient/. * Added TCP/UDP listener (internal) API to client library to have generic way of dealing with listeners. Fixed Key Agreement and file transfer to use it. Affected files are in lib/silcclient/. * Fixed SKE to process SUCCESS packets synchronously and to call completion synchronously. Affected file is lib/silcske/silske.c. * Fixed pthread rwlock detection. Affected file includes/silc.h.in. * Implemented SILC_ATTRIBYUTE_PHONE_NUMBER. Affected files are lib/silccore/silcattrs.[ch]. SILC Protocol version 1.3 change. Fri Feb 2 22:24:11 EET 2007 Pekka Riikonen * Added support for SILC protocol version 1.3 NEW_CLIENT packet to client library. Affected file is lib/silcclient/client_register.c. * Serialize NICK and JOIN commands to avoid problems locally with changing ID while joining to channel. Affected file is lib/silcclient/command.c. * Fixed entry resolving while handling incoming JOIN notify. Handle properly cases, in re-processing of notify packets, where the IDs may become invalid while resolving the entry (like nick change). Entry is invalid if it doesn't have nickname, and such entries are not delivered to application anymore. These fixes problems of not seeing JOINs when remote user changes nickname at the same time. Affected files are in lib/silcclient/. Thu Feb 1 18:35:58 EET 2007 Pekka Riikonen * Added support for computing message payload MAC in new way (SILC Protocol version 1.3). Bakcwards support for old way remains. Affected files are lib/silccore/silcmessage.[ch]. Sat Jan 27 22:37:30 EET 2007 Pekka Riikonen * Added SilcRwLock API, a read/write lock. Affected files are lib/silcutil/silcmutex.h and in lib/silcutil/[unix|win32|symbian]/. Wed Jan 24 18:55:21 EET 2007 Pekka Riikonen * Merged Irssi SVN (irssi 0.8.11). Affected files in apps/irssi/. Tue Jan 23 16:05:27 EET 2007 Pekka Riikonen * The silc_schedule_set_listen_fd now returns boolean value. Fixed FD task adding to check correctly for already added FD tasks. Added stricter error checking for FD scheduling with epoll(). Affected files are lib/silcutil/silcschedule.[ch] and lib/silcutil/unix/silcunixschedule.c. * The silc_stream_set_notifier now returns boolean value. Changed all streams to support and check for the error condition. Affected files are in lib/silcutil/. * Fixed SKE library session aborting and deletion. Affected file are lib/silcske/silcske.c. Tue Jan 16 18:22:08 EET 2007 Pekka Riikonen * Implemented PKCS #1 with appendix with hash OID in the signature. Affected files are lib/silccrypt/silcpkcs1.[ch], lib/silccrypt/silchash.[ch] and lib/silcasn1/silcasn1[_encode|decode].[ch]. Sun Jan 14 23:12:41 EET 2007 Pekka Riikonen * Added support for Version (V) SILC public key identifier. Affected files are lib/silccrypt/silcpk.[ch]. Tue Jan 9 19:37:51 EET 2007 Pekka Riikonen * Rewrote connection auth request in client library. It is now done automatically by the library and the resolved method given as a hint to get_auth_method client operation. Affected files are lib/silcclient/. Wed Jan 3 18:06:33 EET 2007 Pekka Riikonen * Added silc_packet_stream_wrap into lib/silccore/silcpacket.[ch]. It can be used to wrap SilcPacketStream into SilcStream. * Fixed %p formatting from silc_snprintf. Affected file is lib/silcutil/silcsnprintf.c. * Ported SFTP library to new utility library. Ported also the SFTP testers. Affected files in lib/silcsftp/. Tue Jan 2 17:18:46 EET 2007 Pekka Riikonen * Added lib/silcutil/silcsnprintf.[ch]. Added in addition of silc_snprintf, silc_vsnprintf, silc_asprintf and silc_vasprintf. Sat Dec 30 23:23:17 EET 2006 Pekka Riikonen * Added preliminary Symbian support. Changes around the source tree. The symbian/ directory now includes Carbide.c++ project files to compile the sources. * Added silc_snprintf. Affected files are lib/silcutil/silcstrutil.[ch]. Thu Dec 21 18:01:51 EET 2006 Pekka Riikonen * Changed SILC_FSM_[CONTINUE|YIELD|WAIT|FINISH] enums to macros. SILC_FSM_CONTINUE macro now immediately calls the next state instead of first returning back to FSM. Helps in debugging crashes etc. Removed FSM Semaphores. Introduced FSM Event which is asynchronous event. Affected files are in lib/. * Added epoll(7) support to SILC Scheduler. It is used by default if it is available. Affected files are lib/silcutil/silcschedule.[ch], lib/silcutil/unix/silcunixschedule.c. Tue Dec 19 20:39:35 EET 2006 Pekka Riikonen * Added CTR mode to AES. Simplified cipher implementation API more. Affected files are in lib/silccrypt/. Sun Dec 17 16:46:55 EET 2006 Pekka Riikonen * Removed `detach' client operation. The detachment data is now delivered in SILC_COMMAND_DETACH command reply to application. Affected file in lib/silcclient/. * Rewrote resuming/detaching in client library. * Added boolean encryption indicator for silc_cipher_set_key. Affected files lib/silccrypt/silccipher.[ch]. Wed Dec 13 18:05:50 EET 2006 Pekka Riikonen * Added silc_likely and silc_unlikely macros for GCC branch prediction optimizations. Affected file lib/silcutil/silctypes.h. * Added assembler AES optimization. Cleaned up the SILC Cipher implementation API. Affected files are in lib/silccrypt/. Tue Dec 12 18:56:14 EET 2006 Pekka Riikonen * Changed back the SILC_FSM_THREAD_WAIT operation to not continue to next state if thread is finished already. That check is not done anymore. Affected files are lib/silcutil/silcfsm.[ch]. Sun Dec 10 13:54:52 EET 2006 Pekka Riikonen * Removed silc_packet_[get|set]_ciphers and silc_packet_[get|set]_hmacs. Added silc_packet_set_keys that handle REKEY_DONE packet sending in rekey. Affected files are lib/silccore/silcpacket.[ch]. * Added silc_fsm_is_started. Affected files are lib/silcutil/silcfsm.[ch]. * Added settings sign_channel_message, sign_private_message and key_exchange_rekey_pfs to SILC Client. Added UDP transport support for key agreement in /KEY command. Affected files in apps/irssi/src/silc/core/. * During SILC Client initialization forward log messages to stderr. Affected files in apps/irssi/src/silc/core/. Thu Dec 7 19:07:21 EET 2006 Pekka Riikonen * Added silc_ske_get_key_material. Affected files are lib/silcske/silcske.[ch]. * Added silc_packet_stream_is_udp. Affected files are lib/silccore/silcpacket.[ch]. * Added SKE packet retransmission support with UDP transport. Affected file is lib/silcske/silcske.c. Sun Dec 3 22:00:12 EET 2006 Pekka Riikonen * Added silc_socket_stream_is_udp. Affected file is lib/silcutil/silcsocketstream.[ch]. * Added UDP transport support to packet engine. Affected file is lib/silccore/silcpacket.c. * Added silc_socket_stream_is_udp. Affected file is lib/silcutil/silcsocketstream.[ch]. Sat Nov 18 11:33:03 EET 2006 Pekka Riikonen * Added silc_packet_send_va[_ext] to send variable argument formatted buffers. Affected files lib/silcore/silcpacket.[ch]. * Timeout freelist garbage collection added to scheduler. Affected file lib/silcutil/silcschedule.c. Thu Nov 9 18:12:15 EET 2006 Pekka Riikonen * Added silc_show_public_key_file to lib/silcapputil/silcapputil.[ch]. * Added SILC_STR_ADVANCE support for buffer unformatting. Affected file lib/silcutil/silcbuffmt.c. Tue Nov 7 18:04:36 EET 2006 Pekka Riikonen * Added SILC_STR_ADVANCE. Affected file is lib/silcutil/silcbuffmt.[ch]. * The silc_buffer_strformat preserves buffer locations now. * Added lib/silcutil/silcatomic.h for atomic operations. Sat Sep 16 11:23:06 EEST 2006 Pekka Riikonen * Added lib/silchttp, SILC HTTP server, a very simple HTTP server. * Fixed MIME deocing when data portion is not present. Affected file lib/silcutil/silcmime.c. Wed Jul 19 12:06:38 EEST 2006 Pekka Riikonen * Moved lib/silccore/silcidcache.[ch] to lib/silcutil/. * Added IV Included support to packet routines, to allow packet sending and receiving on UDP/IP. Affected files are lib/silccore/silcpacket.[ch]. * Added SILC_FSM_YIELD. Affected files lib/silcutil/silcfsm.[ch]. Tue Jul 18 20:10:28 EEST 2006 Pekka Riikonen * Added UDP support to network and socket stream library. Sat Jun 24 22:33:18 EEST 2006 Pekka Riikonen * Added conditional variables. New files are lib/silcutil/silcondvar.h and platform specific implementations. Thu Jan 5 20:02:31 CET 2006 Patrik Weiskircher * make sure session->hostname and session->port are valid before the application callback is done, since things will go wrong if the application immediately calls silc_client_file_receive. Affected file lib/silcclient/client_ftp.c. Patch received from Stefan Siegel , thanks! Fri Dec 30 22:54:21 EET 2005 Pekka Riikonen * New SILC PKCS API enabling support for other public keys and certificates, lib/silccrypt/silcpkcs.[ch], silcpk.[ch]. * Separated SILC Public Key Payload routines from the PKCS API to lib/silccore/silcpubkey.[ch]. Wed Dec 28 13:55:22 EET 2005 Pekka Riikonen * Added SILC Key Repository library, lib/silcskr. * Added SILC Server library, lib/silcserver. Mon Dec 19 18:04:24 EET 2005 Pekka Riikonen * MIME objects in attributes now use SilcMime. Affected files are lib/silccore/silcattrs.[ch]. Sat Dec 17 20:13:31 EET 2005 Pekka Riikonen * Synchronize semaphore posting for real threads in FSM. Affected files are lib/silcutil/silcfsm.c, silcfsm_i.h. Mon Nov 28 17:06:54 EET 2005 Pekka Riikonen * Added silc_file_set_nonblock. Affected file is lib/silcutil/silcfileutil.h. * Added silc_fd_stream_file to lib/silcutil/silcfdstream.[ch]. Sat Nov 26 16:13:40 EET 2005 Pekka Riikonen * FSM based implementation of SILC SKE. Simpler interface also. Affected files are in lib/silcske/. * Added SilcBool type. Affected file lib/silcutil/silctypes.h. Sat Nov 19 17:34:51 EET 2005 Pekka Riikonen * Added SilcMime API to lib/silcutil/silcmime.[ch]. The old silc_mime_parse is available but deprecated. * Check that packet is valid when processing key exchange, authentication and rekey protocols. Fixes a crashbug. Affected files are apps/silcd/protocol.c and lib/silcclient/protocol.c. * Added SILC_HASH_MAXLEN to lib/silccrypt/silchash.h, and changed all hash buffers to use that instead of fixed values. Wed Nov 16 15:47:12 EET 2005 Pekka Riikonen * Added SHA-256 to crypto library. The SHA-256 takes now precedence over SHA-1. Thu May 26 20:31:06 EEST 2005 Pekka Riikonen * Check for valid return value from regcomp. Affected file lib/silcutil/unix/silcunixutil.c. Tue May 10 23:11:17 EEST 2005 Pekka Riikonen * Fixed silc_hash_uint to work with integers. Affected file lib/silcutil/silcutil.c. Tue May 10 15:11:53 EEST 2005 Pekka Riikonen * Rewritten SILC Log API. Affected files lib/silcutil/silclog.[ch]. Mon May 9 12:00:08 EEST 2005 Pekka Riikonen * Fixed channel public key list saving on JOIN command reply on backup router. Affected file apps/silcd/command_reply.c. Mon May 2 10:42:49 EEST 2005 Pekka Riikonen * Added default limit how many channels client can join, default is 50. Added 'channel_join_limit' configuration option to server too. Affected files are apps/silcd/command.c and serverconfig.[ch]. Sun May 1 17:42:55 EEST 2005 Pekka Riikonen * --without-silc -> --with-silc, --without-irssi -> --with-irssi. On Toolkit the server and client are not compiled by default. Affected file configure.ad. Thu Apr 28 15:57:37 EEST 2005 Pekka Riikonen * Added lib/contrib/getopt.[ch] for platforms that don't have it (it is not GPL implementation). * Fixed compilation when pkg-config is used. Wed Apr 27 11:49:41 EEST 2005 Pekka Riikonen * A comma in invite/ban string is invalid, check for it. Affected file apps/silcd/server_util.c. * Added SERVICE command to the server. It parses the command request but SILC Server does not support services for the time being. Affected file apps/silcd/command.[ch]. * Added SERVICE command and command reply to client library. It is however incomplete. Updated Toolkit documentation. Affected files are lib/silcclient/command[_reply].[ch]. * Fixed IDENTIFY/WHOWAS command reply to send the username correctly (uninitialized buffer). Affected file is apps/silcd/server_query.c. Mon Apr 25 14:25:24 EEST 2005 Pekka Riikonen * Moved silcer/, silc/, silcd/ and irssi/ to apps/. This finalizes the major restructuring of the CVS tree. Mon Apr 25 00:39:30 EEST 2005 Pekka Riikonen * Send empty MOTD reply if MOTD file cannot be read. Affected file silcd/command.c. Sun Apr 24 12:01:37 EEST 2005 Pekka Riikonen * Optimized primer number generator to use simpler conversion routines. Also assure that the prime number will have the highest bit set after modifying it. Affected file is lib/silcmath/silcprimegen.c. * Added LibTomMath to SILC Math library (SILC_DIST_TMA). * Added FastTomMath to SILC Math Library (SILC_DIST_TFM), for now only for testing purposes, it will not be delivered in any distribution for now. * Removed NSS MPI from the source tree. Due to upcoming license change for the SILC Toolkit, we cannot deliver the NSS MPI anymore. I decided to replace it in all distributions with public domain library. * Removed GNU regex from lib/contrib and introduced free GNU compatible regex, lib/contrib/regexpr.[ch]. Added GNU regex compatible API to it (only partial). * Removed getopt routines from lib/contrib. Fri Apr 22 12:21:44 EEST 2005 Pekka Riikonen * Use silc_server_send_command_reply to send replies instead of encoding packet itself. Affected file silcd/command.c. * Added command sending and receiving statistics to server. Affected files in silcd/. * GCC 4 warning fixes. -Wno-pointer-sign option is now used with GCC, for it not to warn about pointer signedness. Tue Apr 19 11:57:35 EEST 2005 Pekka Riikonen * Added context to the SilcIDCache destructor. Affected files are lib/silccore/silcidcache.[ch], lib/silcclient/client.c and silcd/server.c. Mon Apr 18 09:53:28 EEST 2005 Pekka Riikonen * Added pkg-config check to configure. * The PublicKeyDir must not be used with Admin block in server config. Affected file silcd/serverconfig.c. Sat Apr 16 20:23:48 EEST 2005 Pekka Riikonen * Added Autodist. Thu Apr 14 20:25:08 EEST 2005 Pekka Riikonen * Handle empty LIST command reply correcttly in server. Affected file silcd/command_reply.c. * Handle empty LIST command reply correctly in client library. The application will now receive one LIST command reply with all arguments set to NULL if there are no channels. Updated Client Library documentation accordingly. Affected file lib/silcclient/command_reply.c. Tue Apr 12 00:02:09 EEST 2005 Pekka Riikonen * Added channel name string stringprep profile to the protocol and implementation to allow a little free'er channel name strings. Affected files are lib/silcutil/silcstringprep.[ch]. * Added silc_channel_name_[check|verify] to check and verify channel name strings. Affected files are lib/silcutil/silcstrutil.[ch]. * Added support for the new channel name preparation in client library and server. Affected files in lib/silcclient and silcd/. Mon Apr 11 13:40:27 EEST 2005 Pekka Riikonen * Added the Autodist into the source tree. It replaces the old ./prepare. It can be used to create distributions as previously. See README.CVS and README.DIST. See distributions in distdir/. Sun Apr 10 11:30:56 EEST 2005 Pekka Riikonen * Make sure query sends at least an error back if nothing more is sent. Affected file silcd/server_query.c. Thu Apr 7 14:50:01 EEST 2005 Pekka Riikonen * During query, check if the original command caller goes away. If it does, stop the query. Affected file silcd/server_query.c. * Check for valid channel creation in JOIN command reply. Affected file lib/silcclient/command_reply.c. * Handle the resolver counter in silc_client_get_users_by_channel callback correctly. Fixed auto-join bug in Gaim. Affected file lib/silcclient/idlist.c. Wed Apr 6 16:56:53 EEST 2005 Pekka Riikonen * Added some better error messages. Affected file silcd/command_reply.c and packet_receive.c. * Handle error in WATCH command propely on backup router. Affected file silcd/command.c. * Fixed freeing of unfreeable variable in WHOIS command reply. Affected file silcd/command_reply.c. Wed Apr 6 09:10:31 CEST 2005 Pekka Riikonen * Added pkg-config .pc file creation for silc core library and silcclient library. A patch by c0ffee. * Removed the need for GNU Libidn. Added the simple stringprep from libidn into lib/contrib/. It is now used also on Windows build. Mon Apr 4 15:15:46 EEST 2005 Pekka Riikonen * Simplified the invite and ban string handling in the server. Check for valid invite and ban arguments also. Affected file silcd/server_util.c. Sun Apr 3 14:58:53 EEST 2005 Pekka Riikonen * Added WATCH list announcing in backup router protocol. Affected files are silcd/command.c, server.c, server_backup.c. * Do not change users mode to founder on normal server/backup if the founder mode is set, and user is first one to join. Affected file silcd/pcaket_receive.c. * Do not send CUMODE_CHANGE notify back to sender. Affected file silcd/packet_receive.c. * Added getrusage() to take noise in SILC RNG. A patch by Mika Boström. Affected files are configure.in.pre, includes/silcincludes.h.in, lib/silccrypt/silcrng.c. Sat Apr 2 18:09:30 EEST 2005 Pekka Riikonen * Splitted the SILC libraries configuration into a configure fragment into lib/configure.ad. It is now possible, once this feature is added, to specify whether to compile or not compile included SILC libraries. Affected files are configure.in.pre, lib/silcmath/mpi/configure.ad, lib/configure.ad, Makefile.defines.pre and Makefile.defines_int.pre. * Added --with-silc-includes and --with-silc-libs to configure. If specified the included libs are not compiled, but the specified libs are used. Pkg-config is not yet supported. Affected file configure.in.pre. * Fixed WATCH command handling on backup router. Router does not send the watch command any more to backup if it originates from backup. Affected file silcd/command.c. Fri Apr 1 18:52:47 EEST 2005 Pekka Riikonen * Changed announcing to not announce unregistered clients. Affected file silcd/server.c. * Fixed username handling in command reply. Affected file silcd/command_reply.c. * Log files are now 0600. Affected file lib/silcutil/silclog.c. Thu Mar 31 22:34:22 CEST 2005 Patrik Weiskircher * Added new define SILC_MACOSX, if __APPLE__ and __MACH__ is defined. Affected file: includes/silcincludes.h.in * bool is defined as _Bool on Mac OS X now. Affected file: lib/silcutil/silctypes.h Thu Mar 31 08:52:06 EEST 2005 Pekka Riikonen * Added support for UTF-8 nicknames, channel names and server names in client library. Affected files in lib/silcclient/. * Added __SILC_HAVE_PTHREAD, __SILC_HAVE_SIM, __SILC_HAVE_LIBIDN, and __SILC_ENABLE_DEBUG to include/silcclient.h for third-party software to check how Toolkit has been compiled. Wed Mar 30 22:16:35 EEST 2005 Pekka Riikonen * Added silc_utf8_str[n]casecmp into lib/silcutil/silcutf8.[ch]. * Use silc_utf8_str[n]casecmp instead of strcmp routines in library and in SILC Client when dealing with nicknames and other identifier strings. Affected file in client lib and irssi. * Convert nickname to UTF-8 in /msg and /smsg. Affected file irssi/src/silc/core/silc-servers.c. Wed Mar 30 10:50:02 EEST 2005 Pekka Riikonen * Fixed idcache to work with the new identifier strings. Affected file lib/silccore/silcidcache.c. * Added UTF-8 hash and compare function for SilcHashTable. Affected file lib/silcutil/silcutil.[ch]. * Added casefolding stringprep, SILC_CASEFOLD_PREP. Affected file lib/silcutil/silcstringprep.[ch]. * Changed the identifier string handling to include the original format in client, server, channel entries and normalized format in cache. Affected files in silcd/. Tue Mar 29 16:51:35 EEST 2005 Pekka Riikonen * Added support for the new identifier strings and their validity checking. Nicknames, channel names and usernames can now include practically any kind of letters and various other characters. Affected files in silcd/ and in libraries. NOTE: comparing these strings should now be done with memcmp() to check binary compatibility. All these strings are normalized and casing is irrelevant. * Added silc_identifier_check to lib/silcutil/silcstrutil.[ch] as easy function for applications to check whether identifier strings are valid. Tue Mar 29 00:45:11 EEST 2005 Pekka Riikonen * Fixed SILC_STRING_LDAP_DN encoding and decoding. Affected file lib/silcutil/silcutf8.c. * Added SILC_STRING_UTF8_ESCAPE to lib/silcutil/silcstrutil.h. Mon Mar 28 22:46:23 CEST 2005 Jochen Eisinger * Make public key in getkey reply mandatory. Affected file lib/silcclient/command_reply.c Sun Mar 27 19:03:31 CEST 2005 Patrik Weiskircher * Added Parameter dont_register_crypto_library to SilcClientParam. If set to TRUE, silcclient library will not initalize the Crypto Libraries and application will need to do it. Affected file lib/silcclient/silcclient.h, lib/silcclient/client.c. Sun Mar 27 19:02:48 EEST 2005 Pekka Riikonen * Imported new silc_utf8_[encode|decode] routines from my internal SILC 1.1 source tree. New encodings added: SILC_STRING_LOCALE (SILC_STRING_LANGUAGE is deprecated), SILC_STRING_UTF8, SILC_STRING_PRINTABLE, SILC_STRING_VISIBLE, SILC_STRING_TELETEX, SILC_STRING_NUMERICAL and SILC_STRING_LDAP_DN. * Splitted UTF-8 routines into lib/silcutil/silcutf8.[ch]. * Implemented stringprep (RFC 3454) API. Internally we use GNU Libidn's stringprep, for now, so it is required now to compile SILC sources. Added lib/silcutil/silcstringprep.[ch]. * Added checking for GNU Libidn and --with-libidn to configure. Wed Mar 23 11:20:33 CET 2005 Jochen Eisinger * If the passphrases entered do not match while generating a new key, completly start over instead of going into an infinite loop asking the user to re-enter the passphrase correctly. Affected file lib/silcutil/silcapputil.c Sun Jan 9 14:28:51 CET 2005 Pekka Riikonen * Make sure server is removed from backup list when it is deleted. Affected files silcd/command.c, server.c, server_util.c. * Close socket when connecting to router fails. Affected file silcd/server.c. Tue Jan 4 13:06:26 CET 2005 Jochen Eisinger * Adopt configuration toolchain to current auto-tools. Affected files prepare, irssi/configure.in * Revert most of the UTF-8 fixes to SILC Client 1.0.1. Will redo that. Affected files irssi/src/silc/core/client_ops.c, irssi/src/fe-common/silc/fe-silc-channels.c * Take over command line options into silcclient data structure. Affected file irssi/src/silc/core/silc-core.c Wed Dec 8 16:15:11 CET 2004 Pekka Riikonen * Do not try to initiate backup resuming protocol forever. Affected file silcd/server_backup.c. Wed Nov 24 18:24:05 CET 2004 Pekka Riikonen * ID change in resuming has to be done before changing detached client's modes, since the ID change may fail and leave ghosts on the network. Affected file is silcd/packet_receive.c. Tue Nov 23 16:54:35 CET 2004 Pekka Riikonen * Fixed Win32 scheduler to not stuck anymore. A patch from Juha Räsänen. Affected file is lib/silcutil/win32/silcwin32schedule.c. * Fixed QoS parsing for connection blocks in server. Affected file is silcd/serverconfig.c. * Fixed server statistics increasing in server. Affected file is silcd/server.c. * The CLOSE command now marks backup router as self disconnected to avoid resuming problems. Affected file silcd/command.c. Wed Sep 22 19:46:32 CEST 2004 Patrik Weiskircher * When using silc_net_create_connection[_async], and your system can create IPv6 sockets, it will try to connect to the IPv6 host. Now it tries to connect to an IPv4 host if IPv6 fails. Affected file lib/silcutil/unix/silcunixnet.c Fri Jun 18 19:26:58 CEST 2004 Pekka Riikonen * Check for valid route when receiving packet from router and when routing it to local server in the cell. A patch from Matt Miller. Affected files silcd/router.c and server.c. Sat May 1 13:55:54 CEST 2004 Patrik Weiskircher * Couldn't detach and reattach twice, because of the previous commit. Affected file silcd/packet_receive.c Fri Apr 30 19:40:28 CEST 2004 Patrik Weiskircher * Added check to ignore Port value if Initiator is FALSE. Remote router coudln't connect if Port was set. Affected file silcd/serverconfig.c * If some client tries to resume more than once at the same time, server crashed. Router didn't crash, but showed odd behaviour (didn't allow clients to join anymore, ..). Affected files silcd/packet_receive.c silcd/idlist.h Mon Mar 15 21:10:08 EET 2004 Pekka Riikonen * Destroy the file transfer session in silc_client_file_close with timeout. Affected file lib/silcclient/client_ftp.c. * Call SFTP server monitor in READ and WRITE after the actual operations. Affected file lib/silcsftp/sftp_server.c. Wed Mar 10 21:30:02 EET 2004 Pekka Riikonen * Create one configure script from configure fragments (configure.ad). This is a first step towards new distribution system. Affected files prepare, configure.in.pre, lib/silcmath/mpi/configure.ad. Wed Mar 10 18:35:24 CET 2004 Jochen Eisinger * Removed expiring of client key pair. Affected file is irssi/src/silc/core/clientutil.c Tue Mar 9 17:11:58 EET 2004 Pekka Riikonen * Check the number of connections from real number of connections instead of socket number, when deciding if server is full. Affected files are silcd/server.c, server_internal.h and silcd.c. * Clarified the connections_max meaning in General section in doc/example_silcd.conf.in. * The reconnect_keep_trying default value set to TRUE if it is not defined in the config file. Affected file silcd/serverconfig.c. Wed Mar 3 15:13:49 CET 2004 Pekka Riikonen * Fixed crashbug in connection closing, after a protocol completion callback, which might have closed it already. Affected file silcd/server.c. * Fixed rekey with PFS in backup router. It did not allow rekeys with PFS, and when the rekey protocol timedout it crashed the backup router without the above fix. Affected file silcd/packet_send.c and server.c. Sat Feb 28 16:25:09 EET 2004 Pekka Riikonen * The silc_client_add_channel_private_key now returns the private key context if pointer is given as argument. Affected files are lib/silcclient/silcclient.h and client_channel.c. * Added support for using channel private keys in SILC Client Library even if the private key mode is not set on the channel. Affected file lib/silcclient/client_channel.c. * The channel private key used to decrypt message is now delivered to the application in the 'channel_messageÃ' client operation. Affected files are lib/silcclient/silcclient.h and client_channel.c. * Fixed wrong arg type for user limit in CMODE command reply. Affected file silcd/command.c. * The user limit is now taken and saved to SilcClientEntry in JOIN and CMODE command replies and in CMODE_CHANGE notify. Affected files lib/silcclient/silcclient.h, command_reply.c and client_notify.c. * Added support to the new private message key indicator packet. Added a new function to the client library: silc_client_send_private_message_key_request. The sender indicates to be initiator, and receiver is responder. Added the indicator to the SilcClientEntry as 'prv_resp' boolean. Affected files are lib/silcclient/silcclient.h client.[ch], and client_prvmsg.c. Fri Feb 27 11:25:26 CET 2004 Pekka Riikonen * Fixed the JOIN command calling when called with both -auth and -founder. Affected file is lib/silcclien/command.c. Wed Feb 25 23:12:11 EET 2004 Pekka Riikonen * Check watcher list for resumed clients as well. Affected file is silcd/packet_receive.c. Tue Feb 24 16:49:10 EET 2004 Pekka Riikonen * Implemented the user limit to the CMODE_CHANGE notify, CMODE command reply and JOIN command reply in server. Affected files are silcd/server.c, command.c, command_reply.c, packet_send.c and packet_receive.c. Mon Feb 23 23:31:15 EET 2004 Pekka Riikonen * Defined SILC_STRFMT_END that must be used now with silc_buffer_strformat, instead of SILC_STR_END. Fixes crashes on AMD64. Affected files are lib/silcutil/silcbuffmt.h, lib/silcclient/silcvcard.c, silcd/server_util.c. * Fixed the adding of public key to the WATCH list in server. Fixed the WATCH notify sending to client. Affected files are silcd/packet_send.[ch], command.c, server_util.c. * Implemented the watching by public key in the SILC Client Library and SILC Client. Affected files are lib/silcclient/command.c and client_notify.c. Mon Feb 23 09:30:30 CET 2004 Pekka Riikonen * Added support for public key watching in server. Affected files are silcd/server.c, server_internal.h, command.c, server_util.c. Sun Feb 22 19:03:59 EET 2004 Pekka Riikonen * Added public key to the SIlcClientEntry. Affected files are lib/silcclient/silcclient.h, command_reply.c, idlist.c * Fixed the get_clients_whois reply processing to return exactly same entries server returned. Makes it possible to search using attributes. Affected file is lib/silcclient/idlist.c. Sat Feb 21 19:21:57 EET 2004 Pekka Riikonen * Save founder key to SilcChannelEntry. Affected files are lib/silcclient/silcclient.h, command_reply.c, idlist.c. Fri Feb 20 20:37:38 EET 2004 Pekka Riikonen * Call the monitor callback with _CLOSED status from the silc_client_file_close. Affected files are lib/silcclient/client_fpt.c, silcclient.h * Added silc_client_get_clients_whois which resolves using WHOIS, and supports requested attributes as well. Affected files are lib/silcclient/silcclient.h, idlist.c. Fri Feb 19 21:09:22 EET 2004 Pekka Riikonen * Added support for asking the destination filename where the downloaded file is saved in the file transfer. Affected files are lib/silccilent/silcclient.h, client_ftp.c. Wed Feb 18 02:46:17 EET 2004 Pekka Riikonen * Fixed error handling in resuming data processing. Affected files are lib/silcclient/client_resume.c and client.c. Tue Feb 17 19:34:30 EET 2004 Pekka Riikonen * Fixed silc_client_send_private_message to return TRUE correctly. Affected file lib/silcclient/client_prvmsg.c. * Added topic to the SilcChannelEntry. Affected files are lib/silcclient/silcclient.h, command_reply.c, client_notify.c. Fri Feb 13 14:19:14 CET 2004 Jochen Eisinger * Use conn->cmd_ident for all silc_client_command_call()s. Affected file lib/silcclient/command.c Fri Feb 13 13:53:45 CET 2004 Jochen Eisinger * Convert all commands to UTF-8 before passing them to the client library. Still need to convert replies from UTF-8 to the locale encoding. Affected file irssi/src/silc/core/silc-cmdqueue.c Fri Feb 13 13:13:07 CET 2004 Jochen Eisinger * redirect all silc_client_command_calls through a queueing framework. This fixes /CYCLE and the annoying "nick change after auto-joining a channel". Furthermore it defines one central point where command parameters can be UTF-8-ified. Affected files irssi/src/silc/core/Makefile, client_ops.c, silc-channels.c, silc-servers.[ch], silc-core.c, silc-cmdqueue.[ch], silc-lag.c Fri Feb 13 12:04:41 CET 2004 Jochen Eisinger * use asynchronous connect() to establish router connections. Fixes problem when the primary router goes down. Affected files silcd/server.c, silcd/server_backup.c Thu Feb 12 20:09:59 EET 2004 Pekka Riikonen * Added SILC_[32|64]_TO_PTR and SILC_PTR_TO_[32|64] macros. Fixed various compilation warnings when type casting ints to pointers or vice versa, of different size. Updates around the source free. Tue Feb 3 23:25:17 EET 2004 Pekka Riikonen * Surrogates not allowed in UTF-8 strings, updated decoder. Affected file lib/silcutil/silcstrutil.c. Added UTF-8 testers in lib/silcutil/tests/ directory. Wed Jan 14 18:42:44 EET 2004 Pekka Riikonen * Added SILC_CLIENT_CONN_ERROR_KE, ERROR_AUTH, ERROR_RESUME and ERROR_TIMEOUT SilcClientConnectionStatus errors. Affected files are lib/silcclient/silcclient.h, client.c. Mon Jan 12 13:01:10 CET 2004 Jochen Eisinger * When resuming a session fails, notify the user that the session file needs to be removed eventually. Affected files irssi/src/fe-common/silc/module-formats.[ch], irssi/src/silc/core/client_ops.c. Tue Jan 04 12:16:04 CET 2004 Jochen Eisinger * Added DIST_SUBDIRS symbols to include all subdirs in distributions. Affected files lib/silcutil/Makefile.am, lib/silcmath/Makefile.am * Typofix in Irssi::Silc module. Affected file irssi/src/perl/silc/Silc.xs. Tue Jan 04 02:43:44 CET 2004 Jochen Eisinger * Changed the way NOTICE flagged messages are treated. Added support for notices in queries and signing notices. Affected files irssi/default.theme; irssi/docs/help/in/notice.in; irssi/src/fe-common/silc/module-formats.[ch], fe-silc-messages.c; irssi/src/silc/core/client_ops.c, silc-channels.c, silc-servers.c * Fixed typo in /ACTION help. Affected file irssi/docs/help/in/action.in Mon Jan 03 23:26:38 CET 2004 Jochen Eisinger * Fixed typo in perl module. Affected file irssi/src/perl/silc/Server.xs * Changed the way ACTION flagged messages are treated. Added support for actions in queries and signing actions. Affected files irssi/default.theme; irssi/docs/help/in/action.in; irssi/src/fe-common/silc/module-formats.[ch], fe-silc-messages.c, fe-silc-queries.c; irssi/src/silc/core/client_ops.c, silc-channels.c, silc-servers.[ch] Mon Jan 03 16:04:29 CET 2004 Jochen Eisinger * Incorrectly reported error when client had to be resolved from server in /SMSG. Affected file irssi/src/silc/core/silc-servers.c Sat Jan 3 16:37:15 EET 2004 Pekka Riikonen * Fixed whois public key hash table deleting and adding in detached client case. Affected file silcd/packet_receive.c. Sat Jan 03 12:15:38 CET 2004 Jochen Eisinger * Changed filenames of silc/fe module not to collide with filenames from core/fe. Also seperated public messages printing from query messages printing. Affected files are all in irssi/src/fe-common/silc. Sat Jan 3 12:18:07 EET 2004 Pekka Riikonen * Fixed the invite process handling during joining to use correct server name for the client that is matched against the invite string for the channel. Wrong server name caused inability to join the channel. Affected file is silcd/command.c. Fri Jan 2 23:34:17 EET 2004 Pekka Riikonen * Fixed the CUMODE channel founder authentication on normal server to not remove the founder rights on existing founder before checking that router accepts the mode change. Affected files are silcd/command.c and silcd/packet_receive.c. * Remove the server entry correctly when rekey timeouts and remote router connection on normal server is closed. Fixes a crash where server uses the freed server entry. Affected file silcd/server.c. Fri Jan 02 10:28:15 CET 2004 Jochen Eisinger * Add /SILCNET [ADD|REMOVE|LIST] command to manage different SILC networks. This is the first step in solving the bug about /SERVER ADD -silcnet . Affected files irssi/docs/in/silcnet.in; irssi/src/fe-common/silc/Makefile.am, fe-silcnet.c, fe-common-silc.c, module-formats.[ch]; irssi/src/silc/core/silc-chatnets.[ch], silc-core.c, Makefile.am Thu Jan 01 20:11:32 CET 2004 Jochen Eisinger * /SMSG and /MMSG now correctly create new queries. Affected files irssi/src/fe-common/silc/fe-messages.c, irssi/scripts/silc-mime.pl * Add basic support for SILC protocol specific variables in perl. Affected files irssi/src/perl/silc/*, irssi/configure.in, irssi/src/perl/Makefile.am Wed Dec 31 17:06:55 CET 2003 Jochen Eisinger * Don't use silc_get_input, it's obviously not reliable. Fixes issue when the current key expires. Affect file irssi/src/silc/core/clientutils.c * Make the session data filename configurable. This makes it possible to have different session files for different SILC networks. Affected files irssi/src/silc/core/silc-core.c, client_ops.[ch], silc-servers.c, irssi/src/silc/fe-common/silc/module-formats.[ch] * Use the same set of libtool files for the MPI lib as for the rest of the toolkit. Affected files lib/silcmath/mpi/config.guess, config.sub, configure.in, install-sh, missing, mkinstalldirs Sun Dec 28 21:57:39 EET 2003 Pekka Riikonen * Fixed server statistics decrementing error to not go to negative. Affected file silcd/packet_receive.c. Sat Dec 20 14:42:36 EET 2003 Pekka Riikonen * Use silc_server_query_add_error to add error in public key search error. Added support in send_reply to send errors without specific argument. Affected file silcd/server_query.c. * Fixed the WHOIS, IDENTIFY and WHOWAS error handling in SILC Client for NO_SUCH_NICK. It was against the protocol specs. Affected file irssi/src/silc/core/client_ops.c. * Added backwards support for the wrong NO_SUCH_NICK error sending in server. To be removed in SILC Server 1.0. Both old clients and clients with fixed error handling now works. Affected file silcd/server_query.c. Sat Dec 20 00:44:47 CET 2003 Patrik Weiskircher * fixed a bug in the whois using attributes function where no error was sent if no nickname and client id but the attributes were given to whois. Affected file silcd/server_query.c Tue Dec 16 21:34:59 CET 2003 Patrik Weiskircher * remove public key from public key hashtable on detach. Affected file silcd/packet_receive.c * free public key hashtable before removing clients on server shutdown. Affected file silcd/server.c * remove public key prior deleting client-data on killing a client. Affected file silcd/server_util.c Sat Dec 06 21:35:14 CET 2003 Patrik Weiskircher * Getting the MOTD from other servers works now. Affected files are silcd/command.c and silcd/command_reply.c Thu Dec 04 11:33:46 CET 2003 Jochen Eisinger * Initialize the variable idletag, since it is tested in silc_core_deinit for its default value. Affected file irssi/src/silc/core/silc-core.c Sun Nov 30 19:47:02 CET 2003 Patrik Weiskircher * Fixed signed channel messages across cells. Affected file silcd/packet_send.c Fri Nov 28 19:13:21 EET 2003 Pekka Riikonen * Changed the SILC_LOG_* macros to not be empty if SILC_DEBUG is not defined. They can now be safely used in if-statements without braces. Affected file lib/silcutil/silclog.h. * Added the checks for backup closing connection due to error (local or remote) and thus not allow the resuming to occur in reconnect. Affected files are silcd/packet_send.c and server.c. Tue Nov 25 15:20:59 EET 2003 Pekka Riikonen * Help file updates. Affected files in irssi/src/docs/help/in/. Wed Nov 23 20:51:21 CET 2003 Patrik Weiskircher * Fixed channel messages across cells. Affected file silcd/packet_send.c Wed Nov 12 11:34:56 EET 2003 Pekka Riikonen * Fixed file transmission accepting in client library to not start the negotiation if user hasn't accepted the transfer, instead create new session for resent transfer. Affected file lib/silcclient/client_ftp.c. * Show the session ID in the file transmision list. Remove session from list that failed to transfer. Switch the current session automatically after transmission, and in errors, to new session if other sessions exists in the transfer list. Affected files are irssi/src/silc/core/silc-servers.c, irssi/src/fe-common/silc/modfule-formats.c. Mon Nov 10 14:41:40 CET 2003 Jochen Eisinger * Fixed MIME header parsing for the hopefully last time. Affected file lib/silcutil/silcstrutil.c Mon Nov 10 13:03:46 EET 2003 Pekka Riikonen * Rewrote the PKCS#1 routines. Added lib/silccrypt/silcpkcs1.[ch]. * The SILC RNG is now gauranteed to return non-zero random values. Affected files are lib/silccrypt/silcrng.[ch]. Sun Nov 9 20:44:56 EET 2003 Pekka Riikonen * Fixed nickname formatting when changing only case of the nickname. Affected file lib/silcclient/idlist.c. Sun Nov 9 19:33:59 CET 2003 Jochen Eisinger * Fixed a memory leak and incorrect printing of the "appears as" message. Affected file irssi/src/silc/core/client_ops.c Sun Nov 9 17:45:11 EET 2003 Pekka Riikonen * Added CRT (Chinese Remainder Theorem) supported RSA private keys and private key operations. This significantly increases private key operation efficiency. No compatibility issues with new or old private keys. Affected files are lib/silccrypt/rsa.[ch], rsa_internal.h and pkcs1.c. Sat Nov 8 13:08:53 EET 2003 Pekka Riikonen * Fixed GCC-3.3.2 related compilation warnings from the source tree. Fri Nov 7 23:01:47 EET 2003 Pekka Riikonen * Removed RC6 from distributions. Fri Nov 7 19:38:42 EET 2003 Pekka Riikonen * Added some better comments to lib/silccrypt/silcpkcs.h, optimized some routines in lib/silccrypt/silcpkcs.c. Added test_silcpkcs into lib/silccrypt/tests/. * Fixed silc_rng_global_init to actually init the global RNG if RNG wasn't provided for it. Affected file is lib/silccrypt/silrng.c. Thu Nov 6 21:08:28 EET 2003 Pekka Riikonen * Added silc_hash_table_find_by_context_ext. Affected files lib/silcutil/silchashtable.[ch]. * Save the public key on normal server in WHOIS command reply from attributes, if present, and add it to public key hash table. Fixes WHOIS resolving by public key on normal server. Optimized the attributes resolving on normal server to not resolve if we resolved them already from router. Affected files are silcd/server_query.c, command_reply.c. Wed Nov 5 19:36:30 CET 2003 Patrik Weiskircher * Added support for whois using attributes. Affected files silcd/command_reply.c, silcd/packet_receive.c, silcd/server.c, silcd/server_internal.h, silcd/server_query.c, silcd/server_util.c * Added support for whois using public key attribute to /WHOIS i client command. Affected files irssi/docs/help/in/whois.in, irssi/src/silc/core/silc-servers.c, lib/silcclient/command.c Wed Nov 5 23:37:36 EET 2003 Pekka Riikonen * Fixed UMODE setting in server when the client has anonymous mode set. The mode setting was not working. Affected file silcd/command.c. Mon Nov 2 11:36:08 CET 2003 Jochen Eisinger * Fixed some bugs and typos related to sending split messages. Print notification when sending messages with /MMSG. Affected files irssi/scripts/silc-mime.pl, irssi/src/silc/core/client_ops.c Fri Oct 31 12:33:59 EET 2003 Pekka Riikonen * Optimized the socket referencing in packet routines, client library and server. Affected files are lib/silccore/silcpacket.c, lib/silcclient/client.c and silcd/server.c. * If silc_socket_set_qos is given with NULL arguments the QoS is reset from the socket. Affected files are lib/silcutil/silcsockconn.[ch]. Thu Oct 30 21:23:24 CET 2003 Jochen Eisinger * Add a /LISTKEYS command which lists the locally cached client and server keys. Affected files irssi/src/fe-common/module-formats.[ch], irssi/src/silc/core/silc-{channels,servers}.c irssi/docs/help/in/listkeys.in Thu Oct 30 20:23:40 EET 2003 Pekka Riikonen * Check that packet queue purging was successful. Affected files lib/silcclient/client.c and silcd/packet_send.c. Related to MAC failed errors. * Do not clear the inbuf even if it is empty if QoS was applied to it. Otherwise the QoS data is cleared and MAC failed error will occur. Affected file lib/silccore/silcpacket.c. * Use the rekey period time as rekey protocol timeout value. If the rekey does not succeed during the rekey period there's something very wrong, and we most likely end up with wrong keys, do graceful reconnect then. Affected file silcd/server.c. * Take reference of the socket in the parser context, as it's possible to have the parsers in queue after the socket is disconnected and this may cause crash. Affected files are lib/silccore/silcpacket.c, lib/silcclient/client.c and silcd/server.c. Thu Oct 30 17:01:01 EET 2003 Pekka Riikonen * Fixed KICK command reply sending, it sent to replies. Affected file silcd/command.c. Wed Oct 30 14:06:52 CET 2003 Jochen Eisinger * Finish the silc-mime.pl script. It now supports MIME type guessing using magic files, signing data messages, executing MIME handlers in background. Affected files irssi/scripts/silc-mime.pl and irssi/docs/help/in/mmsg.in * Changed MIME signal handler to make things easier for the perl script. Affected files irssi/src/silc/core/client_ops.c, silc-servers.c, and irssi/docs/signals.txt * Cleaned up the silc_mime_parse function and fixed detection of wrapped header lines. Affected file lib/silcutil/silcstrutil.c Sun Oct 26 21:19:02 EET 2003 Pekka Riikonen * Resolve the IP for file transfer listener from the connection socket. Affected file lib/silcclient/client_ftp.c. * Accept NULL hostname parameter in the functions silc_net_check_[local|remote]_by_socket. Do not reverse lookup if hostname is not wanted. Fri Oct 24 21:24:12 CEST 2003 Jochen Eisinger * Fixed race condition between silc_client_init and my_silc_scheduler. Affected file irssi/src/silc/core/silc-core.c Fri Oct 24 16:43:40 EEST 2003 Pekka Riikonen * Fixed file transfer connection closing when SIGNOFF for the client is received from server. Affected file is lib/silcclient/client_ftp.c. Tue Oct 21 13:35:57 CEST 2003 Pekka Riikonen * Check for disconnected socket in QUIT callback. Affected file silcd/command.c. Thu Oct 21 09:43:17 CEST 2003 Jochen Eisinger * Modified the MIME parsing to allow \n and \r\n as delimiters. Affected files lib/silcutil/silcstrutil.c * Cleaned up the escape/unescape functions for correctness and speed. Affected file irssi/src/silc/core/client_ops.c * Removed handling for data messages with Content-Type: text/*, moved parsing of MIME headers to the signal handler, added support for signing and verifying data messages. Affected files are irssi/docs/signals.txt, irssi/src/silc/core/client_ops.c, irssi/src/silc/core/silc-{servers,channels}.c * Added a perl script for handling data messages based on information read from Mailcap files. New file irssi/scripts/silc-mime.pl Mon Oct 20 16:08:22 EEST 2003 Pekka Riikonen * Added new SILC_MESSAGE_FLAG_ACK that can be used to acknowledge recepetion of a message to the sender. Updated protocol specs. Sat Oct 18 11:55:33 EEST 2003 Pekka Riikonen * Unregister channel key saving callback when deleting channel. Affected file lib/silcclient/idlist.c. * Do not remove the client from channels in NOTIFY_TYPE_SIGNOFF before calling notify client operation. Affected file is lib/silcclient/client_notify.c. * Unregister QoS tasks when deleting the socket connection. Affected files lib/silcutil/silcsockconn.[ch], unix/silcunixsockconn.c. * Implemented latest presence-attrs draft changes. Affected files lib/silccore/silcattrs.h and irssi/src/silc/core/silc-queries.c. Tue Oct 14 18:24:53 EEST 2003 Pekka Riikonen * Save old channel keys in list to allow more rapid change of channel keys if server for some reason does that. This avoids loosing so many channel messages due to not having key to decrypt. Affected file lib/silcclient/silcclient.h, idlist.c and client_channel.c. Mon Oct 13 21:37:47 EEST 2003 Pekka Riikonen * Continued backup router tests and fixes. Affected files silcd/server_backup, server_util.c, server.c. See TODO. Sun Oct 12 19:58:18 EEST 2003 Pekka Riikonen * Fixed SERVER_SIGNOFF handling in servers. The client was removed from wrong list thus not removing the client at all. Affected file silcd/packet_receive.c. * Do not execute rekey protocol for disabled connections as it would never go through. Affected file silcd/server.c. * Added timeout for rekey protocol to catch if the protocol never executes successfully. Affected files silcd/server.c and protocol.h. Sat Oct 11 15:39:22 EEST 2003 Pekka Riikonen * Abandon packet processing for disconnected sockets. Check this always after calling packet processing callback. Affected file lib/silccore/silcpacket.c. * Fixed double registration disconnection code in server. Closed wrong connection. Affected file silcd/packet_receive.c. Fri Oct 10 16:27:12 EEST 2003 Pekka Riikonen * On normal server reconnect to primary during resuming 4 times, then give up. Affected file silcd/server_backup.c. * If during reconnecting to routers we notice we have router connection but no primary router set, the server is in desync. Reconnect to primary to restore network. Affected file silcd/server.c. * Assure that only one protocol is exeucting at the same time. Added checks for all protocols. Affected files are silcd/server.c and server_backup.c. Thu Oct 9 20:24:09 EEST 2003 Pekka Riikonen * Check that a string is not already part on invite/ban string when processing it. Affected file silcd/server_util.c. Thu Oct 9 12:06:40 CEST 2003 Pekka Riikonen * Fixed the CUMODE_CHANGE for founder mode changes to comply with 1.2 version of the protocol. Affected file is silcd/packet_receive.c. Wed Oct 8 19:41:15 EEST 2003 Pekka Riikonen * ERR_BAD_PASSWORD now returns the Channel ID of the channel where the passphrase was given. Affected file is silcd/command.c. Wed Oct 8 09:32:12 CEST 2003 Pekka Riikonen * INVITE and BAN notifys are now delivered from routers to servers (but not clients) on the channel. Updated specs and code. Affected files silcd/packet_[send|receive].[ch], command.c, server.c and server_util.c. * Implemented INVITE and BAN announcing. Affected files are silcd/server.[ch], server_util.c. * Implemented SilcStatus error type argument returning in command reply error in server. Affected file silcd/command.c. * Implemented SilcStatus argument returning in comand reply in client library. The command_reply client operation now returns error specific arguments as well. Affected files are lib/silcclient/command_reply.[ch], client_resume.c, lib/silccore/silcstatus.[ch]. Sun Oct 5 20:22:08 EEST 2003 Pekka Riikonen * Backup router protocol version 1.2 implemented. Testing still required. Affected files in silcd/server_backup.[ch], server.c, packet_receive.c and server_internal.h. Sun Oct 5 12:36:37 EEST 2003 Pekka Riikonen * silc_client_send_[channel|private]_message now return TRUE or FALSE. Affected file lib/silcclien/client_channel.c and client_prvmsg.c. Thu Oct 2 17:03:09 EEST 2003 Pekka Riikonen * Check for explicit nickname in INVITE and BAN processing during join as well (and don't expect only wildcards in invite/ban strings). Affected file silcd/command.c. * Fixed the INVITE and BAN by public key. The public key saved is the PK payload (as specified) not the raw data. Affected file silcd/server_util.c. Wed Oct 1 20:29:06 EEST 2003 Pekka Riikonen * UTF-8 text message support for actions and notices in SILC Client. Affected file irssi/src/silc/core/client_ops.c. * silc_get_username and silc_get_real_name now returns sensible data on Win32. Patch by Toni Willberg. Affected file is lib/silcutil/win32/silcwin32util.c. Sun Aug 24 23:35:19 CEST 2003 Jochen Eisinger * Provide a signal handler to send MIME encoded messages and emit a signal when a MIME encoded message is received. Also document the signals for usage with the perl interface. A sample perl script will be supplied at a later point. Affected files are irssi/docs/signals.txt, irssi/src/silc/core/client_ops.[ch], irssi/src/silc/core/silc-{channels,servers}.c Sun Aug 24 12:58:30 CEST 2003 Jochen Eisinger * Use SILC_COMMAND_PING to estimate the round-trip time to the server. Use this time to display a lag and disconnect when it exceeds a specified limit. Affected files are irssi/src/silc/core/silc-{lag,core}.c. Mon Aug 11 17:14:17 EEST 2003 Pekka Riikonen * Remove the channel auth list in normal server if router encofrces its list during connecting. Send notify to channel to remove the mode to remove the list. Affected files are silcd/server_util.c and silcd/packet_receive.c. Wed Aug 6 14:52:04 EEST 2003 Pekka Riikonen * Added support for channel public keys. Updated protocol specs and implemented it. Affected files are silcd/command.c, command_reply.c, lib/silcclient/command.c, lib/silcclient/command_reply.c. Wed Jul 23 12:17:01 EEST 2003 Pekka Riikonen * Ignore SIGXFSZ and SIGXCPU signals in server. They can terminate the process on Linux. Affected file silcd/silcd.c. Mon Jun 2 19:13:27 EEST 2003 Pekka Riikonen * Check for NULL buffer in silc_buffer_clear. Affected file is lib/silcutil/silcbuffer.h. * Simplified the backup router protocol by removing the _GLOBAL types. Updated protocol specs and the code. Affected files are silcd/server_backup.[ch]. Thu Apr 24 19:50:25 EEST 2003 Pekka Riikonen * Deny '@' and '!' from nicknames since they are reserved by the SILC_COMMAND_INVITE and SILC_COMMAND_BAN commands. Updated protocol specs and the code. Affected files are silcd/server_util.[ch]. Wed Apr 9 18:51:59 EEST 2003 Pekka Riikonen * Fixed stack overflow in Irssi SILC client. Affected file irssi/src/silc/core/client_ops.c. * Check that Host is set in ServerConnection and RouterConnection in silcd.conf. Affected file silcd/serverconfig.c. * Fixed crash in server with protocol completion callbacks, namely rekey and backup resuming protocols. Affected files are silcd/server_backup.c and silcd/server.c. * Fixed rekey protocol to not restart if it is started already. Affected files are lib/silcclient/client.c and silcd/server.c.c Mon Mar 17 18:35:24 EET 2003 Pekka Riikonen * Rewrote SilcList, affected file lib/silcutil/silc*list.h. * Fixed EOF handling in SILC Config, affected file lib/silcutil/silcconfig.c. * Fixed buffer overflows in lib/silcutil/silcstrutil.c. * Fixed RESOLVING flag handling in JOIN notify and other notifys to handle the resolvings correctly in client library. Affected file lib/silcclient/client_notify.c. * Do not send full INVITE and BAN lists in INVITE and BAN notifys, only the changed information. Affected file silcd/command.c. * Fixed INVITE notify sending in INVITE command, send it only when needed. Affected file silcd/command.c. * Handle the founder key change properly in CMODE_CHANGE notify. Bug #122. Affected file silcd/packet_receive.c. Sun Mar 9 16:29:20 EET 2003 Pekka Riikonen * Remove the mark for output (mark it only for input) after purging outgoing queue. Prevents the "Error in select()" floods. Affected file silcd/packet_send.c. * Fixed incorrect connection deletion from client library after calling "connect" client operation. Could cause crashes for example during reconnect timeouts. Affected files are lib/silcclient/client.c and irssi/src/silc/core/client_ops.c. * Check server private key file permissions before starting the server. Affected file silcd/serverconfig.c. Tue Feb 4 22:53:26 EET 2003 Pekka Riikonen * NULL terminate allocated string in silc_buffer_strformat. Affected file lib/silcutil/silcbuffmt.c. * Rewrote the invite/ban list string handling in server to use SilcBuffer instead. Affected files are silcd/command.c and silcd/server_util.c. Mon Feb 3 14:43:52 CET 2003 Pekka Riikonen * Fixed double free in CMODE command when setting new HMAC for channel. Affected file silcd/command.c. * Added couple of missing memset's to zero sensitive memory. Affected files silcd/command.c, lib/silcclient/command.c. Sun Jan 26 12:20:30 EET 2003 Pekka Riikonen * Fixed a double free in INVITE command error handling in server. Affected file silcd/command.c. * Added macros SILC_SWAB_[16|32] to swab byte order of 16-bit and 32-bit unsigned integers. Affected file lib/silcutil/silctypes.h. * Use the SILC_SWAB_16 instead of htons() in server when handling ports since the ports in structures are always in little-endian order (regardless of platform). Affected file silcd/serverid.c and silcd/server_backup.c. Tue Jan 21 17:18:04 EET 2003 Pekka Riikonen * Send DISCONNECT in close admin command in server. Affected file silcd/command.c. * Check whether we are already connecting to a remote router (in addition of checking whether we are already connected) before creating new connection. Affected file silcd/server.c. Thu Jan 16 18:47:00 EET 2003 Pekka Riikonen * Added better compiler and compiler flags checking in configure. * Check that socket is valid after QoS is applied to data. Affected file lib/silcutil/unix/silcunixsockconn.c. * Make sure the socket connecetion is not closed to early when closing connection in server. Also make sure the connection is always closed after error in a protocol. Affected file silcd/server.c. Wed Jan 15 11:03:36 CET 2003 Pekka Riikonen * Removed --session and --dummy options from Irssi SILC Client. -d option is available only if --enable-debug was given. Affected files are irssi/src/silc/core/silc-core, irssi/src/core/session.c and irssi/src/fe-text/silc.c. Tue Jan 14 12:25:09 CET 2003 Pekka Riikonen * Added silc_buffer_steal to steal the data from the buffer. Affected file lib/silcutil/silcbuffer.h. Sat Jan 11 18:16:29 CET 2003 Giovanni Giacobbi * Fixed server crash with double Primary block in config file. Fixed also various memory leaks around the config file parser. Affected files lib/silcutil/silcconfig.c, silcd/serverconfig.c. * Changed my nickname (Johnny Mnemonic) to my real name, this means that bugs introduced by him were actually introduced by me! Tue Jan 7 21:58:53 CET 2003 Jochen Eisinger * Don't display "foo appears as foo\nYou're now known as foo" messages. Affected file irssi/src/silc/core/client_ops.c Tue Jan 7 20:08:15 EET 2003 Pekka Riikonen * Fixed error handling of invalid client entry when calling commands in server. Fixes a crash. Affected file silcd/command.c. Thu Dec 26 14:19:29 EET 2002 Pekka Riikonen * Added some sanity checks in server for correctness of the server configuration. Affected file silcd/serverconfig.c. Fri Dec 20 10:47:59 CET 2002 Pekka Riikonen * Prevent endless resolving of user informations in USERS command by checking the command reply status correctly. Affected file lib/silcclient/command_reply.c. Tue Dec 17 10:05:00 CET 2002 Pekka Riikonen * Fixed file writing on WIN32 to use O_BINARY flag. Affected file is lib/silcutil/silcfileutil.c. A patch by Matthew Aldous . * Added better implementation using CriticalSection of SilcMutex on WIN32. A patch by Mikko Lähteenmäki . * Added some Winsock WIN32 compatiblity defines into includes/silcwin32.h. Mon Dec 16 19:33:05 EET 2002 Pekka Riikonen * Fixed double free in async host lookup code. Affected file lib/silcutil/silcsockconn.c. * On backup router handle now the SERVER_SIGNOFF from router for local connected servers too, and close the connections. Do not process them as normally signing off servers when they really signoff by sending EOF fe, but always assume that router sends the SERVER_SIGNOFF. Affected files silcd/server.c and silcd/packet_receive.c. * Fixed socket unsetting when closing connections. Affected files silcd/server.c and silcd/packet_send.c. * Do not print the nickname in SERVER_SIGNOFF if we do not have it. Prevents asserts in Irssi core. It is possible we don't have the nick if it was just being resolved when server signoff. Affected file irssi/src/silc/core/client_ops.c. Thu Dec 12 23:22:50 EET 2002 Pekka Riikonen * Fixed autonick crashbug in client library. Affected file lib/silcclient/client.c. * Fixed Unix implementation of SilcMutex to really assert if the mutex is locked/unlcoked already. Affected file lib/silcutil/unix/silcunixmutex.c. * Fixed locking in silc_schedule_uninit. It didn't lock when dispatching timeout tasks. Affected file is lib/silcutil/silcschedule.c. * Changed Win32 implementation of SilcThread to use modern Win32 interface. Affected file is lib/silcutil/win32/silcwin32thread.c A patch by Mikko L. Thu Dec 12 12:06:59 CET 2002 Jochen Eisinger * Don't print signed messages when sending failed. Affected files irssi/src/silc/core/silc-[servers.c/commands.h] * Send adquate signal when founding a channel by joing it. Affect file irssi/src/silc/core/client_ops.c Wed Dec 11 21:46:19 CET 2002 Jochen Eisinger * Fix theme abstracts parsing. Affected files irssi/default.theme, irssi/src/fe-common/core/themes.c Wed Dec 11 20:20:07 EET 2002 Pekka Riikonen * Fixed close command to use the port correctly when closing server connections. Affected file silcd/idlist.c. * Check for NULL outbuf in silc_socket_write. It is possible that it is NULL is some odd case. Affected files are lib/silcutil/[unix/win32]/silc[unix/win32]sockconn.c. * Do not call final protocol callback for backup router resuming protocol when closing connection. It is closed by timeout in case of error. Affected file silcd/server.c. * Backup reconnect to router if backup resuming protocol failed. Affected file silcd/server_backup.c. Wed Dec 11 10:01:26 CET 2002 Pekka Riikonen * Fixed double free in SKE library error hadling when signature error occurred. Affected file lib/silcske/silcske.c. * Save the fingerprint to new SilcClientEntry after changing nickname. Affected file lib/silcclient/client_notify.c. * Print SIGNOFF in Irssi SILC client only if the nickname is known. Prevents asserts in Irssi core. It is possible we don't have the nick if it was just being resolved when it quit. Affected file irssi/src/silc/core/client_ops.c. Tue Dec 10 21:47:56 EET 2002 Pekka Riikonen * Fixed double free in invite list adding code when adding invite strings. Affected file silcd/server_util.c. Fri Dec 6 17:40:24 EET 2002 Pekka Riikonen * More log printing during backup router protocol. Affected file silcd/server_backup.c. * Removed backwards support for old private key file format. Affected file lib/silccrypt/silcpkcs.c. * Removed backwards support for not-so-strict decryption length check, it's strict now. Affected lib/silccrypt/silccipher.c. * GETKEY to update the client entrys fingerprint too. Affected file lib/silcclient/command_reply.c. * Added --without-libtoolfix for package builders using weird wrappers around libtool (BSD at least). Thu Dec 5 22:29:46 EET 2002 Pekka Riikonen * Fixed backup router bugs: When backup resumes router and receives a CHANNEL_MESSAGE packet the backup must not act as router since the packet header decryption would be different. Also, when relaying packets to channel, do not re-encrypt packets on backup that came from the primary since the connection isn't really router-router connection. Affected files silcd/server.c, silcd/packet_send.c. * Added checks in encryption/decryption that encryption/decryption length sent as argument really is multiple by block size. Helps catching really weird bugs like the above backup router bugs when packets are being decrypted in wrong way. Affected files lib/silccore/silcpacket.c, and lib/silccrypt/silccipher.c. * Fixed padding generation in private key file encryption. Affected file lib/silccrypt/silcpkcs.c. Thu Dec 5 16:35:23 EET 2002 Pekka Riikonen * Added ignore_message_signatures setting which can be used to ignore signatures in messages. Affected files are irssi/src/silc/core/client_ops.c, silc-core.c. * Fixed the libtoolfix to use command line options instead of environment variables. They didn't work as expected. Now, the libtool is fully run-time configurable. Wed Dec 4 21:08:52 CET 2002 Jochen Eisinger * Verify signature payload for signed messages. Affected files irssi/src/silc/core/client_ops.h, irssi/src/silc/core/silc-servers.c, irssi/src/silc/core/silc-core.h * Display signature verification result in public and private messages using theme abstracts. See irssi/default.theme for examples on their usage. Affected files irssi/default.theme, irssi/src/fe-common/silc/fe-messages.h, irssi/src/fe-common/silc/module-formats.[ch], irssi/src/fe-common/silc/fe-common-silc.c, irssi/src/fe-common/silc/Makefile.am irssi/src/fe-common/core/fe-messages.[ch] * Fixed bugs in Irssi's theme parsing. Affected files irssi/src/fe-common/core/themes.c Wed Dec 4 18:29:13 EET 2002 Pekka Riikonen * Calculate the correct length for signed messages before encrypting, it must be multiple by block size. Affected file lib/silccore/silcmessage.c. * silc_message_signed_get_public_key returns now both decoded and encoded public key. Affected files are lib/silccore/silcmessage.[ch]. * Added libtoolfix script that makes the libtool more generic and configurable in run-time. Now we can specify in run-time if what kind of libraries we want to create, regardless of configuration. SIMs are now creates even if --disable-shared was explicitly given. Tue Dec 3 23:26:55 EET 2002 Pekka Riikonen * Fixed founder key sending in CMODE command in client. Affected file lib/silcclient/command.c. * Fixed CUMODE founder authentication in server to not check for client's public key since it's not supposed to do that. Affected file silcd/command.c. Tue Dec 3 12:02:41 CET 2002 Jochen Eisinger * Set realname and hostname in NICK_REC records. Affected file irssi/src/silc/core/silc-nicklist.c Mon Dec 2 20:50:20 EET 2002 Pekka Riikonen * Remove 1.0 protocol backwards compat code from client library. * Added more reliable check for whether nickname did change or not, or whether only Client ID changed in NICK_CHANGE notify. Affected file lib/silcclient/client_notify.c. Fixes bug in '@' character handling in a nickname. * Added support for automatically parsing signature from the message payload. Added new function silc_message_get_signature to return the payload to application. Affected files lib/silccore/silcmessage.[ch]. * Changed the private_message and channel_message client operations to deliver the SilcMessagePayload to the application too. Application can use it fe. to get the signature from the message for verification. Affected file lib/silcclient/silcclient.h, client_channel.c and client_prvmsg.c. * Redefined the signed payload for message payloads. Updated protocol specs and implemented. Mon Dec 2 16:28:29 EET 2002 Pekka Riikonen * Fixed wrong invite and ban list handling in server command reply. Affected files are silcd/command_reply.c, silcd/server_util.[ch]. Sun Dec 1 20:48:17 EET 2002 Pekka Riikonen * Fixed CMODE setting in server when founder mode was set. Affected file silcd/command.c. Bug #95. * Added support to setting specific public key in CMODE in Irssi SILC client. Affected file lib/silcclient/command.c. * Added support to use specific public key in CUMODE in Irssi SILC Client. Affected file lib/silcclient/command.c. * Added support for inviting and banning by public key in Irssi SILC client. Affected file lib/silcclient/command.c. * Fixed fingerprint/babbleprint showing in invite and ban list command replys. Affected file is irssi/src/silc/core/client_ops.c. Sun Dec 1 16:32:03 CET 2002 Jochen Eisinger * Format CMODE +c and +h to display both the mode and the argument Sun Dec 1 18:17:22 EET 2002 Pekka Riikonen * Added test vectors and test programs for SHA-1, MD5, HMAC-SHA1 and HMAC-MD5. New tests are located in lib/silccrypt/tests/. Fixed also argument decoding bug in MD5 implementation. Affected file lib/silccrypt/md5.c. * Changed the channel private key and private message key generation (with static keys) to use SHA1 instead of MD5, as SHA1 is the mandatory hash function in SILC. Affected file lib/silcclient/client_[channel/prvmsg].c. * Changed the private key file encryption to use SHA1 instead of MD5. Added support for the old generation and added automatic change of the key (to be removed later). Affected files lib/silccrypt/silcpkcs.c. Sat Nov 30 19:07:52 EET 2002 Pekka Riikonen * Load only files with .pub suffix in PublicKeyDir. Affected file silcd/serverconfig.c. Sat Nov 30 14:29:34 CET 2002 Johnny Mnemonic * Extended the SILC_SERVER_LOG_ERROR macro to all available logging channels. Affected files silcd/silcd.c, silcd/server.h. * Added the config directive PublicKeyDir for the client block. Affected files doc/exampe_silcd.conf.in, silcd/serverconfig.[ch]. Sat Nov 30 09:30:55 CET 2002 Pekka Riikonen * Merged Toni's irssi/silc.conf patch. * ROBODoc cleanup patch to lib/silccrypt/silcpkcs.h by johnny. * Max alloc tests in allocation routines. Affected file lib/silcutil/silcmemory.c. Fri Nov 29 23:44:29 EET 2002 Pekka Riikonen * Fixed a typo in resuming code that fixed detach/resume code in server. Bug #93. Affected file silcd/packet_receive.c. Thu Nov 28 17:17:11 CET 2002 Jochen Eisinger * Do reverse lookups for server when /connecting. Affected files irssi/silc.conf, irssi/src/core/servers.c, irssi/src/core/network.c, irssi/src/core/net-nonblock.* Thu Nov 28 16:19:18 CET 2002 Pekka Riikonen * Added library versioning for shared libraries. Affected files configure.in.pre and lib/Makefile.am.pre. Wed Nov 27 21:51:52 CET 2002 Jochen Eisinger * Display INVITE and BAN lists as specified by SILC 1.2 Wed Nov 27 16:01:11 CET 2002 Pekka Riikonen * Do not send invite list back unless asked (when sending no arguments) or when list was modified. Affected file silcd/command.c. * Remove client from invite list in KILLED notify and in KILL command. Affected file silcd/command.c and silcd/server.[ch]. * Fixed bugs in invite list handling in INVITE command. Affected files silcd/command.c and silcd/server_util.c. * Merged with Irssi 0.8.6. * Fixed UTF-8 in Irssi SILC Client, setlocale was missing. Affected file irssi/src/fe-text/silc.c. Mon Nov 25 18:21:43 EET 2002 Pekka Riikonen * The silc_argument_get_[first/next] now return the argument type to caller. Added silc_argument_payload_encode_one. Affected files are lib/silccore/silcargument.[ch]. * Added support for the SILC 1.2 INVITE command and new invite lists to server. Affected files are silcd/command.c, silcd/server_util.[ch] and silcd/packet_[receive/send].[ch]. * Added support for the SILC 1.2 BAN command and new ban lists to server. Affected files are silcd/command.c, silcd/server_util.[ch] and silcd/packet_[receive/send].[ch]. * Added support to client sending new INVITE command. Affected file is lib/silcclient/command.c. * Added support to client sending new BAN command. Affected file is lib/silcclient/command.c. * Added support for removing client from invite list when kicked from channel, as SILC 1.2 dictates. Affected files are silcd/packet_receive.c and silcd/command.c. Sun Nov 24 18:26:42 EET 2002 Pekka Riikonen * If iv argument to silc_cipher_[encrypt/decrypt] is NULL, use automatically the cipher's internal IV. Affected files lib/silccrypt/silccipher.[ch]. * Assure the RESUME_CLIENT packet is not sent to twice to backup router if the detached client was originated from the backup. Affected file silcd/server.c. Bug #76. * Changed silc_sim_symname to not allocate memory. Affected file lib/silcsim/silcsimutil.c. * Fixed memory leaks with SIMs in server. Affected files silcd/serverconfig.c, silcd/server.c. * Fixed channel key distribution after resuming detached client. Affected files silcd/packet_receive.c. * Fixed channel's global_user boolean checking after detaching. Check it after changing the owner of the client not before. Affected file silcd/packet_receive.c. * Fixed few double frees from client library. Fixes at least Bug #81, possibly others too. * UTF-8 decode topics also in JOIN command reply and TOPIC_SET notifys in Irssi SILC Client. Affected file is irssi/src/silc/core/client_ops.c. Bug #82. * Applied Ville Räsänen's manual page and --mandir bugfix patch. Affected files are configure.in.pre and Makefile.am.pre. Bug #88. Fri Nov 22 18:34:20 EET 2002 Pekka Riikonen * Added support to backup router protocol for backup to tell normal server that it cannot use the backup router as primary because the primary isn't really down. Updated protocol specs. * Added support for primary router to tell backup router that resuming is not possible because the backup really isn't primary in the cell. For example if backup disconnected itself the resuming is not allowed since the primary really did not go down. Updated protocol specs. * Removed MARS from crypto library. * Defined the CTR mode and Randomized CBC mode in SILC. The CTR mode is RECOMMENDED now in specification. Defined also Serpent cipher as optional cipher. Updated the protocol specs. Thu Nov 21 12:43:28 EET 2002 Pekka Riikonen * Added support for inviting/banning by IP/MASK, public key, and explicit Client ID. Redefined the command and notify types to allow easier forwards support for other methods of inviting/banning. Updated protocol specs. * Remove the client from channel's invite lists if the client is kicked or killed. Updated protocol specs. * Unified the Channel Message Payload and Private Message into one Message Payload. Updated protocol specs and implemented. Tue Nov 19 22:30:56 EET 2002 Pekka Riikonen * Don't wait for EOF after socket error has occurred, but close the connection. Affected file is silcd/server.c. Mon Nov 18 18:58:26 EET 2002 Pekka Riikonen * Added support for setting FOUNDER mode on channel with specific public key which can be set with CMODE command. Updated protocol specs and implemented in client and server. * Fixed the Irssi SILC client to correctly shutdown the client library to avoid memory leaks. Affected files are irssi/src/silc/core/silc-core.c and silc-servers.c. * Deprecated the No Reply flag in SKE protocol and introduced "IV Included" flag which can be used to indicate that the IV is included in the ciphertext. This makes it possible to use SILC on unreliable transport, such as UDP which may cause packet reordering and losses. Updated protocol specs, did not implement yet. Sun Nov 17 15:50:57 EET 2002 Pekka Riikonen * Fixed the MPI implementation of silc_mp_sizeinbase to return < 32 bit values in correct size. Affected file is lib/silcmath/mp_mpi.c. Sat Nov 16 13:14:45 EET 2002 Pekka Riikonen * Fixed the KE Start Payload parsing to check that mandatory fields are present. Affected file lib/silcske/payload.c. * Fixed compilation warnigs in Irssi SILC Client. Affected files are irssi/src/silc/core/silc-query.c. client_ops.c. Thu Nov 14 19:33:28 CET 2002 Jochen Eisinger * Print "nick now appears as newnick" and update Irssi's nicklist when you change your nick to "nick". Closes #62 * Never format your own nick. Closes #63 Thu Nov 14 09:44:54 CET 2002 Jochen Eisinger * SILC_UMODE_GONE changes are now propagated correctly to the Irssi client. Closes #54 Tue Nov 12 19:42:18 CET 2002 Jochen Eisinger * Fixed example in /HELP KEY * Added expando $j which expands to current SILC Client version Tue Nov 12 19:46:39 EET 2002 Pekka Riikonen * Fixed public key decoding in crypto library. * Added better error printing to SKE library. Tue Nov 12 08:50:12 CET 2002 Pekka Riikonen * Fixed NICK command to not crash if nickname was not sent. Mon Nov 11 19:32:00 EET 2002 Pekka Riikonen * Added Encrypt-Then-MAC order to SILC packet MAC generation. Deprecated the old Encrypt-And-MAC order. Updated protocol specs and implemented. * Added Encrypt-Then-MAC order to Channel Message Payload MAC generation. Updated specs and implemented. Sun Nov 10 12:20:56 EET 2002 Pekka Riikonen * Added support for rekey before 2^32 sequence number wraps. Affected files in server and client library. * Padding must be at least 8 bytes now. Implemented and updated protocol specs. * Compute maximum padding for authentication packets to make passphrase approximation attacks impossible. Affected files in client library and in server. * Fixed PING command sending in client library and handling in server. The server ID must be ID Payload, not raw ID data. Affected files in server and client library. * Defined that all public keys sent in commands and notify payloads are actually Public Key Payloads not raw public key data. Updated protocol specs and implemented. * Updated protocol version to 1.2. Updated specs and code. * Added ERR_UNSUPPORTED_PUBLIC_KEY and ERR_OPERATION_ALLOWED status types. Updated specs and the code. * Added support for normal client to kill its own entries from the network. Updated protocol specs and the code. * Defined the SILC_MESSAGE_FLAG_SIGNED. Updated protocol specs and added initial implementation. * Added MAC field to the Private Message Payload to protect against chosen ciphertext attacks. Updated the protocol specs and implemented. * Added idle and signon fields to the ATTRIBUTE_SERVICE attribute to indicate the user's current idle and signon time of a service. Updated protocol specs and implemented. Thu Nov 7 19:21:10 EET 2002 Pekka Riikonen * Added "do_not_bind" argument to silc_client_file_send what can be used to not bind locally but assume the file receiver provides the point of connect. Usefull when sender is behind NAT device. Affected file lib/silcclient/silcclient.h and client_ftp.c. * Added -no-listener option to FILE SEND command in Irssi SILC client. Affected file irssi/src/silc/core/silc-servers.c. Renamed FILE RECEIVE to FILE ACCEPT. * Confirm passphrase for private key encryption in silc_create_key_pair and silc_change_private_key_passphrase. Affected files are lib/silcutil/silcapputil.c. Thu Nov 7 10:05:28 CET 2002 Pekka Riikonen * Move silc_client_packet_send back to internal, added silc_client_send_packet, a bit simpler function for application. Affected files lib/silcclient/silcclient.h, client.c and client_internal.h. * Moved the SilcClientEntry, SilcChannelEntry and SilcServerEntry to silcclient.h to be public and documented them for application. Affected files are lib/silcclient/silcclient.h and idlist.h. Wed Nov 6 17:18:13 EET 2002 Pekka Riikonen * Fixed manual page installation patch by Ville Räsänen. USERS help page fix patch by Ville Räsänen * Changed the silc_client_command_call interface to make the command call simpler for the application. The library now handles the command line parsing, command finding and execution. Application only needs to call the function with the command line. Affected files are lib/silcclient/silcclient.h, command.[ch]. * Fixed silc_get_input to NULL-terminate the returned input. Affected file lib/silcutil/silcutil.c. * Resolve the client's public key in JOIN command if the founder auth data is being requested but we don't know the client's public key. Affected file silcd/command.c. Bug #53. Mon Nov 4 16:02:59 EET 2002 Pekka Riikonen * Print notify for server opers when backup router comes online. Affected file silcd/server.c. * Fixed the INVITE command to send the invite list in command reply. Affected file silcd/command_reply.c. * Fixed MOTD command reply sending. Affected file silcd/command.c. * UTF-8 decode the topic in TOPIC command reply and LIST command reply in Irssi SILC client. Affected file is irssi/src/silc/core/client_ops.c. Sun Nov 3 17:59:15 EET 2002 Pekka Riikonen * Fixed the INVITE command to not crash Irssi SILC client when given without nickname argument. AFfected file irssi/src/silc/core/client_ops.c. * Fixed double free in WHOIS query on normal server when forwarding query to router. Affected file is silcd/server_query.c. * Fixed WATCH command reply handling on normal server which was missing altogether. Affected file silcd/command_reply.c. Bug #44. Sun Nov 3 00:42:05 EET 2002 Mika Boström * Added man-pages for silc(1), silcd(8) and silcd.conf(5). Included yodl sources for each of these. Also modified Makefile.am prototype to install these files to proper locations. Updated CREDITS. Affected file Makefile.am.pre, new files doc/*.yo, doc/silc.1, doc/silcd.conf.5, doc/silcd.8. Sat Nov 2 21:26:56 EET 2002 Pekka Riikonen * Added support for encrypted private key files. Now passphrase must be provided when new key pair is created (can be empty though), and prompted when loading the private key. Added support for loading the old-style non-encrypted private keys as well. Affected files lib/silccrypt/silcpkcs.[ch], Irssi SILC client and SILC Server. * Fixed silc_get_input to accept input on all terminals. Affected file lib/silcutil/silcutil.c. * Moved the Irssi SILC client key loading and other stuff to be called after the arguments and UI is initialized. Affected file irssi/src/silc/core/silc-core.c. Bug #31. * Added -P option to Irssi SILC client which can be used to change the passphrase of the private key. Affected file irssi/src/silc/core/silc-core.c. * Added silc_change_private_key_passphrase apputil routine to lib/silcutil/silcapputil.[ch]. Sat Nov 2 12:53:09 EET 2002 Pekka Riikonen * Fixed connection closing in client library to not crash. Moved the connection freeing totally to function silc_clinet_del_connection. Affected file lib/silcclinet/client.c. Fri Nov 1 18:57:02 EET 2002 Pekka Riikonen * Changed includes/silcincludes.h to silcincludes.h.in to include configuration specific information. The silcdefs.h is not included in to installation anymore (it's only compilation time header). Fri Nov 1 10:30:26 CET 2002 Pekka Riikonen * Moved the SilcClient and SilcClientConnection from client.h to the public lib/silcclient/silcclient.h. Changed the structures a bit. Thu Oct 31 22:44:07 EET 2002 Pekka Riikonen * If version string in silc_clinet_alloc is NULL the library puts it automatically. Affected file lib/silcclient/client.c. * Changed the version strings from variables to #define's in includes/silcversion.h. Wed Oct 30 16:17:30 CET 2002 Pekka Riikonen * Added shared library complation support. Tue Oct 29 21:48:55 EET 2002 Pekka Riikonen * Added lib/silcutil/silcapputil.[ch] for application utility functions. It includes routines for applications' convenience. Added silc_create_key_pair, silc_show_public_key and silc_load_key_pair functions. Tue Oct 29 17:36:44 EET 2002 Pekka Riikonen * Send RESUME_CLIENT packet from router to backup routers to in resuming. Affected file silcd/packet_receive.c. Mon Oct 28 21:23:39 EET 2002 Pekka Riikonen * In IDENTIFY command parsing, send all other IDs except Client IDs explicitly to router for resolving on normal server. Also check that ID received in WHOIS command is always Client ID, others are not allowed. Affected file silcd/server_query.c. * Merged latest changes from irssi.org CVS. Sun Oct 27 11:44:32 EET 2002 Pekka Riikonen * Merged c0ffee's /set heartbeat patch to Irssi SILC client. Affected files irssi/src/silc/core/silc-core, silc-server.c. * Fixed the heartbeat sending in Irssi SILC client. Moved the silc_client_packet_send to silcclient.h for application usage. Affected files lib/silcclient/client_internal.h lib/silcclient/silcclient.h. * Fixed a bug in query resolving in server. Used wrong variable in a for loop and crashed. Affected file is silcd/server_query.c. * Server constructs requested attributes only to locally connected clients. Affected file silcd/server_query.c. Bug #36. * Fixed a bug when sending resolving from router to server with requested attributes. The constructed WHOIS command was incorrect. Affected file silcd/server_query.c. Bug #38. * Fixed Requested Attributes saving in WHOIS command reply. The length of the data buffer must be saved too. Affected file silcd/command_reply.c. * Update the client entry's servername after detaching is over. Affected file silcd/packet_receive.c. Bug #37. * Resolve incomplete client entrys in CUMODE_CHANGE and CMODE_CHANGE notifys. Affected file is lib/silcclient/client_notify.c. Bug #42. Thu Oct 24 12:22:35 EEST 2002 Pekka Riikonen * Fixed channel key packet processing bug on backup router during backup resuming protocol. Affected file is silcd/packet_receive.c. * Fixed memory leaks in server. Affected files are silcd/server.c and silcd/packet_receive.c. * Fixed packet decryption problem when backup router encrypted channel message with wrong key during backup resuming protocol. Affected file silcd/packet_send.c. * ROBODoc documented lib/silccrypt/silccipher.h. A patch by Toni Willberg (toniw@iki.fi) * Changed the SilcCipher context to be private. Changed the silc_cipher_get_iv to just return pointer to the IV. Added silc_cipher_get_name to return the name of the cipher. Fixed code all around to support these changes. Affected files are lib/silccrypt/silccipher.[ch], client library and server. Wed Oct 23 19:01:41 EEST 2002 Pekka Riikonen * Fixed unaligned access in lib/silccore/silcattrs.c. * Fixed libtool linking in lib/silcsim/Makefile.am. * Fixed services attribute printing. Affected files is irssi/src/silc/core/silc-queries.c. Wed Oct 23 09:51:04 CEST 2002 Pekka Riikonen * Fixed a crashbug in incoming server accepting. Affected file silcd/server.c. Tue Oct 22 13:02:32 EEST 2002 Pekka Riikonen * Added automatically generated index to Toolkit Reference Manual. * Added support for Postscript Toolkit Reference Manual. Mon Oct 21 21:30:40 CEST 2002 Pekka Riikonen * Merged DISCONNECT fix, and autoconn port fix from Irssi CVS. Sun Oct 20 19:54:55 EEST 2002 Pekka Riikonen * Added 'send_events' boolean argument to the function silc_schedule_set_listen_fd which sends the set events to the application explicitly if set to TRUE. Default action should be FALSE. Affected file lib/silcutil/silcschedule.[ch], lib/silcclient/client_internal.h and silcd/server_internal.h. * Added silc_compare_timeval to determine which time values is smaller. Affected file lib/silcutil/silcutil.[ch]. * Added sort-of "Quality of Service" (QoS) support to SilcSocketConnection. Data reception can be controlled with rate limit per second and/or read data length limit. Added silc_socket_set_qos. Affected files are lib/silcutil/silcsockconn.[ch] and unix/silcunixsockconn.c. * Added the QoS configuration to SILC Server configuration file. Affected files are silcd/serverconfig.[ch] and server.c. Sun Oct 20 14:12:24 CEST 2002 Pekka Riikonen * Merged with irssi.org CVS. * Failed OPER and SILCOPER authentications are now logged. Affected file silcd/command.c. Bugs #25. Sat Oct 19 13:32:15 CEST 2002 Pekka Riikonen * ROBODoc documented lib/silcutil/silcbuffer.h and lib/silcutil/silcdlist.h. Patch by Ville Räsänen . Fri Oct 18 10:51:04 EEST 2002 Pekka Riikonen * Added support for auto-passphrase authentication from the config file during connecting which was not implemented yet. Affected file irssi/src/silc/core/client_ops.c. * Fixed a bug in authentication protocol failure handling which was processing wrong callback context. Affected files are lib/silcclient/client.c and protocol.c. * Fixed the /ATTR allow off to actually work. Affected file is irssi/src/silc/core/silc-queries.c. * Fixed the /ATTR -del to work. Affected file is irssi/src/silc/core/silc-queries.c. Thu Oct 17 23:45:12 EEST 2002 Pekka Riikonen * Fixed string formatting crashbug in lib/silccore/silcattrs.c. * Fixed mask attribute adding in Irssi SILC client. Affected file irssi/src/silc/core/silc-queries.c. Thu Oct 17 16:40:39 EEST 2002 Pekka Riikonen * Added support for saving the requested attributes in WHOIS to directory. Affected file is irssi/src/silc/core/silc-queries.c. Wed Oct 16 17:40:56 EEST 2002 Pekka Riikonen * Added support for parsing VCard fields that do not have the TYPE= for types. Affected file lib/silcutil/silcvcard.c. * Fixed a double free bug in hash table foreach function if the entry was deleted in the foreach callback. Affected file lib/silcutil/silchashtable.c. Tue Oct 15 18:05:24 EEST 2002 Pekka Riikonen * Added silc_attribute_get_verify_data to return the signature verification data for either user digital signature or server digital signature in Requested Attributes. Affected files are lib/silccore/silcattrs.[ch]. * Added silc_vcard_alloc which is used to allocated dynamic SilcVCard context. The silc_vcard_free now checks whether the context is dynamically allocated or not. Affected files are lib/silcutil/silcvcard.[ch]. Mon Oct 14 17:55:44 EEST 2002 Pekka Riikonen * Periodically remove the NOATTR status from client entry so that the client may take the attributes in use even after server has resolved them unsuccessfully earlier. Affected file silcd/server_query.c and idlist.h. * Moved sha1hash and md5hash from client->internal to SilcClient for application usage. Affected files are lib/silcclient/client.h and client_internal.h. * Fixed attribute encoding and decoding bugs. Affected files lib/silccore/silcattrs.[ch]. * Added ATTR command to Irssi SILC Client which is used to manage user's Requested Attributes sending and values for WHOIS command. Affected files around Irssi SILC client. Mon Oct 14 14:33:54 EEST 2002 Pekka Riikonen * Added silc_buffer_strformat which can be used to format strings into a buffer which size is automatically increased. Affected file lib/silcutil/silcbuffmt.[ch]. * Added implementation of VCard (RFC 2426) which can be used as part of Requested Attributes in WHOIS command. Affected file lib/silcutil/silcvcard.[ch]. Fri Oct 11 23:52:17 EEST 2002 Pekka Riikonen * Some strncat -> silc_strncat changes our the core and client library. * Added SILC_SKE_STATUS_SIGNATURE_ERROR and OUT_OF_MEMORY errors. Added better error printing to SKE library. Affected files lib/silcske/silcske.c, silcske_status.h and payload.c. * Save the PKCS key length even if only private key is set to SilcPKCS. Affected file lib/silccrypt/silcpkcs.[ch] and rsa.c. * Fixed the usage of silc_pkcs_get_key_len since it returns the length in bits not in bytes. Affected files are lib/silcske/silcske.c, lib/silccore/silcauth.c and silcd/server_query.c. Wed Oct 9 17:22:57 EEST 2002 Pekka Riikonen * Added silc_attribute_payload_encode_data to directly encode the data into the attributes buffer. Renamed function silc_attribute_payload_parse_list to silc_attribute_payload_parse. Affected files are lib/silccore/silcattrs.[ch]. * silc_hash_table_find_foreach calls the foreach function now once even if the nothing was found with context set to NULL. Affected file lib/silcutil/silchashtable.[ch]. * Remove the RESOLVING flag from client entry after received the Requested Attributes from the client. Fixed memory leak in client entry freeing. Affected files silcd/server_query.c and idlist.c. * Added Requested Attributes support into SILC Client Library. It is not able to send requested attributes in WHOIS command, and also receive and process requested attributes. Added silc_client_attribute_[add|del] and silc_client_attributes_get functions. Added also `ignore_requested_attributes' to the SilcClientParams to not use attributes in client. Affected files are lib/silcclient/command.c, client_attrs.[ch], silcclient.h, client_internal and client.[ch]. * Changed the silc_client_get_client_by_id to support Requested Attributes, it takes them as argument now. Affected file is lib/silcclient/silcclient.h, and idlist.c. * Added -details option to WHOIS command in Irssi SILC Client to support the requested attributes. By default it requests all attributes. Affected file lib/silcclient/command.c and irssi/doc/help/in/whois.in. Tue Oct 8 17:58:28 EEST 2002 Pekka Riikonen * Add also SERVICE attribute for server-constructed attribute data. Also digitally sign the attributes and add SERVER_DIGITAL_SIGNATURE attribute. Affected file is silcd/server_query.c. Mon Oct 7 18:25:35 EEST 2002 Pekka Riikonen * Changed the silc_attribute_payload_encode to support list of attributes (function may be called several times to add a new attribute). Removed the silc_attribute_payload_encode_list function. The encoding function now also automatically encodes the data, so the caller does not need to do that. Affected files lib/silccore/silcattrs.[ch]. * Added support for replying on behalf of the user to the Requested Attributes in WHOIS command in the server. Affected file silcd/server_query.c. * SILC_NOT_IMPLEMENTED macro use SILC_LOG_INFO now instead of SILC_LOG_DEBUG. Affected file lib/silcutil/silclog.h. Sun Oct 6 16:48:32 EEST 2002 Pekka Riikonen * Don't swtich to become primary router if we are backup if decryption error has occurred. Affected file silcd/server.c. * Fixed a bug in backup router IP address comparison in silc_server_backup_get. Save now also the port of the server/router and use that in comparison as well. Affected file silcd/server_backup.c. * Normal server now reconnects to backup router automatically if connection is lost to it. Affected file silcd/server.c. Thu Sep 26 13:51:02 CEST 2002 Pekka Riikonen * If packet processing fails (like integrity check fails) the connection is closed now. Affected files are lib/silccore/silcpacket.c and silcd/server.c. Mon Sep 23 10:59:39 CEST 2002 Pekka Riikonen * Fixed double free in RSA public key set function silc_rsa_set_public_key. Affected file lib/silccrypt/rsa.c. Bug #29. Sun Sep 22 14:54:05 EEST 2002 Pekka Riikonen * Rewrote WHOIS, WHOWAS and IDENTIFY commands in the server. Added server_query.[ch] which provides one interface for querying information using all three commands. * Changed all "typedef unsigned char" in core library to "typedef SilcUInt8". Sat Sep 21 21:36:45 EEST 2002 Pekka Riikonen * Added silc_strncat into lib/silcutil/silcstrutil.[ch]. * Renamed silc_server_get_client_resolve to silc_server_query_resolve and moved to server_query.[ch]. Wed Sep 18 18:28:04 EEST 2002 Pekka Riikonen * Resumed client packet handling from server put the resumed client on wrong list on router and caused the client not be present on the network anymore. Now fixed to put the client to correct list. Affected file silcd/packet_receive.c. Wed Sep 18 15:13:48 CEST 2002 Johnny Mnemonic * Various cleanup in error message output in config parsing code and in server init code. Fixed error log files containing too many newlines ('\n') in some situations. Affected files are silcd/serverconfig.c, silcd/silcd.c, and silcd/server.c. Wed Sep 18 10:51:23 CEST 2002 Pekka Riikonen * Use the reverse lookupped hostname in client internals instead of one user provided us as remote server name. Affected file lib/silcclient/client.c. Mon Sep 16 12:02:54 EEST 2002 Pekka Riikonen * Added 'app_context' to silc_schedule_init. It is an application specific context that is delivered to application in task callback functions. Affected files are lib/silcutil/silcutil.[ch]. * The hb_context in SilcSocketConnection is not freed automatically anymore (application must free it). Freeing it automatic is inconsistent. Affected files are lib/silcutil/silcsockconn.[ch]. Sun Sep 15 22:16:19 EEST 2002 Pekka Riikonen * Added support for removing explicitly added client connections in rehash and closing the client connections if they were unconfigured in the rehash. Affected file silcd/server.c. * Added support for aborting automatically pending commands that never receives the reply (to avoid memory leaks). Added also silc_server_command_pending_timed to set the specific timeout for pending command. Affected files are silcd/command[_reply].[ch]. * Added SILC_STATUS_ERR_TIMEDOUT status. Updated protocol specs and lib/silccore/silcstatus.h. Sun Sep 15 12:25:10 EEST 2002 Pekka Riikonen * Changed the silc_get_time to accept time value as argument or if zero is sent return current local time. Affected file lib/silcutil/silcutil.[ch]. * Added STATS command to client library and Irssi SILC client. Patch provided by Ville Räsänen . Wed Sep 11 09:22:00 CEST 2002 Pekka Riikonen * Assure that channel key is set before sending it. May crash server otherwise. Affected file silcd/packet_send.c. Tue Sep 10 09:50:08 CEST 2002 Pekka Riikonen * Assure that endless loop cannot happen with detached client resolving on normal server. Added idlist status SILC_IDLIST_STATUS_RESUME_RES. Affected files are silcd/idlist.h and silcd/packet_receive.c. Mon Sep 9 12:18:18 CEST 2002 Pekka Riikonen * Incoming file transfer request cannot use same session as the sending session. This can happen when sending file to yourself. Crashed the client on quit. Affected file lib/silcclient/client_ftp.c. Bug #24. Sun Sep 8 18:39:25 EEST 2002 Pekka Riikonen * Implemented the draft-riikonen-precense-attrs draft and the Attribute Payload into the lib/silccore/silcattrs.[ch]. Sun Sep 8 13:13:44 EEST 2002 Pekka Riikonen * Distribute the SERVER_SIGNOFF notify also to local backup routers from the primary router. The backup router may not have the signing of local server directly connected and need to know about the signoff. Affected file silcd/server_util.c. * Use the primary router as the origin of the locally connected server when it is disconnecting from the backup router since that's where it really is coming from. Now the clients from the disconnecting server are removed correctly and "shadow" clients are not left to the backup router. Affected file silcd/server.c. Sat Sep 7 22:26:50 EEST 2002 Pekka Riikonen * If normal server is standalone and found existing but disabled channel, do not re-create the channel since it creates duplicate same channels. Affected file silcd/server.c. * Added anonymous client connections support to server. New "anonymous" configuration option to ConnectionParams section added. If set to true, the username and hostname information of the client will be scrambled and anonymous user mode is set automatically to the user. Affected files are silcd/serverconfig.[ch], silcd/packet_receive.c and server.c. Sat Sep 7 16:02:09 EEST 2002 Pekka Riikonen * In JOIN notify handling, mark that the cache entry of the client cannot be expired. Can cause crashes on normal server (asserts client->channels). Affected file is silcd/packet_receive.c. * From now on distribution versions are used as protocol versions instead of by default using the Toolkit base version as protocol version. Affected file prepare. * Do not set the locally resolved hostname for local client entry but take what server sends. This way the real hostname is showed in WHOIS for yourself. Affected file is lib/silcclient/idlist.c and lib/silcclient/client.c. * Resolve local info with IDENTIFY when connecting to server.y Sat Sep 7 14:22:43 CEST 2002 Lubomir Sedlacik * Rewritten check for POSIX threads. Use --with-pthreads[=DIR] for implied search (not needed on platforms which has native pthreads library). Use --without-pthreads to disable threads. Affected file is configure.in.pre * Fixed --with-iconv on platforms which need to bypass (broken) native iconv(). Affected file is configure.in.pre Sat Sep 7 15:08:13 EEST 2002 Pekka Riikonen * Moved -C option parsing in Irssi SILC client at same time as other options. The UI was initialized earlier and caused problems on command line. Bug #16. Affected file is irssi/src/silc/core/silc-core.c. Mon Sep 2 23:00:30 CEST 2002 Johnny Mnemonic * Added global variable silc_log_timestamp that tells silclog wether to print or not the timestamp in the logging files. Affected file lib/silcutil/silclog.[ch]. * Added silcd configuration option Timestamp in the Logging section. Affected file silcd/serverconfig.[ch], doc/example_silcd.conf.in. Fri Aug 30 08:57:33 CEST 2002 Pekka Riikonen * Fixed fingerprint checking to check for entirely empty fingerprint instead of two first bytes when determining if it is set. Bug #18. Affected file silcd/command.c. * Fixed duplicate PKCS name registering to not allow it. Bugs #17. Affected file lib/silccrypt/silcpkcs.c. Sun Aug 25 08:02:04 CEST 2002 Lubomir Sedlacik * Conditionalize non-gcc compiler optimizations for various platforms, enable those commented out. Cleanups. Affected file lib/silcmath/mpi/configure.in Sat Aug 24 15:11:32 EEST 2002 Timo Sirainen * silc_rng_exec_command() left zombie processes if command didn't generate any output. Affected file lib/silccrypt/silcrng.c Fri Aug 23 22:05:44 CEST 2002 Lubomir Sedlacik * Rewrote iconv checking, introduce --with-iconv for systems which rely on libiconv. Check if iconv() provided by libc is good enough, otherwise demand libiconv. Affected file configure.in.pre Fri Aug 23 07:10:52 CEST 2002 Lubomir Sedlacik * Search for ldopen() also in libc. This enables SIM support on *BSD systems. Based on patch from Alex Zepeda. Affected file configure.in.pre Sun Aug 18 04:44:30 CEST 2002 Lubomir Sedlacik * Don't call AM_CONDITIONAL conditonally for SILC_THREADS. This fixes prepare on *BSD systems. Affected file configure.in.pre Sun Aug 4 15:55:40 CEST 2002 Pekka Riikonen * More fixed for not having purge timeout for global clients that are on channel. Affected files silcd/command_reply.c and server_util.c. * Fixed the rekey protocol to work with backup router connections. Rekey packets are now allowed on disabled connections as well. Affected files silcd/packet_send.c and server.c. * Do not switch to be as backup router when shutting down and closing the primary connection. Affected file silcd/server.c. * Fixed memory leaks in backup router deleting. Added silc_server_backup_free to free all data during shutdown of server. Affected files silcd/server_backup.[ch]. Sun Jul 14 21:33:32 EEST 2002 Pekka Riikonen * Do not process commands if the sock->user_data is NULL. Affected file silcd/command.c. Tue Jul 9 19:03:11 EEST 2002 Pekka Riikonen * Fixed buffer overflow and security problems (loosing bits in CFB encryption) in SILC RNG. Problems reported by Markku-Juhani O. Saarinen . Sun Jul 7 13:10:01 EEST 2002 Pekka Riikonen * Added yet more checks that client is not expired on global list if it is on channels. Affected file is silcd/command_reply.c. Sat Jul 6 11:45:11 EEST 2002 Pekka Riikonen * Merged c0ffee's MIME signal patch which adds support for sending also MIME messages in Irssi SILC Client, and handling received MIME messages in a signal (and perhaps doing something to non-textual MIME messages). Sun Jun 30 01:30:22 EEST 2002 Pekka Riikonen * Fixed pending command deletion in server and client library to check the whole list instead of breaking after first found. The affected files are silcd/command.[ch] and lib/silcclient/command.[ch]. Sat Jun 29 17:40:12 EEST 2002 Pekka Riikonen * Return NO_SUCH_CHANNEL error in USERS for channel that is secret or private, otherwise it's possible to find out whether a secret channel exists or not. Affected file silcd/command.c. * If CMODE change fails during the mode setting, assure that the old mode mask is set for the channel back. Affected file silcd/command.c. * Fixed passphrase saving on +a channel on normal server after successful JOIN command. Affected file silcd/command.c. Fri Jun 28 11:53:25 CEST 2002 Pekka Riikonen * Remove server/router operator privileges in DETACH command, since it's possible to resume to server where these privileges would not be allowed for the client. Affected file silcd/command.c. * Do not set to wait for backup in rehash of the server. Affected file silcd/server.c. * Do not check listener sockets when counting how many socket connections we have. Affected file is silcd/server_util.c. * Do not announce disconnected clients that are remaining in history (for WHOWAS). This is because SIGNOFF notify for these has been sent earlier already. Affected file silcd/server.c. Thu Jun 27 20:07:27 EEST 2002 Pekka Riikonen * Buffer overflow with CUMODE command's mode->mode character conversion. Reported by Ville Räsänen. Affected file lib/silcutil/silcutil.c. Thu Jun 27 16:54:33 EEST 2002 Pekka Riikonen * Allow heartbeat packets to go disabled connections anyway. Affected files silcd/server.c and silcd/packet_send.c. * Do not broadcast New Channel packets with List flag set in the packet to backup routers. The router must check for the correctness of the packets before sending them. It is possible that router will have enforce Channel ID change and this would cause desync in the backup router. Affected file silcd/packet_receive.c. * Remove SILC_PACKET_FLAG_LIST from the temp packets that are handled in list parsing. They are not list packets anymore. Affected file silcd/packet_receive.c. Thu Jun 27 11:27:07 CEST 2002 Pekka Riikonen * Stop waiting for backup router through the timeout, not directly after backup router has arrived. Affected file silcd/server.c. * Do not re-create channel keys and send them when removing clients in server shutdown. Affected files are silcd/server_internal.h and silcd/server_util.c. * Notify distribution to backup routers was missing from the silc_server_send_notify_dest function which caused desyncing problems with backup router. Affected file is silcd/packet_send.c. * The client's channel removing was working wrong on backup router. It assumed that it doesn't know global information but backup router does know. For this reason it could remove channel when it wasn't supposed to do that. Affected file silcd/server.c and silcd/server_util.c. Wed Jun 26 15:14:12 EEST 2002 Pekka Riikonen * Stop for a couple seconds after badkup router has become primary router. Affected file silcd/server.c. * Added silc_server_remove_servers_by_server, which is used to remove servers originated from some other server. Also clients of those servers can be removed too. Affected file silcd/server_util.[ch]. * When removing clients after a server has signed of remove also all servers behind that server (unless they are known to be available locally), and send SERVER_SIGNOFF for each of the server separately. Also the signed off clients are sent now separately per signed off server. The affected files are silcd/server.c and silcd/server_util.[ch]. * All servers added with silc_idlist_add_server must always have both "router" and "connection" pointers set. Otherwise, bad server entries may be left around in the cache. Affected file silcd/command_reply.c. * Do not create the channel key in NEW_CHANNEL packet processing if the channel is empty. Affected file silcd/packet_receive.c. * Completed backup router support for standalone routers. Supports also servers in the cell that do not use the backup at all. Wed Jun 26 10:38:11 EEST 2002 Pekka Riikonen * Fixed a bug in silc_string_regexify which did not add '^' at the start of each string, and thus the matching was not explicit. For example ban list iikone@*!*@* would match also "priikone", which is wrong, it would have to be *iikone@*!*@* to match also "priikone". Affected file lib/silcutil/unix/silcunixutil.c. Tue Jun 25 18:47:39 EEST 2002 Pekka Riikonen * Enable all local server connections before updating client caches when we've become backup router. Otherwise, signoff packets may not reach the clients. Affected files are silcd/server.c and silcd/server_util.[ch]. * Fixed a bug in version string parsing which could crash the program with specially formatted version string. Bug reported and patch provided by Ville Räsänen. Affected file lib/silcutil/silcutil.c. * Handle the disconnection immediately when DISCONNECT packet is received in server. Affected file silcd/server.c. * Primary router now waits a short time (10 seconds) for backup router connection before accepting any other connection (except local). Affected file silcd/server.c, serverconfig.[ch]. * Fixed a crash in client libary in NICK_CHANGE notify when NICK_CHANGE arrived for client entry we are resolving currently. Affected file lib/silcclient/client_notify.c. * Call the sconn->callback completion even if error had occurred. Start reconnecting always if connection to primary router fails during backup router protocol. Affected files silcd/server.c and server_backup.c. Mon Jun 24 17:47:52 EEST 2002 Pekka Riikonen * Added functions silc_server_send_opers and silc_server_send_opers_notify to send packets stricly to operators. Added macro SILC_SERVER_SEND_OPERS macro to send variable argument notify to operators. Affected files silcd/packet_send.[ch] and silcd/server.h. * Removed UMODE rights checking with UMODE_CHANGE notify. Affected file silcd/packet_receive.c. * Server/router operator now receives notify when network switches to backup router and when it resumes the use of primary router. Affected file silcd/server.c and silcd/server_backup.c. * Fixed the updating of client information after backup resuming protocol is over; update all except local clients to the new primary router. The affected file is silcd/server_util.c. * Added support for closing active connections in rehash that were unconfigured by the user. Supports currently closing server and router connections. Affected file silcd/server.c. * Rewrote some SILC_LOG_DEBUG's in silcd/server_backup.c. Sun Jun 23 17:32:31 EEST 2002 Pekka Riikonen * Don't do SILC_STRING_LANGUAGE encoding if the outbuffer is NULL since seems that on some platforms NULL is allowed and on some it's not. Fallback encoding is used instead. Affected file lib/silcutil/silcstrutil.c. * Fixed statistics updating for incoming server connection which could cause problems when re-connecting. Affected file silcd/server.c. * Preliminary backup router support for standalone router added. Affected files in silcd/. * Mark server connections in backup router disabled before and after backup protocol. Affected file is silcd/server_backup.c. * Added support for reconnecting to remote server connection even if the protocol fails, and if the configuration wants us to keep trying to connect anyway. Server connection is not allowed to backup router if backup router does not have connection to primary router yet. Affected file is silcd/server.c. Sat Jun 22 21:34:59 EEST 2002 Pekka Riikonen * Added silc_client_udpate_server function to update changed server info. Affected file lib/silcclient/idlist.[ch]. * Added check for server entries that are being resolved when notify is received. If being resolved, handle the received notify only after it's resolved so that all notifys are handled in same order as received from the server. Added similar resolver check to channel entries. Every notify that cause resolving of any information that affects channel entry marks the channel entry in waiting state. After whatever resolving is over the waiters are signalled and only then the notifys are handled in the same order as delivered from the server. Affected files are lib/silcclient/idlist.[ch], and client_notify.c. * Fixed KILLED notify handling in normal server. Affected file silcd/packet_receive.c. * Added SILC_IDLIST_STATUS_LOCAL which indicates that entry is locally connected, or was locally connected (but may be detached and connection is not active). Added also SILC_IS_LOCAL for checking this status. Affected files silcd/idlist.h, silcd/packet_receive.c, silcd/server_util.c, silcd/server.c and silcd/server_internal.h. Sat Jun 22 17:06:58 EEST 2002 Pekka Riikonen * Don't send or handle TOPIC_SET if topic is already set and is same as being set. Affected files silcd/command.c and silcd/packet_receive.c. * Fixed CMODE change rights checking to work correctly when removing modes by operator. Affected file is silcd/server_util.c. * Fixed some handling with New Channel packet in router and fixed some CMODE_CHANGE notify handling in server and router. Affected file is silcd/packet_receive.c. * Changed "disconnect" client operation to include the reason of the disconnection and optional disconnection message. Affected file lib/silcclient/silcclient.h. * Made the compilation of lib/contrib/ stuff conditional. Affected files configure.in.pre, lib/contrib/Makefile.am. Sat Jun 22 12:49:21 EEST 2002 Pekka Riikonen * All CMODE_CHANGE and CUMODE_CHANGE notifys are now sent back to the sender of the notify too, to avoid situation where two notifys are in the network at the same time going to oppsite directions. Affected file silcd/packet_receice.c. Fri Jun 21 10:00:32 EEST 2002 Pekka Riikonen * Delete the client from channel even if the cilent->id is NULL. It was possible that client was deleted without removing from channels (theoretically at least). Affected file silcd/server.c and silcd/server_util.c. * Free the client data too when resuming is not successful. Affected file silcd/packet_receive.c. * Merged some code from c0ffee's silc-plugin. Affected files irssi/src/silc/core/silc-channels.c and silc-expandos.c. * Added SILC_PRIMARY_ROUTE and SILC_BROADXAST macros to silcd/server_internal.h. SILC_PRIMARY_ROUTE Returns pointer to the primary router connection, the other one returns TRUE if packet must be broadcasted to network. * All notifys that are destined to primary router (to network) are now automatically sent to backup routers even if the router is standalone (and has backup router). Affected files in silcd/. * Added --without-irssi and --without-silcd configuration options for disabling the compilation of these applications. Affected file configure.in.pre and prepare. Thu Jun 20 13:48:15 EEST 2002 Pekka Riikonen * Implemented SILC_STRING_BMP and SILC_STRING_UNIVERSAL for UTF-8 encoding and decoding. Added also new encodings SILC_STRING_BMP_LSB and SILC_STRING_UNIVERSAL_LSB. Added also SILC_STRING_LANGUAGE which is language and charset specific encoder and decoer for those platforms that support iconv(). It can convert the UTF-8 to and from the locale specific character set. Affected file lib/silcutil/silcstrutil.[ch]. * Added macro SILC_NOT_IMPLEMENTED to lib/silcutil/silclog.h. * Added function silc_get_command_name to the file lib/silcutil/silcutil.[ch]. * Improved the server debug output a bit. Affected files are in silcd/. Wed Jun 19 17:46:31 EEST 2002 Pekka Riikonen * Save the channel passphrase when received succesful JOIN command reply from router, on normal server. Otherwise joinig +a channels from normal server is not possible. Affected file silcd/command.c. * Fixed a bug in TOPIC_SET notify handling. The notifier may be other than client too, like server or channel. It expected it to always be only client and ignored the notify. Affected file silcd/packet_recieve.c. * Removed some (unnecessary) debug printing from lib/silccore/silcid.c and lib/silccore/silcargument.c. * Do not force CMODE_CHANGE when server is announcing new channel. Router announces stuff only after server reannounces channel after CHANNEL_CHANGE notify. These fixes optimizes the announcing procedure, and perhaps fixes some problems too. Affected file silcd/packet_receive.c. * Fixed SERVER_SIGNOFF sending to local clients. It was totally broken and sent the notify to all local clients, instead of only to those that was on same channel as the signing off clients. Affected file silcd/server_util.c. * Added -D option to server. It can be used to give debug level. The levels are from 0 - 99, and are predefined for smooth server debugging. (see silcd.c for the predefined levels). Affected file silcd/server.c. Wed Jun 19 16:01:51 EEST 2002 Pekka Riikonen * Fixed a bug in Irssi SILC client to close the connection properly when disconnecting from server. Affected file irssi/src/silc/core/client_ops.c. Tue Jun 18 17:14:52 EEST 2002 Pekka Riikonen * When authenticating as founder during JOIN command, check that the one authenticating becomes the only founder on the channel. Affected file silcd/command.c. * Better checking for founder mode setting when CUMODE_CHANGE notify is received. Affected file silcd/packet_receive.c. * Close all connections when shutting down the server by sending DISCONNECT packet. Close all listeners too when shutting down the server. Affected file silcd/server.c. * Handle DISCONNECT packet correctly in client library by calling the "disconnect" client operation. Affected file lib/silcclient/client.c. * Handle local errors correctly during resuming. Affected file lib/silcclient/client.c. Tue Jun 18 10:26:27 EEST 2002 Pekka Riikonen * The log file is not dupped internally anymore in lib/silcutil/silclog.c. Fixed memory leaks too. * The scheduler now dispatches all pending timeout tasks when it is uninitialized with silc_schedule_uninit. Affected file lib/silcutil/silcschedule.c. Mon Jun 17 21:30:55 EEST 2002 Pekka Riikonen * Added --enable-stack-trace option to configure. Added memory allocation stack trace support. Added files lib/silcutil/stacktrace.[ch]. Affected files are lib/silcutil/silcmemory.[ch]. * Fixed memory leaks from libraries and server. Affected files around the tree. * Reverted back a fix made to CUMODE which broke it. Affected file silcd/command.c. Sun Jun 16 11:49:45 EEST 2002 Pekka Riikonen * Added SILC_MESSAGE_FLAG_UTF8 to the protocol specs and the core library, and implemented it. All textual messages SHOULD use this flag and the message MUST be UTF-8 encoded. All text messages sent by Irssi SILC client are now UTF-8 encoded (regardless whether the terminal supports UTF-8 or not). Affected files are lib/silccore/silcchannel.h, irssi/src/silc/core/silc-servers.c, silc-channels.c and client_ops.c. Sat Jun 15 18:23:39 EEST 2002 Pekka Riikonen * Added lots of new statistics updating that was missing from the server and router code. Affected files in silcd/. * Sending SIGUSR1 signal to server now dumps the current server statistics into /tmp directory. Affected file is silcd/silcd.c. * ROBODoc documented the lib/silccrypt/silchash.h. Improved the SILC Hash Interface also. Added new functions silc_hash_get_name, silc_hash_init, silc_hash_update and silc_hash_final. Affected file lib/silccrypt/silchash.c. Sat Jun 15 12:09:14 EEST 2002 Pekka Riikonen * Added some better info printing for client during connecting. Affected file silcd/server_util.c. * Implemented the SILC_CHANNEL_UMODE_QUIET mode that can be used to silence a user on a channel. Affected files are lib/silcclient/client_channel.c, irssi/src/silc/core/client_ops.c, irssi/src/fe-common/silc/module-formats.[ch], silcd/command.c and silcd/packet_receive.c. * Fixed a fatal bug in handling of malformed command payload. Affected file silcd/command.c. * Fixed a double free when announcing channel users to router. Affected file silcd/server.c. * After successful authentication to channel founder mode, check that there isn't anyone else with founder mode on the channel. The one that authenticated will become founder and anyone else is demoted. Affected file silcd/command.c. * Added error printing of any error that has occurred during any command in client library. Affected file is irssi/src/silc/core/client_ops.c. * Removed some error printing from the client library and left it for the application to worry (from the error status it receives in 'command' client operation. Affected file is lib/silcclient/command.c. Fri Jun 14 22:59:02 EEST 2002 Pekka Riikonen * Added new status types KEY_AGREEMENT_ALREADY_STARTED and KEY_AGREEMENT_SELF_DENIED to lib/silcclient/silcclient.h. Starting key agreement with itself is denied. Affected file is lib/silcclient/client_keyagr.c. * Fixed some error checkings from the SFTP library which caused misbehaviour. Affected files are lib/silcsftp/sftp_client.c and lib/silcsftp/sftp_util.c. * Added new "debug" and "debug_string" settings to Irssi SILC client which can be used to print runtime debugging on the Irssi's screen. Available when compiled with --enable-debug option. Affected file irssi/src/silc/core/silc-core.c. Tue Jun 11 16:36:02 CEST 2002 Johnny Mnemonic * Fixed a missing variadic parameter in a function call that caused server crash when a non-allowed connection arrived. Reported by Richard Becker. Affected file silcd/server.c. Mon Jun 10 16:29:42 EEST 2002 Pekka Riikonen * Added WATCH list sending to backup routers from router. The WATCH command is sent by the router to the backup router. Affected file silcd/command.c. * Mark the backup_router flag for RouterConnection entry if the backup router stuff is defined in the config file. Affected file silcd/serverconfig.c. * Fixed some backup data sending around the code to work better if the router is standalone router. Not all places were fixed. Affected file silcd/packet_receive.c, silcd/packet_send.c, silcd/server.c. * Fixed the router connecting when connecting to multiple routers. It ignored every other router except the first one. Affected file silcd/server.c. Mon Jun 10 09:28:21 CEST 2002 Pekka Riikonen * Made the private key generation after expiration optional. If not created after expiration the old key will re-expire at a later time (and thus key pair is not necessary to change). Affected file irssi/src/silc/core/clientutil.c. Sun Jun 9 18:58:25 EEST 2002 Pekka Riikonen * The length arguments in bind() and connect() were wrong and fixed now to used SIZEOF_SOCKADDR in the lib/silcutil/unix/silcunixutil.c. Tue Jun 4 18:36:05 EEST 2002 Pekka Riikonen * Fixed detach timeout handling to use Client ID and not the actual client entry which may be freed in the callback. Affected file silcd/command.c. Thu May 30 15:53:45 CEST 2002 Pekka Riikonen * Merged c0ffee's multiple interface support patch. Affected files in silcd/. Wed May 29 18:08:15 EEST 2002 Pekka Riikonen * Cleanup keys properly. Affected file is irssi/src/silc/core/clientutil.c. Tue May 28 20:11:41 EEST 2002 Pekka Riikonen * Display the user mode on the status bar. Affected file irssi/src/silc/core/silc-expandos.c. Tue May 28 13:56:26 CEST 2002 Pekka Riikonen * If private message key is not set, but the flag is set in the packet, ignore the packet since it cannot be decrypted. Affected file lib/silcclient/client_prvmsg.c. Thu May 23 12:00:14 CEST 2002 Pekka Riikonen * When resuming client, remove the old client entry from the watcher list too. Affected file silcd/packet_receive.c. * Do not allow normal server to force founder mode away from router if the founder mode is already set. Affected file silcd/packet_receive.c. * Remove the client entry with watch notify types with short timeout, and not directly, so that other notifys can be retrieved too. Affected file lib/silcclient/client_notify.c. * Display notification about data messages that cannot be displayed. Affected files irssi/src/silc/core/client_ops.c, irssi/src/fe-common/silc/module-formats.[ch]. Sun May 19 18:59:00 EEST 2002 Pekka Riikonen * Fixed the CHANNEL_CHANGE notify handling in client libary to not use freed memory. Affected file is lib/silcclient/client_notify.c. * Fixed CUMODE_CHANGE notify handling in server. Affected file silcd/packet_receive.c. * Fixed USERS command to support empty channels. Affected file silcd/command.c. Sat May 18 11:35:19 EEST 2002 Pekka Riikonen * Allow multiple identical pending commands to be registered in client library. Affected file is lib/silcclient/command.c. * Call the completion for resolving client information only after all resolvers has finished. This fixes a crash in the client. Added support for checking when the resolvers are finished. Affected file is lib/silcclient/idlist.c. * Wait by default 3 seconds before reconnecting to the server after being disconnected. Makes the /detach command a bit more usable. Fri May 17 17:23:45 EEST 2002 Pekka Riikonen * Check the watcher list before sending signoff notifys when closing client connection. Affected file is silcd/server.c. * Added better CMODE command rights checking. Affected file silcd/server_util.c. Fri May 17 08:33:41 CEST 2002 Pekka Riikonen * Fixed watcher list checking during server signoff. It crashed the server. Affected file silcd/server_util.c. * The JOIN command reply returns now the founder's public key. Affected file is silcd/command.c. * Announce the channel mode, and the mode properties with CMODE_CHANGE notify. Affected file silcd/server.c. * Mark new channels by default disabled, untill at least one user joins the channel. Affected file is silcd/packet_receive.c. Thu May 16 13:05:13 CEST 2002 Pekka Riikonen * The nickname argument to watch notify can be optional. Fixes a crash in server. Affected file silcd/packet_send.c. * Remove the client entry from cache if the WATCH notify type is KILLED, SERVER_SIGNOFF or SIGNOFF. Affected file is lib/silcclient/client_notify.c. * Check the watcher list before and after changing nickname when the NICK_CHANGE notify is received. Affected file is silcd/idlist.c. * Fixed a crash in OPER and SILCOPER command sending. Empty passphrase caused the crash. Affected file is lib/silcclient/command.c. Wed May 15 19:01:42 EEST 2002 Pekka Riikonen * Merged with Irssi CVS for Irssi SILC client. Tue May 14 19:37:48 EEST 2002 Pekka Riikonen * Completed the protocol specifications. Tue May 7 20:41:58 EEST 2002 Pekka Riikonen * Merged with Irssi CVS for Irssi SILC client. Tue May 7 11:07:16 EEST 2002 Pekka Riikonen * Added the founder's public key delivery to the CUMODE_CHANGE notify type as well. Updated the protocol specs and the code. Affected files are silcd/packet_send.[ch], silcd/packet_receive.c and silcd/command.c. Mon May 6 19:46:12 EEST 2002 Pekka Riikonen * Added silc_pkcs_public_key_copy function into the lib/silccrypt/silcpkcs.[ch]. * Remove the `iv' from the SilcChannelEntry since we can live without it. Affected files are silcd/idlist.h and silcd/packet_receive.c. * Added support for sending the founder's public key in the CMODE_CHANGE notify packet in the server. Affected files are silcd/packet_send.[ch], silcd/packet_receive.c, silcd/command.c and silcd/server.c. * Changed the FOUNDER_AUTH authentication to use only public key authentication as defined by new protocol specs. Passphrase authentication with that mode cannot be used anymore. It is now possible to reclaim founder mode from any server in the network. Affected files are silcd/command.c, silcd/idlist.h and silcd/command_reply.c. * Added permanent channels support by making the channel permanent when FOUNDER_AUTH mode is set on the channel. The channel will not be destroyed even if channel is empty when that mode is set. Protocol TODO #17. Affected files are silcd/server.[ch], server_util.[ch], silcd/command.c, silcd/packet_receive.c and lib/silcclient/command.c. Fri May 3 18:36:51 EEST 2002 Pekka Riikonen * Added reference counter to the command reply context in the client library. Affected files are lib/silcclient/command_reply.[ch]. Fri May 3 11:37:10 EEST 2002 Pekka Riikonen * Fixed rekey protocol with PFS in the client library. Affected file is lib/silcclient/protocol.c. * Added support for list of errors in client library command reply handling. Affected file is lib/silcclient/command_reply.c. * Defined that the WHOIS and IDENTIFY commands can send list of errors. Updated the protocol specs. Protocol TODO #2. * Added support for sending list of errors to WHOIS and IDENTIFY commands in server. Added support for receiving list of errors in server. Affected files are silcd/command.c and silcd/command_reply.c. * Fixed client info resolving on LEAVE command in client library to not crash. Affected file is lib/silcclient/client_notify.c. Thu May 2 08:45:11 CEST 2002 Pekka Riikonen * Defined that the NICK command replies with thew changed nickname too, to make the nickname changing simpler at the client's end. Updated protocol specs and the code in client and server. Affected files are silcd/command.c, lib/silcclient/command_reply.c and lib/silcclient/command.c. Mon Apr 29 20:10:42 EEST 2002 Pekka Riikonen * Added `Compressed' packet flag to indicate that the packet payload is compressed by the sender. Updated the protocol specs and the core library. The compression still is not implemented in the sources. Affected file is lib/silccore/silcpacket.h. Mon Apr 29 09:48:12 CEST 2002 Pekka Riikonen * Remove pending command callbacks also if the connection to the server is destroyed. Affected file is lib/silcclient/client.c. Sat Apr 27 19:52:32 EEST 2002 Pekka Riikonen * Added new QUIET channel user mode that can be used to quiet a user in a channel. Updated the protocol specs but it wasn't implemented yet. Protocol TODO #27. Affected file is lib/silccore/silcmode.h. Mon Apr 22 09:09:44 CEST 2002 Pekka Riikonen * Added BLOCK_INVITE user mode to be able to block incoming invite notifications. Protoocol TODO #26. Affected files are lib/silccore/silcmode.h, lib/silcclient/command.c and silcd/command.c. * SILC Publickey fields MUST be UTF-8 encoded now. Updated the protocol specs and the code. Affected file is lib/silccrypt/silcpkcs.c. Sun Apr 21 19:44:38 EEST 2002 Pekka Riikonen * Disconnect Payload includes now the status type. Updated the protocol specs and the code. Protocol TODO #25. Affected files are silcd/server.c, lib/silcclient/client.c. * Added NOT_AUTHENTICATED, BAD_SERVER_ID, INCOMPLETE_INFORMATION, KEY_EXCHANGE_FAILED and BAD_VERSION error status types. Moved the silc_client_command_status_messages table to the lib/silcutil/silcutil.c and added new funtion silc_get_status_message, which deprecates function silc_client_status_message. Affected files are lib/silccore/silcstatus.h, lib/silcclient/command_reply.[ch], lib/silcutil/silcutil.[ch]. Fri Apr 19 17:35:15 EEST 2002 Pekka Riikonen * Defined that the nickname hash in Client ID MUST be from lowercase nickname. This effectively changes nicknames in SILC to case-insensitive. Updated the protocol specs and the code. Affected files are lib/silcutil/silcutil.[ch], silcd/serverid.c, and silcd/idlist.c. * Added new channel user modes BLOCK_MESSAGES_USERS and BLOCK_MESSAGES_ROBOTS. Updated the protocol specs and the code. Affected files are lib/silccore/silcmode.h, lib/silcclient/command.c, and silcd/packet_send.c. * Added new error status ERR_RESOURCE_LIMIT. Updated protocol specs and code. Affected file lib/silccore/silcstatus.h. * Added support for watch list. It is possible to add nicknames to be watched, and when they come to network, leave network or user mode changes the watcher will be notified of this change. Added SILC_COMMAND_WATCH command, added new notify type SILC_NOTIFY_TYPE_WATCH to deliver the watch notifications. Updated the protocol specs and implemented this to library, client and server. Protocol TODO #21. Affected files are lib/silccore/silccomand.h, lib/silccore/silcnotify.h, lib/silcclient/command[_reply].[ch], silcd/command[_reply].[ch], lib/silcclient/client_notify.c, silcd/packet_send.[ch], silcd/packet_receive.c, and irssi/src/silc/core/client_ops.c. * Added user mode SILC_UMODE_REJECT_WATCHING to reject somebody watching you. Updated the protocol specs and the code. Affected files are lib/silccore/silcmode.h, and lib/silcclient/command.c. Fri Apr 19 09:02:20 CEST 2002 Pekka Riikonen * Added service support to SILC protocol. Added new command SILC_COMMAND_SERVICE. Updated the protocol specs and the core library. Services are not implemented in server or client for now. Protocol TODO #20. Affected files are lib/silccore/silcstatus.h, lib/silccore/silccommand.h. * Added SilcStatus argument to `command' client operation to return the error status when command sending fails locally. Changed all command in client library to return correct command status. Affected files are lib/silcclient/command.c, lib/silcclient/silcclient.h and irssi/src/silc/core/client_ops.c. Thu Apr 18 14:09:51 CEST 2002 Pekka Riikonen * Added silc_mime_parse function to parse MIME headers. Affected files are lib/silcutil/silcstruti.[ch]. * Added MIME header parsing in Irssi SILC Client. It displays all textual MIME objects, others it ignores. Affected file is irssi/src/silc/core/clien_ops.c. Wed Apr 17 22:07:59 CEST 2002 Johnny Mnemonic * Fixed a bug in the pid writing function, which couldn't be written in a root-owned directory. Tue Apr 16 09:34:40 EEST 2002 Pekka Riikonen * Defined that channel message to unknown Channel ID must cause SILC_NOTIFY_TYPE_ERROR notify message to the sender. Updated the protocol specs and the code in server. The affected file is silcd/packet_receive.c. Mon Apr 15 19:57:57 EEST 2002 Pekka Riikonen * Added new notify type SILC_NOTIFY_TYPE_ERROR and specified that it is used to send error notifys if error occurs during some SILC packet processing, except commands. The error types are same as for command reply types. Defined that if private message is sent to unknown Client ID the error is sent in SILC_NOTIFY_TYPE_ERROR instead of command reply. Updated the protocol specs and code. Affected files are lib/silccore/silcnotify.h, added lib/silccore/silcstatus.h, lib/silcclient/client_notify.c, silcd/packet_receive.c, and irssi/src/silc/core/client_ops.c. Renamed the SilcCommandStatus to SilcStatus. * Defined the use of extra WHOIS attributes in WHOIS command. The (defined in a separate document) can be used to request additional information about user not returned by standard WHOIS command. Defined that server can send WHOIS command directly to client. Client provides the requested attributes to the server. Updated the protocol specs. Protocol TODO #4. Implementation is not done yet (Protocol TODO #24). * Renamed function silc_client_command_status_message to silc_client_status_message. Affected files are lib/silcclient/command_reply.[ch]. Sun Apr 14 21:13:42 EEST 2002 Pekka Riikonen * Changed the WHOIS, IDENTIFY and WHOWAS count arguments to 32 bit integers. Updated the protcol specs and the code. Affected files are silcd/command.c and lib/silcclient/command.c. Sun Apr 14 19:49:02 CEST 2002 Johnny Mnemonic * Fixed a bug in library where sending a bogus authentication payload would lead to a crash. Affected file is lib/silccore/silcauth.c. Sat Apr 13 13:09:24 EEST 2002 Pekka Riikonen * Added detach_disabled and detach_timeout server config options to the server. Affected files silcd/serverconfig.[ch], silcd/command.c and silcd/packet_receive.c. Fri Apr 12 20:09:08 EEST 2002 Pekka Riikonen * 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. Added support for adding multiple pending commands for one command idenfier. Affected files lib/silcclient/command.[ch], lib/silcclient/command_reply.[ch], lib/silcclient/idlist.h. Fri Apr 12 10:17:51 EEST 2002 Pekka Riikonen * Defined that server receives WHOIS command reply for private and secret channels too. Updated protocol specs and the code in server. Affected file silcd/command.c. * Defined argument to WHOIS command reply for returning user modes on the channels. The channel list now doesn't include the user mode anymore but the actual channel mode. Updated protocol specs and the code in client and server. Affected files are silcd/command_reply.c, silcd/command.c, silcd/server.c, irssi/src/silc/core/client_ops.c, and lib/silcclient/command_reply.c. * Save the channels list in WHOIS command reply in normal server so that WHOIS always shows joined channels also in normal server and not just on router. Affected file is silcd/command_reply.c. Thu Apr 11 22:29:33 EEST 2002 Pekka Riikonen * Defined that server receives USERS command reply for private and secret channels too. Updated protocol specs and the code in server. Affected file silcd/command.c. Thu Apr 11 16:32:08 EEST 2002 Pekka Riikonen * Changed the UMODE's mode mask argument to be optional. If not provided then the command merely returns the current mode mask to the client. Updated protocol specs and the server. Affected file is silcd/command.c. * Added SILC session detachment/resuming support. It is possible to detach by closing the network connection and then re-connect and resume to the old client session. Added DETACHED user mode that server will set for detached client. Added new packet RESUME_CLIENT which is used to perform the resuming process. Added DETACH command. Updated the protocol specs, core library, client and server. Protocol TODO #22. Very many affected files around the tree. Wed Apr 10 16:32:01 EEST 2002 Pekka Riikonen * Changed the CMODE's mode mask argument to be optional. If not provided then the command merely returns the current mode mask to the client. Updated protocol specs and the server. Affected file is silcd/command.c. * Changed the Killer's Client ID in KILLED notify to be just any ID payload since router server is allowed to kill as well. Updated protocol specs, client libary and server. Affected files are lib/silcclient/client_notify.c, silcd/packet_receive.c, and irssi/src/silc/core/client_ops.c. Tue Apr 9 17:15:42 EEST 2002 Pekka Riikonen * Added new user modes ANONYMOUS for special anonymous servers that may set the mode for client, and BLOCK_PRIVMSG which client may set to block incoming private messages unless the Private Message Key flag is set (using private keys to protect private messages). Updated protocol specs and code in client and server and core library. Protocol TODO #23. Affected files are lib/silccore/silcmode.h, silcd/server.[ch], irssi/src/silc/core/client_ops.c, silcd/packet_receive.c, irssi/docs/help/in/umode.in, lib/silcclient/command.c. * Added new channel user mode BLOCK_MESSAGES which the client may set to itself to tell server not send channel messages. Other packets such as channel key packets are still sent. Protocol TODO #23. Updated the protocol specs, client and server. Affected files are lib/silccore/silcmode.h, irssi/docs/help/in/cumode.in, lib/silcclient/command.c, lib/silcutil/silcutil.c, silcd/command.c, and silcd/packet_send.c. Mon Apr 8 23:57:32 EEST 2002 Pekka Riikonen * Redefined the Status Payload to include now two 8 bit fields, instead of one 16 bit field. This now makes it possible to send list of errors. Updated the protocol specs and the code in core library, client library and server. Protocol TODO #1. Affected files are lib/silccore/silccommand.[ch], lib/silcclient/command_reply.[ch], silcd/command.c, silcd/command_reply.c and silcd/packet_receive.[ch]. Mon Apr 8 19:57:40 CEST 2002 Johnny Mnemonic * Added config parse status SILC_CONFIG_EPRINTLINE, this status must be handled by the application and should tell the application that an error message was already printed, and it should print the config coords (line, filename, ...). Affected files are silcd/serverconfig.c, lib/silcutil/silcconfig.[ch]. * Added local macro SILC_SERVER_CONFIG_ALLOCTMP to make the server config parsing code more readable. Fixed a bug in the fetch_logging() config callback. Affected files is silcd/serverconfig.c. * Drop root privileges when started in foreground. Don't drop them if debugging also. Affected file is silcd/silcd.c. Mon Apr 8 17:00:41 EEST 2002 Pekka Riikonen * Added more IM-like features by introducing new user modes for setting various presence information. Added new modes: INDISPOSED, BUSY, PAGE, HYPER and ROBOT. Updated protocol specs and code. Protocol TODO #19. Affected files are lib/silccore/silcmode.h, irssi/src/silc/core/client_ops.c, irssi/docs/help/in/umode.in and lib/silcclient/command.c. Sun Apr 7 17:07:59 EEST 2002 Pekka Riikonen * Added STATS command to the protocol after all, to return various statistical information about the network. It can be used by clients to retrieve statistical information, and servers may use it to to fetch cell and network wide statistics from router. Updated the protocol specs and implemented it to the server. Protocol TODO #16. Affected files are lib/silccore/silccommand, silcd/command.[ch], silcd/command_reply.[ch]. Sat Apr 6 17:08:58 EEST 2002 Pekka Riikonen * The LIST command reply in client libary now adds new channel entry if the returned channel doesn't exist yet in cache, and returns the channel entry to the application in the command_reply client operation. Affected file is lib/silcclient/command_reply.c. * Changed the channel message payload's MAC generation to include the IV in the MAC as well. This way all relevant parts of the channel message payload are authenticated also with the channel message MAC (and not only by packet MAC). Causes incompatibility with 1.0 protocol. Protocol TODO #7. Affected file is lib/silccore/silcchannel.c. * Fixed the SKE to save the remote version, since the silc_ske_parse_version mistakenly checked wrong version, after it replaced the start payload. Affected files are lib/silcske/silcske.[ch]. Fri Apr 5 16:03:03 EEST 2002 Pekka Riikonen * Splitted lib/silcutil/silcutil.h into silcstrutil.h for string utility functions. Added there also new functions silc_utf8_[encode/decode/valid] for UTF-8 string encoding. Affected files lib/silcutil/silcstrutil.[ch]. * Renamed silc_*_pem functions to silc_pem_* functions. Affected files are lib/silcutil/silcstrutil.[ch]. * Defined that the security property fields in SKE SHOULD be UTF-8 encoded, defined that version string MUST be US-ASCII encoded, defined that passphrases sent in connection authentication protocol MUST be UTF-8 encoded. Implemented these to the client and server. Defined also that other passphrases sent in the protocol MUST be UTF-8 encoded. Affected files are lib/silcske/silcske.c, lib/silcclient/protocol.c, silcd/protocol.c, silcd/serverconfig.c, and lib/silccore/silcauth.c. * Changed the silc_client_close_connection interface to not need the SilcSocketConnection which should not be visible to application. Affected files are lib/silcclient/client.c and lib/silcclient/silcclient.h. * Rewrote the text for Private Message Key Payload in the protocol specification. Protocol TODO #11. Wed Apr 3 16:24:51 EEST 2002 Pekka Riikonen * Upgraded the protocol version to 1.1, updated protocol specs and software. * Added the nickname as new argument to NICK_CHANGE notify and added it to protocol specs and implemented it to client and server. Protocol TODO #3. Affected files are silcd/idlist.[ch], silcd/command.c, silcd/packet_receive.c, packet_send.[ch], and lib/silcclient/client_notify.c. * Added the killer's client ID to the KILLED notify and added it to protocol specs and implemented it to client and server. Protocol TODO #13. Affected files are silcd/command.c, silcd/packet_receive.c, packet_send.[ch], lib/silcclient/client_notify.c, irssi/src/silc/core/client_ops.c. The killer's client entry is now returned to application in the `notify' client operation. * Fixed the Max Argument fields that had too large value set in the protocol specs. Protocol TODO #14. * Added the LEAVE command reply to return the ID of parted channel. Updated protocol specs and implemented it to the client and server. Protocol TODO #15. Affected files are silcd/command.c, lib/silcclient/command_reply.c. The channel entry is now returned to application in the `command_reply' client operation. * Rewrote the version SKE version checking in client libary and in server to use the silc_parse_version_string. Affected files are lib/silcclient/protocol.c, silcd/protocol.c. * Added SILC_STATUS_ERR_NO_CHANNEL_FOPRIV error status to few commands that was missing it, and updated protocol specs and the server implementation. Protocol TODO #10. The affected file is silcd/command.c. * Defined new message flags SILC_MESSAGE_FLAG_REPLY to be generic reply to a generic request (REQUEST flag), and SILC_MESSAGE_FLAG_DATA to send any kind of data in a generic way. A draft-riikonen-silc-flags-payloads-00.txt is written to define the payload for DATA flag. Added the flags to the implementation. Protocol TODO #9. Affected file is lib/silccore/silcchannel.h. Changed the client library to return the message length to application as well in the channel_message and private_message client operations. Affected files are lib/silcclient/client_prvmsg, lib/silcclient/client_channel.c, lib/silcclient/silcclient.h, irssi/src/silc/core/client_ops.c, and lib/silcclient/client_ops_example.c. * Added two new channel modes: SILC_CMODE_SILENCE_USERS and SILC_CMODE_SILENCE_OPERS which can be used to moderate the channel. Updated protocol specs and impelemented this to client and server. Protocol TODO #6. Affected files are silcd/packet_receive.c, server_util.c, lib/silcclient/command.c, lib/silcclient/client_channel.c, lib/silccore/silcmode.h. Added new options m and M to CMODE command in Irssi SILC client to set these modes. * Deprecated all administrative commands from SILC protocol since they are highly implementation specific commands. Updated protocol specs. Moved the old commands in implementations to private range of command types. Affected files are silcd/command.c, lib/silcclient/command.c and lib/silcclient/command_reply.c. Protocol TODO #8. * Fixed a bug in server where sending unknown command crashes the server. Affected file silcd/command.c. Wed Apr 3 09:57:47 CEST 2002 Pekka Riikonen * Added SILC_PROTOCOLVERSION macro to check protocol version of a socket connection. The affected file is lib/silcutil/silcsockconn.h. * Added better error logging in rekey protocol. Affected file silcd/protocol.c. * Do not check public key types in SKE during rekey. Affected file lib/silcske/payload.c. * Fixed the rekey protocol with PFS, which was totally broken. Affected file silcd/protocol.c. Tue Apr 2 14:55:06 CEST 2002 Pekka Riikonen * Some client implementations quit network by doing first LEAVE and then immediately SIGNOFF (like Bombyx). We now do check after a short time after LEAVE notify and check whether the client is still valid after LEAVE, and if not we remove it from cache. Affected file is lib/silcclient/client_notify.c. Tue Apr 2 13:39:04 CEST 2002 Johnny Mnemonic * Merged version 1.1.4 of zlib. Even if it not currently in use, it's good not to have security holes here. * Fixed a negative refcount situtuation for the config context. Affected file is silcd/serverconfig.c. Mon Apr 1 20:15:10 CEST 2002 Johnny Mnemonic * ROBOdoc documented lib/silcutil/silcutil.h. Sat Mar 30 21:06:45 EET 2002 Pekka Riikonen * Optimized even more the SilcPacketContext structure. Now totally saved 16 bytes of memory per context after optimization. Affected files are lib/silccore/silcpacket.[ch]. * Made strict checks for valid SILC IDs. Affected file is lib/silccore/silcid.c. Sat Mar 30 18:15:55 EET 2002 Pekka Riikonen * Changed the object argument for silc_cipher_register, silc_hash_register, silc_hmac_register and silc_pkcs_register to const. Affected files are lib/silccrypt/silccipher.[ch], silchash.[ch], silchmac.[ch] and silcpkcs.[ch]. * Changed the silc_get_username and silc_get_real_name to never fail. Affected file lib/silcutil/unix/silcunixutil.c. * Fixed the Irssi SILC Client to use the silc_get_username and silc_get_real_name insted of glib routines since the glib routines only corrupt stack. Fixes the Irssi SILC to work in Cygwin. Affected file irssi/src/silc/core/silc-core.c. * Fixed the Irssi to not use g_get_home_dir since it crashes or returns garbage on cygwin and corrupts stack. Added function get_home_dir to Irssi routines. Affected files are irssi/src/core/misc.[ch] and irssi/src/core/core.c. Fri Mar 29 21:55:41 EET 2002 Pekka Riikonen * Made some structure optimizations. SFTP memory FS MemFSEntry entry structure. Optimized SilcTask structure. Optimized SilcPacketContext structure. Affected files lib/silcsftp/sftp_fs_memory.c, lib/silcutil/silcschedule.c, lib/silccore/silcpacket.h. Fri Mar 29 10:41:07 EET 2002 Pekka Riikonen * And yet again reverted back the config thing since Johnny screwed it up. Affected file silcd/serverconfig.[ch], server.c, and silcd.c. * Fixed memory leaks from config object. Affected files are silcd/serverconfig.[ch]. * Added support for adding new connections to the server in rehash. After rehash they take effect. Added support for changing the maximum allowed connections in rehash. The number can grow but going smaller is not supported. Added function silc_server_num_sockets_by_remote to the silcd/server_util.[ch]. Affected files are silcd/server.c, and silcd/serverconfig.[ch]. Fri Mar 29 03:26:12 CET 2002 Johnny Mnemonic * Added preliminary checking during config parsing for a valid public/private key and removed further checks in the code. Affected files are silcd/serverconfig.[ch], server.c. * Moved functions silc_server_drop() and silc_server_daemonise() from server.c to silcd.c since they are stricly related to the application activity. * Reverted a small part of the automatic ref/unref since it caused a double unref in some situations. Affected files are silcd/silcd.[ch], server.c, serverconfig.c. * Added some .cvsignore files in the lib directory. Thu Mar 28 22:51:15 EET 2002 Pekka Riikonen * Fixed silc_net_gethostbyaddr to correctly resolve by address. Affected file lib/silcutil/silcnet.c. * Fixed the notify relaying to client. The HMAC to be used with relayed packets ws wrong and caused decryption failure at the client end. Affected file is silcd/packet_receive.c. Thu Mar 28 19:02:05 EET 2002 Pekka Riikonen * Created new branch silc_protocol_1_0_branch. * Reverted the silc_log_quick change in lib/silcutil/silclog.c. * Changed the silc_server_config_* routines to be SilcServer independent. They are now officially application specific code and not part of generic server implementation. Affected files are silcd/serverconfig.[ch], silcd/silcd.c, silcd/server.c. Thu Mar 28 17:01:43 EET 2002 Pekka Riikonen * Added automatic referencing of config context in the silc_server_config_alloc, and automatic unreferencing in the silc_server_config_destroy. Affected files are silcd/serverconfig.[ch], silcd/silcd.c. * Fixed the silc_log_quick handling in the logging routines. It didn't log quickly when it was TRUE. Affected file is lib/silcutil/silclog.c. Also the flush delay was set even if it was 0 in config file. Affected file is silcd/serverconfig.c. * Added support for changing key pair of the server in rehash. Affected file silcd/server.c. Thu Mar 28 12:17:21 CET 2002 Pekka Riikonen * Fixed the TOPIC_SET notify to not cras. It changed the topic too early, before getting the channel entry. Affected file is silcd/packet_receive.c. Thu Mar 28 09:58:16 CET 2002 Johnny Mnemonic * Added functions silc_server_config_[ref/unref], these are used to prevent that the config object is destroyed. No longer directly affect global variables silc_log_quick and silc_log_delay, they are first cached inside the config object and then applied with silc_server_config_setlogfiles(). silc_server_config_set_defaults() is now internal to serverconfig.c, there are no reasons to show this internal stuff to the server. Affected files are silcd/serverconfig.[ch]. * Added macro SILC_SERVER_LOG_STDERR(), this should replace most fprintf's to stderr, since some code may be executed again after the server went into the background. Affected files are silcd/server.[ch]. * Added rehash support. Added function silc_server_rehash() that will perform all the basic tasks of the rehashing procedure. * Added command line option `-x, --hexdump'. This will enable the SILC_LOG_HEXDUMP calls that are no longer enabled with `--debug'. The option `--hexdump' implies `--debug'. * Fixed a bad bug in the logging APIs (silcutil library) where the application would crash after calling silc_log_reset_all(). Wed Mar 27 19:43:16 EET 2002 Pekka Riikonen * Fixed the KICKED notify handling in client library to correctly remove the channel and all entries from the channel when I was kicked. This bug crashed the client. Fixed yet another but in KICKED notify handling to remove the kicked client correctly from the channel. Affected file is lib/silcclient/client_notify.c. * Fixed a minor bug in looking up correct client entry in KICKED notify in server. Affected file is silcd/packet_receive.c. * Fixed the lib/silcmath/Makefile.am to include the MPI and GMP sources correctly to distribution. Fixes --with-gmp option. * Removed the manual rehashing from ID Cache, and changed it to use the SILC Hash Table's auto rehash feature. Affected file is lib/silccore/silcidcache.c. Wed Mar 27 00:07:11 EET 2002 Pekka Riikonen * Fixed a bug in the silc_client_nickname_format function that handles the multiple same nickname formatting. Two clients with same nickname caused problems after the first one left and rejoined. It didn't format the nickname correctly. Affected file is lib/silcclient/idlist.c. Tue Mar 26 19:33:03 CET 2002 Pekka Riikonen * Don't change the topic if olod topic is same as new one. Affected file is silcd/packet_receive.c. Mon Mar 25 21:11:35 EET 2002 Pekka Riikonen * Added cross-reference support to the SILC Documentation generator. All types across all HTML files are now cross- referenced. Affected files util/robodoc/generator.c and scripts/silcdoc/silcdoc. * Added file lib/silcutil/silctypes.h to include all the arithmetic type definitions and some macros. Removed includes/bitmove.h and moved macros to silctypes.h. Mon Mar 25 17:19:46 EET 2002 Pekka Riikonen * Merged bugfixes for Irssi SILC client from irssi.org CVS. Sun Mar 24 11:21:04 EET 2002 Pekka Riikonen * Added `type' argument to silc_id_payload_parse_id function which now returns the type of the ID to the sent pointer. Affected file is lib/silccore/silcid.[ch]. * Added check for CMODE_CHANGE notify type that mode change is allowed by the sender. Affected file silcd/packet_receive.c. * Added check for CUMODE_CHANGE notify type that mode change is allowed by the sender. Affected file silcd/packet_receive.c. Added the ID type as CUMODE_CHANGE notify type as argument to the `notify' client operation. Affected files are lib/silcclient/client_notify.c, irssi/src/silc/core/client_ops.c. * Added function silc_client_add_server to the client library. Added support for resolving also channel and server info when received unknown entity in notify packet. Affected files are lib/silcclient/idlist.[ch], lib/silcclient/client_notify.c. * Added function silc_command_get_status to return the command status from the command reply's argument payload. Affected files are lib/silccore/silccommand.[ch]. * Added check for KICKED notify type that the kicking is allowed by the client. Affected file silcd/packet_receive.c. * Created function silc_get_input which can be used to get input (echo on or off) from user on command line. Affected files are lib/silcutil/silcutil.[ch]. Sat Mar 23 09:51:26 EET 2002 Pekka Riikonen * Optimized silc_server_packet_relay_to_channel function. Added new function silc_channel_message_payload_encrypt which can be called directly if channel message payload needs to be encrypted and is already encoded (no need to call _encode function). Packet relaying is now done by router without any extra memory allocations. Affected files are lib/silccore/silcchanel.[ch], silcd/packet_receive.c and silcd/packet_send.c. * Fixed the INVITE notify handling. It took wrong arguments as invite list and invite delete. Affected file is silcd/packet_receive.c. * Added check for TOPIC_SET notify type that the topic change is allowed by the client. Affected file silcd/packet_receive.c. * Added check for INVITE notify type that inviting is allowed by the client. Affected file silcd/packet_receive.c. * Changed the silc_server_client_on_channel to return the SilcChannelClientEntry as well. Moved the function silc_server_check_cmode_rights to server_util.[ch]. Affected files are silcd/server_util.[ch], silcd/command.c. * Added function silc_server_check_umode_rights to check whether changing client's user mode is allowed. Added check for UMODE_CHANGE notify type that the umode change is allowed by the client. Affected files are silcd/server_util.[ch], silcd/packet_receive.c and silcd/command.c. Fri Mar 22 12:25:58 CET 2002 Pekka Riikonen * Fixed the SILC_PACKET_MAX_ID_LEN to actually be the max ID length. It ignored that ID can be IPv6 based as well. Affected file lib/silccore/silcpacket.h. * Fixed the silc_id_id2str and silc_id_str2id to take the IPv6 address offset's into consideration. Affecte file is lib/silccore/silcid.c. Thu Mar 21 20:44:13 EET 2002 Pekka Riikonen * Fixed the internal Unix scheduler functions to check for NULL context they may receive. The affected file is lib/silcutil/unix/silcunixschedule.c. Thu Mar 21 19:12:22 EET 2002 Timo Sirainen * Changed hardcoded ~/.silc paths to use get_irssi_dir() so you can specify different directory with --home command line parameter. Affected files irssi/src/silc/core/client_ops.c, clientutil.c * SILC-specific commands aren't now executed if the active server isn't of SILC-type, so there won't be problems with having IRC and SILC protocol support in same client. Affected files irssi/src/silc/core/silc-channels.c, silc-servers.c, silc-commands.h Wed Mar 20 11:06:57 CET 2002 Pekka Riikonen * Improved the signal support in SILC Schedule. Added new function silc_schedule_signal_call which is used by application to mark a signal to be called. It is now safe to perform any kind of tasks in signal callbacks since it is guaranteed that the application specified signal callback is called after the signal is over. Affected files are lib/silcutil/silcschedule.[ch], lib/silcutil/*/silc*schedule.c. Tue Mar 19 20:42:41 EET 2002 Pekka Riikonen * Added `name' field to SilcChannelPrivateKey to represent application given name for the key. Moved also the context from lib/silcclient/idlist.h into lib/silcclient/silcclient.h. Added the `name' argument also to the function silc_client_add_channel_private_key. Added function silc_client_current_channel_private_key to set the current channel private key in use. Added "change" command to KEY command which can be used to change the current channel private key. Bound the command also to alt+K (Alt+Shift+k). Also affected files lib/silcclient/client_channel.c, irssi/src/docs/help/in/key.in, irssi/src/silc/core/silc-channel.c. Tue Mar 19 16:32:43 CET 2002 Pekka Riikonen * Added silc_rng_get_byte_fast function in to the lib/silccrypt/silcrng.[ch]. * Changed the interface of silc_packet_assemble and the silc_packet_send_prepare. If silc_packet_assmble is now called the application does not call silc_packet_send_prepare because the library will call it automatically. These interfaces now also return a reference to the outgoing buffer which includes the assembled packet, which the application can use to encrypt the packet. Affected files are lib/silccore/silcpacket.[ch], lib/silcclient/client.c, client_channel.c client_prvmsg.c, silcd/packet_send.c, server_backup.c and packet_receive.c. * Fixed a packet sending bug on very high load, where outgoing packet queue wasn't handled correctly and packets got corrupted. Affected files are lib/silcutil/*/silc*sockconn.c, lib/silcclient/client.c and silcd/server.c. Mon Mar 18 21:00:41 EET 2002 Pekka Riikonen * Added macro SILC_PACKET_DATALEN which can be used during packet assembling to check whether the data to be added to the packet will fit to SILC_PACKET_MAX_LEN. If not the data len is truncated until it fits it. Added checks for maximum length of channel message payload and private message payload also. Added checks for maximum packet length in server and in client library. Affected files are lib/silccore/silcpacket.h, silcd/packet_send.c, lib/silcclient/client.c, lib/silccore/silcchannel.c and lib/silccore/silcprivate.c, lib/silcclient/client_channel.c and lib/silcclient/client_prvmsg.c. Mon Mar 18 14:54:42 CET 2002 Pekka Riikonen * Added silc_server_packet_queue_purge call to the silc_server_disconnect_remote to assure that all data in the queue before disconnecting is sent to the network. Affected file silcd/server.c. Sun Mar 17 19:26:16 EET 2002 Pekka Riikonen * Added the deleting of server's own ID cache entry to the silc_server_free function. Free also everything else that has been allocated in silc_server_init. The affected file is silcd/server.c. Sun Mar 17 15:44:56 EET 2002 Pekka Riikonen * Added functions silc_parse_version_string, silc_version_to_num, and silc_ske_parse_version to parse SILC protocol style version strings. Affected files lib/silcutil/silcutil.[ch] and lib/silcske/silcske.[ch]. * Added new configuration params: version_protocol, version_software and version_software_vendor to specify what version the remote host must at least be to be able to connect to server. The vendor string can be regex matched too. Added new function silc_server_connection_allowed to check maximum number of allowed connections, and allowed versions for incoming connections. Affected files are silcd/server.c, server_util.[ch] and serverconfig.[ch]. Sun Mar 17 10:24:50 EET 2002 Pekka Riikonen * Added preliminary support for signals in scheduler. The signals we care about are now blocked always when the scheduler is locked. This way we can synchronise the use of signal with scheduler. It is guaranteed that when signal occurs the scheduler is not locked, and thus new tasks can be safely added to the scheduler. Renamed silc_schedule_wakeup_init and silc_schedule_wakeup_uninit to silc_schedule_internal_init and silc_schedule_internal_uninit. Added new platform specific routines silc_schedule_internal_signals_[un]block and silc_schedule_internal_signal_[un]register. Added new functions to SILC Schedule API: silc_schedule_signal_[un]register. Each signal that application is going to use should be registered to the scheduler. Affected files are lib/silcutil/silcschedule.[ch], lib/silcutil/*/silc*schedule.c. Sat Mar 16 22:39:23 EET 2002 Pekka Riikonen * Check for unauthenticated client and server in the silc_server_new_client and silc_server_new_server functions. Affected file silcd/packet_receive.c. * Added function silc_string_is_ascii to check whether given string is 7-bit ASCII string. Affected files are lib/silcutil/silcutil.[ch]. * Added function silc_id_is_valid_server_id into the silcd/serverid.c and added checking for valid Server ID's in silc_server_new_server. The Server ID must always be based on the server's public IP address. * Added logging of DISCONNECT packet message in the server. Affected file silcd/server.c. Sat Mar 16 18:04:30 EET 2002 Pekka Riikonen * Changed all library interfaces that use Global RNG to also accept SilcRng as argument. Affected files are lib/silcclient/command.c, lib/silccore/silcauth.[ch], lib/silccore/silcchanel.[ch], lib/silcclient/client_channel.c, silcd/packet_send.c, lib/silccore/silcprivate.[ch], lib/silcmath/silcprimegen.c, lib/silcmath/silcmath.h, and lib/silccrypt/rsa.c. * Added function silc_pkcs_generate_key to the lib/silccrypt/silcpkcs.[ch] for applications so that they don't need to do pkcs->pkcs->init calls anymore. * Remove SilcSocketConnection from the SFTP API since it really wasn't needed there. The application has the information saved in its contexts anyway and the SFTP layer doesn't need know about it. Affected files lib/silcsft/silcsftp.h and lib/silcsftp/sftp_[server/client].c. * Rewrote the SILC SIM (modules) interface in lib/silcsim.[ch]. The SilcSimContext is not SilcSim. * Fixed possible buffer overflows in silc_id_render in the lib/silcutil/silcutil.c. * On EPOC the global crypto module lists are not used at all in the crypto library. Added support for using the constant algorithm list on EPOC. Affected files are lib/silccrypt/silccipher.c, silchash.c, silchmac.c and silcpkcs.c. * Fixed the handling of third parameter of KICKED notify, since it was mistakenly updated to SILC Protocol 1.0 even though it is to be included in 1.1. Since it is not in 1.0 it is not mandatory, and this fix now handles it only if it is provided, and it is not error if it is not provided. Affected file lib/silcclient/client_notify.c. Sat Mar 16 09:07:27 EET 2002 Pekka Riikonen * Handled CHANNEL_CHANGE notify (ignore it) in Irssi SILC client. Affected file irssi/src/silc/core/client_ops.c. * Merged with Irssi 0.8.4 from irssi.org CVS. Thu Mar 14 12:53:57 CET 2002 Pekka Riikonen * Check for valid socket connection in client entries before sending any messages. Fixes a crash, but doesn't fix some other underlaying bug that is lurking there. Affected file silcd/packet_send.c. Thu Mar 14 13:38:12 EET 2002 Timo Sirainen * $usermode, $cumode and $cumode_space expandos shouldn't do anything with non-SILC server records. Affected file irssi/src/silc/core/silc-expandos.c Wed Mar 13 21:38:26 EET 2002 Pekka Riikonen * Fixed the silc_net_check_[host/local]_by_sock to support IPv6 bound sockets as well. Now they can return IPv6 addresses as well. Affected file lib/silcutil/silcnet.c. * Fixed silc_net_addr2bin to correctly convert IPv6 addresses. Affected lib/silcutil/unix/silcunixnet.c. * Fixed ID rendering (at least on some platforms, not NetBSD) for IPv6 addresses. Affected file lib/silcutil/silcutil.c. Tue Mar 12 17:58:59 EET 2002 Pekka Riikonen * Added silc_hash_public_key and silc_hash_public_key_compare functions to be used with SilcHashTable. They can be used to hash public keys and compare public keys in hash table. Affected file lib/silcutil/silcutil.[ch]. * Added support for specifying multiple public keys for Client connection section in server configuration file. This makes it possible to accept multiple public keys from same host, or to make a section that accepts any incoming host, and have the accepted public keys listed in the section. Added functions silc_sever_[find/get]_public_key, added the support for this actually to all connection sections but only the Client section is currently allowed to specify multiple public keys. Affected files are silcd/server.c, server_internal.h, command.c, protocol.c, server_util.[ch], packet_receive.c. Mon Mar 11 23:37:38 EET 2002 Pekka Riikonen * Merged Irssi 0.8.2 from irssi.org CVS. Sun Mar 10 23:34:48 CET 2002 Johnny Mnemonic * If silc_debug is TRUE, also output standard logging messages to stderr with the debug output. Made silc_log_reset_all() flushing all channels before returning. Also fixed some documentation typos. Affected files are lib/silcutil/silclog.[ch]. Sun Mar 10 20:07:49 EET 2002 Pekka Riikonen * Fixed the server to check correctly the amount of connections from single host, by checking also the type of the connection. Fixed also the comparison of number of connections and number of allowed connections. Affected files are silcd/server.c, server_util.[ch]. Fri Mar 8 17:16:41 EET 2002 Pekka Riikonen * Fixed the USERS command reply to save the user's mode on the channel as well. Fixed JOIN command reply to check whether a client is on channel already and not join it twice. Affected file lib/silcclient/command_reply.c. * Added new file silc-expandos.c into irssi/silc/core/ to return various stuff for various signal for the statusbar etc. updating. Now Irssi SILC client prints channel user modes etc. on the statusbar. * The user mode (like server/router operator changes) is now shown on the Irssi SILC client's statusbar. The affected files are irssi/src/silc/core/client_ops.c, silc-expandos.c. Thu Mar 7 19:21:22 EET 2002 Pekka Riikonen * Changed silc_mutex_[un]lock calls in lib/silcutil/silcschedule.c to SILC_SCHEDULE_[UN]LOCK macros. * Added more error printing to logs in server code. Affected files silcd/server.c and silcd/protocol.c. * Fixed -S option parsing in Irssi SILC Client. Affected file irssi/src/silc/core/silc-core.c. * Added silc_buffer_alloc_size function. Affected file is lib/silcutil/silcbuffer.h. Tue Mar 5 14:37:27 EET 2002 Pekka Riikonen * Changed all silc_[hash|hmac|cipher|pkcs]_default tables to constants. Affected files in lib/silccrypt/silcpkcs.[ch], silchash.[ch], silchmac.[ch] and silccipher.[ch]. * Changed the internal SFTP Memory FS table to const. Affected file lib/silcsftp/sftp_fs_memory.c. Sun Mar 3 18:37:13 EET 2002 Pekka Riikonen * Fixed the buffer formatting and unformatting routines to check the size of 64 bits types with sizeof(). Affected file is lib/silcutil/silcbuffmt.c. Mon Feb 25 17:19:05 EET 2002 Pekka Riikonen * Removed 0.6.x backwards support. Sun Feb 24 12:53:25 EET 2002 Pekka Riikonen * Changed all integer type names: [u]int[8/16/32/64] -> Silc[UInt/Int][8/16/32/64]. This is to avoid collisions with other libraries using same type names as we did. Sat Feb 23 20:31:43 EET 2002 Pekka Riikonen * Added `prefer_ipv6' argument to the functions silc_net_gethostbyname[_async]. If it is TRUE it will return IPv6 address over IPv4. If FALSE IPv4 address is returned even if IPv6 address was found. Affected files lib/silcutil/silcnet.[ch]. * Added support silc_net_create_connection[_async] to fallback to IPv4 address if IPv6 address could not be used (like if it doesn't work on a specific system). Affected file in lib/silcutil/unix/silcunixnet.c. Sat Feb 23 15:20:30 EET 2002 Pekka Riikonen * Added silc_schedule_reinit function to do the enlarging of the max tasks handling capabilities of the scheduler. Affected files lib/silcutil/silcschedule.[ch]. Wed Feb 20 20:41:01 EET 2002 Pekka Riikonen * Added automatic extern "C" { ... } for C++ compilers so the application does not need to define them. Affected file includes/silcincludes.h. * Renamed lib/silcclient/silcapi.h to silcclient.h as the old name went against naming convention. Applications now include "silcclient.h" instead of "clientlibincludes.h". Removed includes/clientlibincludes.h, it is redundant now. * Renamed includes/version.h to silcversion.h. * Added really preliminary support for OS/2 into the util library. Only thread & mutex API is implemented, others are still to be implemented. Created the lib/silcutil/os2/ directory. Created also file includes/silcos2.h. Wed Feb 20 18:48:49 EET 2002 Pekka Riikonen * Added preliminary BeOS support into the util library. Created lib/silcutil/beos/, and implemented all the needed functions to support SILC on BeOS. Created also file includes/silcbeos.h. Mon Feb 18 15:49:22 EET 2002 Timo Sirainen * Added proper initializations to silc's irssi code, so it's now possible to load it as module. Affected files irssi/src/silc/core/silc-core.c, fe-common/silc/fe-common-silc-core.[ch] and fe-text/silc.c Sun Feb 17 19:02:56 EET 2002 Pekka Riikonen * Merged latest Irssi (0.8.1) from the irssi.org's CVS into the SILC tree. * Fixed the silcdoc document generator to correct generate docs from all kinds of filenames. Affected files are util/robodoc/Source/generator.c, scripts/silcdoc/silcdoc * ROBOdoc documented lib/silcutil/silcmemory.h. Added also new function silc_memdup. * Removed lib/silcutil/silcbufutil.h and moved those routines to the lib/silcutil/silcbuffer.h. Sun Feb 17 15:52:30 EET 2002 Pekka Riikonen * Added `user_count' to the SilcChannelEntry which now tells the number of users on the channel. The user count is now saved in normal server of global channels as well. Affected files silcd/server.c, idlist.h, packet_receive.c and command.c. * Splitted lib/silcutil/silcutil.[ch] into silcfileutil.[ch] to include file utility functions. * Fixed the lib/silcsftp/sftp_fs_memory.c to use silcutil routines instead of calling directly OS routines. * Fixed NICK change printing in Irssi SILC Client. Fixed KICKED notify printing in Irssi SILC Client. Affected file irssi/src/silc/core/client_ops.c. * Fixed a NICK change bug in client library, to not recreate the client_entry->channels hash table everytime nick is changed. Affected file lib/silcclient/client.c. Sun Feb 17 10:10:14 EET 2002 Pekka Riikonen * ROBOdoc documented the lib/silcske/silcske.h, and improved the SKE interface a bit. * Fixed padding problem in PKCS#1. The padding was not actually random since the random number generator was used incorrectly. This security bug affects only when encrypting with PKCS#1, and it is not currently used at all in SILC. SILC only use signing with PKCS#1. Affected file lib/silccrypt/pkcs1.c. Sat Feb 16 13:44:24 EET 2002 Pekka Riikonen * Rewrote the notify handling in Irssi SILC client to not call the events as signals. Fixes problems with Perl support. Affected files irssi/src/silc/core/client_ops.c, silc-channels.c. * Send the auto-nicking NICK command in client library with little timeout after connecting. The affected file is lib/silcclient/client.c. * Added following new config file settings: channel_rekey_secs, key_exchange_rekey, key_exchange_pfs, key_exchange_timeout, conn_auth_timeout, connections_max, links_max. Implemented all the new config settings handling in the server. Optimized the use of SKE Mutual flag usage. Use it only if connection authentication protocol is not based in public key authentication. Renamed all SilcServerConfigSection* to SilcServerConfig* to have a bit shorter names. Affected files silcd/serverconfig.[ch], server.[ch], and protocol.[ch]. Sat Feb 16 02:46:43 CET 2002 Johnny Mnemonic * Cleaned up the listening sockets code, preparing for the rehash support. Affected file is silcd/server.c. * Fixed some output messages. Affected files are silcd/silcd.c, and silcd/server.c. Fri Feb 15 19:10:20 EET 2002 Pekka Riikonen * Create lib/doc/silcrng_intro.html document as introduction to SILC RNG. ROBOdoc documented lib/silccrypt/silcrng.h. Fri Feb 15 13:23:03 CET 2002 Johnny Mnemonic * Fixes to the silcd config template. Affected file is doc/example_silcd.conf.in. * Removed type casts from silc_calloc(), conforming to the CodingStyle. Affected file is lib/silcutil/silcconfig.c. * Removed param_name member from client, server, and router section structs, now identifying the param directly. Added CONFIG_FREE_AUTH macro in config file parsing. Affected files are silcd/serverconfig.[ch]. Fri Feb 15 12:24:08 EET 2002 Timo Sirainen * Fixed command line parameter handling. All SILC initialization is now done in silc_core_init() which also fixes autoconnecting to servers. Affected files irssi/src/silc/core/silc-core.c, irssi/src/fe-text/silc.c. Thu Feb 14 22:03:58 EET 2002 Pekka Riikonen * Added new configuration options and blocks: keepalive_secs, reconnect_count, reconnect_interval, reconnect_interval_max, reconnect_keep_trying and require_reverser_lookup. Added ConnectionParam block, and implemented the connection parameters when connecting as initiator and when accepting connections as responder. Added CONFIG_IS_DOUBLE macro in config file parsing, to check whether given configuration value has been given already. Affected files silcd/serverconfig.[c], server.[c]. * Splitted the doc/example_silcd.conf.in. Separated the crypto algorithm parts and created new file silcalgs.conf, that is now included from the example_silcd.conf.in. * Optimized the silc_server_connect_to_router_second to take the connection configuration object from the SilcServerConnection object instead of finding it during the connecting phase. Added the configuration object to SilcServerConnection struct. Affected files silcd/server_internal.h, server.c. Thu Feb 14 16:02:26 CET 2002 Pekka Riikonen * Add the client on channel after it was resolved at the channel message receiving, and it was not already on the channel. Affected file lib/silcclient/client_channel.c. Wed Feb 13 23:16:41 EET 2002 Pekka Riikonen * Fixed the public key authentication to allocate always the destination signature buffer instead of using static buffer. Affected file silcd/protocol.c. Wed Feb 13 20:51:13 EET 2002 Pekka Riikonen * Unified the serverconfig.[ch]'s helper function interface. Affected file silcd/serverconfig.[ch]. * Removed doc/example_silc.conf.in since it is redundant. The make install will now install irssi/silc.conf file. * Added new Passphrase and Publickey authentication methods to config file, allowing both public key and passphrase based authentication to be set at the same time. Added `prefer_passphrase_auth' setting in config file which can be used to set to prefer passwd auth if both passwd and public key is set. If not set, public key is preferred. This has effect only when being initiator (responder will try both anyway). Added support for authentication with passphrase and public key at the same time. The passphrase is tried first always since it is faster to check. Affected file silcd/serverconfig.[ch], server.c, protocol.[ch]. Wed Feb 13 12:46:25 CET 2002 Johnny Mnemonic * Merged the new SILC Config library, with the server parsing support. Read the header file silcconfig.h or the toolkit documentation for the news. Affected files are doc/example_silcd.conf.in lib/silcutil/silcconfig.[ch] silcd/command.c silcd/packet_receive.c silcd/packet_send.c silcd/protocol.c silcd/server.c silcd/server_backup.c silcd/serverconfig.[ch] silcd/silcd.c. * Fixed some silclog documentation. Affected file is lib/silcutil/silclog.h. Sun Feb 10 18:11:30 EET 2002 Pekka Riikonen * The silc_cipher_register, silc_hash_register and silc_hmac_register now checks if the object to be registered is registered already. Affected files are lib/silccrypt/silccipher.c, silchash.c and silchmac.c. Sun Feb 10 15:48:38 EET 2002 Pekka Riikonen * Merged new irssi from irssi.org's CVS, the version 0.7.99. Sat Feb 9 14:54:33 EET 2002 Pekka Riikonen * Allow zero length channel messages inside the Channel Message Payload. Affected file lib/silccore/silcchannel.c. * Fixed scripts/silcdoc/silcdoc to support all kinds of filenames as header filenames. * Removed lib/silcclient/README and created HTML file lib/silcclient/silcclient_using.html, which is now included as part of Toolkit documentation. Thu Feb 7 10:12:25 CET 2002 Pekka Riikonen * Fixed CUMODE_CHANGE notify handling to change the mode of correct client. Affected file lib/silcclient/client_notify.c. * Make silc_rng_alloc fail if it cannot allocate the sha1 hash algorithm. Affected file lib/silccrypt/silcrng.c. Sun Feb 3 17:20:52 EET 2002 Pekka Riikonen * Fixed the file transfer's key agreement payload to include zero port also if the hostname is NULL because it could not be bound. Call file transfer monitor callback now also if error occurs during key agreement protocol. Changed the silc_client_file_send interface to return the SilcClientFileError instead of session id. The session ID is returned into pointer provided as argument. Check that the file exists locally before sending the file transfer request at all. Affected file lib/silcclient/client_ftp.c, silcapi.h. * Added SILC_CLIENT_FILE_KEY_AGREEMENT_FAILED file transfer error than can occur while key agreement protocol. Affected file lib/silcclient/silcapi.h. * Fixed the event_mode CMODE handler to not crash when mode is changed and +k mode is set in the channel. Affected file irssi/src/silc/core/silc-channels.c. * Fixed SILC_LOG_ERROR to give out Error and not Warning, and SILC_LOG_WARNING to give out Warning and not Error. Affected file lib/silcutil/silclog.c. * Fixed the channel message payload decryption in the function silc_channel_message_payload_decrypt to not modify the original buffer before it is verified that the message decrypted correctly. Otherwise, next time it is called with correct channel key it won't encrypt since the payload is corrupted. Affected file lib/silccore/silcchannel.c. Sun Feb 3 11:46:12 EET 2002 Pekka Riikonen * Do not constantly resize the window. A fix patch by cras. Affected file irssi/src/fe-text/screen.c. Sat Feb 2 16:54:18 EET 2002 Pekka Riikonen * Applied IPv6 fix patch from Jun-ichiro itojun Hagino. Affected file lib/silcutil/silcnet.c. Fri Feb 1 22:33:11 EET 2002 Pekka Riikonen * Fixed a bug in hash table internal routine for traversing the table with foreach callback. The current entry may become invalid in the callback but it was referenced after the callback returned. Do not allow auto rehashing of hash table during the silc_hash_table_foreach operation, for same reasons as it is not allowed for SilcHashTableList. Affected files are lib/silcutil/silchashtable.[ch]. Fri Feb 1 14:55:00 CET 2002 Pekka Riikonen * Defined DLLAPI into silcincludes.h and silcwin32.h for Win32 DLL. extern's in header files are now declared with DLLAPI. Thu Jan 31 23:34:33 EET 2002 Pekka Riikonen * Fixed private message handling. It used some old code that caused the client to crash. Affecte file is lib/silcclient/client_prvmsg.c. Thu Jan 31 19:06:22 EET 2002 Pekka Riikonen * Added function silc_client_add_channel, silc_client_replace_channel_id, and removed functions silc_client_new_channel_id and silc_idlist_get_channel_by_id from client library. * Added cross reference of the joined channels to the SilcClientEntry, and changed the SilcChannelEntry's users list to SilcHashTable. The affected files are lib/silcclient/idlist.[ch]. * Fixed a bug in hash table tarversing. While the hash table is traversed with SilcHashTableList the table must not be rehashed. It is now guaranteed that auto rehashable tables are not rehashed while tarversing the list. Also defined that silc_hash_table_rehash must not be called while tarversing the table. Added function silc_hash_table_list_reset that must be called after the tarversing is over. The affected files are lib/silcutil/silchashtable.[ch]. * Changed all hash table traversing to call the new silc_hash_table_list_reset in server and in client library. * Added function silc_client_on_channel to return the SilcChannelUser entry if the specified client entry is joined on the specified channel. This is exported to application as well. Affected files lib/silcclient/client_channel.c, silcapi.h. Wed Jan 30 19:14:31 EET 2002 Pekka Riikonen * Fixed founder regaining problem with JOIN command on normal server. The notify for mode change must be sent always and not only if !cmd->pending. Affected file silcd/command.c. * Fixed the WHOWAS command's reply sending to support the lists correctly. Affected file silcd/command.c. Wed Jan 30 11:11:47 CET 2002 Pekka Riikonen * When sending JOIN command to router for processing the sender's old command identifier was not saved back to the sender's command context, fixed now. The affected file is silcd/command.c. * Create the key in JOIN command of the router did not return the channel key, added check for this. Affected file is silcd/command.c. * Fixed a channel ID update bug in JOIN command reply. Do not directly upgrade the ID but call the function silc_idlist_replace_channel_id if the ID was changed. Affected file silcd/command_reply.c. * Fixed memory leaks from command calling if it would fail. Affected file silcd/command.c. Tue Jan 29 19:49:31 EET 2002 Pekka Riikonen * Applied patches from cras: Memory leak fixes around libaries, irssi window resize fix, new silclist.h and silcdlist.h, all extern inline changed to static inline. * Removed dotconf from lib/dotconf, not needed anymore. * Removed TRQ from lib/trq, not needed anymore. * Do more frequent heartbeats (5 minutes instead of 10 minutes) with server connections. Later this will be configurable in config file after new config file is done. Affected file silcd/server.c. Tue Jan 29 10:35:03 CET 2002 Pekka Riikonen * Fixed a crash in server related to channel announcements. Affected file silcd/server.c. Mon Jan 28 17:49:42 EET 2002 Pekka Riikonen * Fixed memory leaks in silc_server_create_new_channel* functions. Affected file silcd/server.c. * Fixed the CHANNEL_CHANGE notify to re-announce the channel which ID was changed. This way the router will send the user list for the channel again, and server won't be in desync in some rare circumstances. Affected file is silcd/packet_receive.c. Sun Jan 27 21:04:19 EET 2002 Pekka Riikonen * Check for NULL socket pointer in the function silc_server_packet_send_to_channel_real. Affected file silcd/packet_send.c. * Fixed the BAN notify handling to correctly remove ban list. Affected file silcd/packet_receive.c. Sat Jan 26 23:01:03 EET 2002 Pekka Riikonen * Fixed some header addition to Toolkit distribution in lib/silcutil/Makefile.am and lib/trq/Makefile.am. * Added lib/silcclient/client_ops_example.h as an template file for application programmers to quickly start using the SilcClientOperation functions in their application. Updated the lib/silcclient/README as well to tell about this nice file made available. Sat Jan 26 10:45:41 EET 2002 Pekka Riikonen * Call silc_server_remove_from_channels when removing client entry when NO_SUCH_CLIENT_ID was received. Affected file is silcd/command_reply.c. Fri Jan 25 19:12:36 EET 2002 Pekka Riikonen * Added server & router operator statistics updating. Affected file silcd/packet_receive.c and silcd/command.c. * Fixed the SERVER_SIGNOFF notify handling on normal server not to save the history information for clients. Same was fixed earlier in remove_clients_by_server function, but not here. Affected file silcd/packet_receive.c. * Raised the default connection-retry count from 4 to 7 in server. Affected file silcd/server.h. * Cancel any possible reconnect timeouts when we start the key exchange. Affected file silcd/server.c. * Do not reconnect on connection failure when SCONNECT was given. Affected files silcd/server.[ch]. Tue Jan 22 18:19:36 EET 2002 Pekka Riikonen * Removed assert()'s from the lib/silcclient/client_keyagr.c. * Fixed the NICK command to always give the unformatted nickname to the one giving the NICK command. If unformatted nickname is cached already it will be formatted and the local entry will always get the unformatted nickname. Affected file lib/silcclient/idlist.c. * Fixed some double frees from client library commands. Affected file is lib/silcclient/command.c. * Fixed CUMODE command in server to assure that no one can change founder's mode than the founder itself, there was a little bug. Affected file silcd/command.c. Mon Jan 21 19:07:53 EET 2002 Pekka Riikonen * Removed the SilcClientCommandDestructor from the client libary, it is not needed anymore. Affected files are lib/silcclient/silcapi.h, command[_reply].[ch], client_notify, idlist.c. * Fixed GETKEY command to first resolve client, and then resolve the server only if the client was not found, instead of resolving both at the same time. Affected file is lib/silcclient/command.c. * Added silc_client_start_key_exchange_cb and lookup the remote hostname and IP address before starting the key exchange with server. The affected file is lib/silcclient/client.c. * The server's public key is now saved using the IP address of the server and not the servername for the filename. The hostname public key filename is checked as an fall back method if the IP address based filename is not found. Fixed the GETKEY command to save the fetched server key in correct filename. Print the remote server's hostname now when new key is received during connection process. Affected file is irssi/src/silc/core/client_ops.c. * Return always our own public key to the client if it asks for it with GETKEY command. Affected file silcd/command.c. * Removed the use_auto_addr variable from default config file since it was in wrong section. Affected file is irssi/src/config. * Fixed TOPIC_CHANGE notification to not route it when it was sent using silc_server_send_notify_to_channel function. Affected file silcd/command.c. * Fixed silc_server_send_notify_kicked to send the kicker's Client ID also, it was missing. Affected files are silcd/command.c, silcd/packet_send.[ch]. Thu Jan 17 18:59:11 EET 2002 Pekka Riikonen * Do not save client history information in SERVER_SIGNOFF. Fixes the bug in normal server that it does not detect the client becoming valid after the server becomes back online. Affected file silcd/server_util.c. * Added `sock_error' field into the SilcSocketConnection context. When error occurs during socket operation (read or write) the error is saved. Added also new function silc_socket_get_error to return human readable socket error message. Affected files are lib/silcutil/silcsockconn.[ch], lib/silcutil/unix/silcunixsockconn.c, and lib/silcutil/win32/silcwin32sockconn.c. * The server now prints the socket error message in the signoff for client. Affected file silcd/server.c. * Fixed the `created' channel information sending from router to server in JOIN command. Checks now whether the channel really was created or not and set it according that. Fixed the JOIN command to use the client entry's current ID during the joining procedure instead of the one it sent in the command (it is checked though), since it can change between the packet processing and command processing, and would just case unnecessary pain in the client end. Affected file silcd/command.c. * Fixed a channel key payload sending to use correct channel ID when the server was forced to change the channel's ID by router. Router sent the key payload with the old Channel ID. Affected file silcd/packet_receive.c. Wed Jan 16 22:26:30 EET 2002 Pekka Riikonen * Call silc_server_save_channel_key only if the key payload was provided in the JOIN command's command reply. Affected file silcd/command_reply.c. Tue Jan 15 18:49:41 EET 2002 Pekka Riikonen * Fixed silc_mp_sizeinbase to return the value correctly with MPI. Affected file lib/silcmath/mp_mpi.c. * Fixed the stop_server signal to correctly stop the scheduler and gracefully stop the server when SIGTERM or SIGINT signals are received. Affected file silcd/silcd.c. Mon Jan 7 23:38:19 CET 2002 Johnny Mnemonic * Simple handling of TERM and HUP signals. Also added some log flushing call around. Affected file is silcd/silcd.c. * Fixed small bugs in silclog.c. Now buffering output will take effect after 10 seconds since startup: This will ensure that no important startup messages are lost. Also output redirection will preserve original format ([Date] [Type] message). Affected file is lib/silcutil/silclog.c. * Added two options to the config file, in the logging section: quicklogs:: and flushdelay::. Affected files lib/silcutil/silclog.[ch], silcd/serverconfig.[ch]. Sun Jan 6 12:49:40 EET 2002 Pekka Riikonen * Do not print the warning about log files not being initialized more than once to avoid excess logging. Affected file is lib/silcutil/silclog.c. * Fixed the SIM compilation in lib/silcsim/Makefile.am. Fixed the SIM copying in make install in Makefile.am.pre. Sun Jan 6 01:10:21 CET 2001 Johnny Mnemonic * Rewritten silclog APIs. Globally interesting changes follows: silc_log_set_files() changed to silc_log_set_file(). silc_log_set_callbacks() changed to silc_log_set_callback(). ROBOdoc documented silclog header file. SilcLogCb now returns bool to wether inihibit the default handler or not (to keep the old behaviour return always TRUE). The new APIs should also fix the problem of the silcd_error.log file that was written in the current directory. New features: Log files streams will remain opened after silc_log_set_file() call, means less CPU usage notably on high traffic servers. File streams are now full buffered, and flushed to the disk every 5 minutes, lesses HD activity and CPU usage. Messages can be redirected, allowing admins to configure one single logfile for all server messages. the silc_log_quick global variable to activate fast-logging. Affected files lib/silcutil/silclog.[ch] * Changed some code to conform new silclog APIs. Affected files are doc/example_silcd.conf.in, silcd/server.c irssi/src/silc/core/silc-core.c, silcd/serverconfig.[ch], silcd/silcd.c. * Fixed a memory leak that could occur in some situations. Affected file silcd/serverconfig.c. Sat Jan 5 13:37:29 EET 2002 Pekka Riikonen * Added the silc_client_del_client to remove the client from all channels as well. Affected file lib/silcclient/idlist.c. * Fixed the client library to correctly remove the client from all channels when the client entry is being destroyed. Affected file lib/silcclient/client_notify.c, command.c. * Added auto-nicking support to the client library. If the applicatio now sets client->nickname it will be sent to the server after connecting by the library. This way for example SILCNICK (or IRCNICK) environment variables will have effect and always change the nickname automatically to whatever it is wanted. Affected file lib/silcclient/client.[ch]. * Renamed silc_server_command_bad_chars to the silc_server_name_bad_chars and moved it to the silcd/server_util.[ch]. Added also new function silc_server_name_modify_bad to return nickname that includes bad characters as new nickname without those bad characters. This check and modify is now used in silc_server_new_client when the username is initially set as nickname, so it must be checked to be valid nickname. Affected file silcd/packet_receive.c. * The nickname length is now taken from the packet for real and not trusted to strlen() since it clearly can return wrong length for nickname including bad characters. This also applies to channel names. Affected file silcd/command.c. * Removed the lib/silcsilm/modules directory. Modules are now compiled into the lib/silcsim. Fixed the copying of the modules to follow symbolic links in Makefile.am.pre. Wed Jan 2 18:56:21 EET 2002 Pekka Riikonen * Fixed silc_string_regexify list creation. Fixes bugs with BAN and INVITE commands in server. The affected file is lib/silcutil/unix/silcunixutil.c. Sun Dec 30 13:41:34 EET 2001 Pekka Riikonen * Removed the command destructor entirely from the server's command and command reply routines. It is not needed, and its usage was buggy and caused crashes. Affected files are silcd/command[_reply].[ch]. Fri Dec 28 12:43:22 EET 2001 Pekka Riikonen * Cancel protocol and NULL sock->protocol if timeout occurred during protocol. Affected file silcd/server.c. * Cancel protocol timeouts always before calling the final callback, to assure that after final callback is called no other state will be called for the protocol anymore. Affected file silcd/protocol.c. * Print error log if incoming connection configuration could not be found. Affected file silcd/server.c. * Fixed JOIN command to correctly save the founder mode to the client on normal SILC server, when the channel was created by the router. Affected file silcd/command.c. * Fixed LIST command (hopefully) to send correct reply packets. Affected file silcd/command.c. Thu Dec 20 16:14:52 CET 2001 Pekka Riikonen * The silc_packet_receive_process now returns FALSE if the read data was invalid packet, and TRUE if it was ok. The server now checks that if unauthenticated connection sends data and its processing fails the server will close the connection since it could be a malicious flooder. Affected files lib/silccore/silcpacket.[ch], silcd/server.c. Wed Dec 19 21:31:25 EET 2001 Pekka Riikonen * Make sure the warning about error opening a log file is printed only once and not everytime it fails (produces too much useless log). Affected file lib/silcutil/silclog.c. Wed Dec 19 18:21:51 CET 2001 Johnny Mnemonic * Made the silc_server_daemonise() function more readable. Affected file silcd/server.c. * Pid file is now optional, the user may comment it out from the config file. Removed define SILC_SERVER_PID_FILE, we don't need a default any longer. Affected file configure.in.pre, lib/Makefile.am.pre. * Make some use of the pid file. The server now dies at startup if it detects a valid pid file on his path. The server would die anyway in this circumstance, because of the bind() failure. Affected file silcd/silcd.c. * No longer compiling lib/dotconf. Mon Dec 17 18:24:27 EET 2001 Pekka Riikonen * Fixed JOIN command parsing not to crash. Affected file lib/silcclient/command.c. * Fied the NICK_CHANGE notify to add the new client entry even it is resolved. This removes an <[unknown]> nick thingy bug in the client. Affected file is lib/silcclient/client_notify.c. * Do not try to allocate 0 bytes (efence does not like it) in lib/silccore/silccomand.c when encoding payload. * Do not take IRCNICK as nickname in Irssi SILC client since it is not possible to set nickname before hand connecting the server (TODO has an entry about adding auto-nicking support). * Changed the silc_server_command_pending to check whether there already exists an pending entry with the specified command, command identifier and pending callback. This is to fix IDENTIFY and WHOIS related crashes that may register multiple pending commands with same identifier. Affected file silcd/command.c. * Fixed the server to reconnect to the router even if it was already reconnecting and EOF was received. This to fix a possibility that the server wouldn't ever try to auto-reconnect to the router. Affected file silcd/server.c. Sat Dec 15 20:31:50 EET 2001 Pekka Riikonen * Fixed the server's password authentication to use the length of the locally saved password, and not the one sent in the packet. Affected file silcd/protocol.c. * Fixed same password authentication problem in the Authentication Payload handling routines in lib/silccore/silcauth.c. * Yet another password authentication problem fixed with channel password handling in silcd/command.c. Mon Dec 10 19:57:40 EET 2001 Pekka Riikonen * If first character of string in silc_parse_userfqdn is '@' then do not parse it. Affected file is lib/silcutil/silcutil.c. Sun Dec 9 22:18:50 EET 2001 Pekka Riikonen * Fixed minor bug in IDENTIFY command reply sending, which caused various weird problems during JOIN when it was resolving names for users. Affected file silcd/command.c. Sun Dec 9 19:18:41 EET 2001 Pekka Riikonen * Fixed the IDENTIFY command reply sending to chech better valid clients. It was possible to send incomplete list of replies. Affected file silcd/command.c. Sat Dec 8 15:58:31 EET 2001 Pekka Riikonen * Added silc_client_command[s]_[un]register functions now to dynamically register the commands in client library. Removed the static table of commands. This allows the client library to call commands without causing the application to know about what commands library has called. Removed the INFO command reply kludge to detect when the command was called by library. Now library use its own command reply function for INFO command. Added function silc_client_command_call to call a command. Application can use it to call command, not access the structure directly. Now all commands that are sent by the client library (not explicitly sent by application) use own command reply functions. Affected files around lib/silcclient/ and in irssi/src/silc/core/. * Fixed the WHOIS command reply sending to chech better valid clients. It was possible to send incomplete list of replies. Fixed the WHOIS and IDENTIFY to send the request to router if normal server did not do it and did not find any results. Affected file silcd/command.c. Thu Dec 6 17:21:06 EET 2001 Pekka Riikonen * Moved the internal data from SilcClient context into its own file, not accesible to application. Affected files lib/silcclient/client.h and lib/silcclient/client_internal.h, and other files in client library. Thu Dec 6 10:37:55 EET 2001 Pekka Riikonen * Added doc/examples installation target in Makefile.am.pre. A patch by salo. Tue Dec 4 17:43:19 EET 2001 Pekka Riikonen * If NO_SUCH_CLIENT_ID notify is received for WHOIS or IDENTIFY commands the found client entry will be removed from the cache, after notifying application about the error. Affected file lib/silcclient/command_reply.c. * Changed the /MSG to check for exact nickname user gave, and not let `nick' match `nick@host' if it is only one found. Now, user must type the exact nickname (like nick@host2) even if there are no more than one same nicks found. This is to avoid a possibility of sending nickname to wrong nickname since `nick' could match `nick@host'. Affected file is irssi/src/core/silc-servers.c. Mon Dec 3 18:49:45 EET 2001 Pekka Riikonen * Do not print "you are now server operator" or similar when giving /away command. Affected files are irssi/src/silc/core/client_ops.c, silc-servers.h. * Made the silc_server_command_pending_error_check to send the same command reply payload it received back to the original sender of the command. This way all arguments that was received by the server will be received by the client too. Affected file silcd/command.c. * Added the silc_idcache_add to return the created cache entry to a pointer. Affected file lib/silccore/silcidcache.[ch]. * Add global clients to expire if they are not on any channel. This is because normal server will never know if they signoff if they are not on any channel. The cache expiry will take case of these entries. This is done by normal servers only. The affected files are silcd/command_reply.c, silcd/idlist.[ch], silcd/server and silcd/packet_receive.c. * If server receives invalid ID notification for WHOIS or IDENTIFY and the ID exists in the lists, it is removed. Affected file silcd/command_reply.c. * If NO_SUCH_CLIENT_ID is received for WHOIS or IDENTIFY command in client then client entry that it matches is searched and the nickname is printed on the screen for user. Affected file irssi/src/silc/core/client_ops.c. Mon Dec 3 11:56:59 EET 2001 Pekka Riikonen * Use cache entry expire time in the LIST command reply to purge old entries from the cache after the LIST command reply has been received. This way we don't have non-existent entries in the cache for too long. Affected file is silcd/command_reply.c. Sun Dec 2 23:29:07 EET 2001 Pekka Riikonen * If we are normal server, and we've not resolved client info in WHOIS or IDENTIFY from router, and it is global client, we'll check whether it is on some channel. If it is not then we cannot be sure about its validity and will resolve it from router. Fixes a bug in WHOIS and IDENTIFY. Affected file silcd/command.c. * Search channel by name (if possible) rather than by ID in IDENTIFY command's command reply. Affected file is silcd/command_reply.c. Sun Dec 2 13:48:46 EET 2001 Pekka Riikonen * Distribute to the channel passphrase in CMODE_CHANGE notify. Updated specs and implemented it. Affected file silcd/command.c, silcd/packet_send.c and silcd/packet_receive.c. * Implemented the payload handling in the JOIN command. If provided all conditions for channel joining except requirement to provide correct passphrase can be overrided by the channel founder. Updated the protocol specs. Affected file silcd/command.c. Added support for founder auth in JOIN command in client library. Fixed the parsing of the JOIN command now to support all options as they should be. The affected file is lib/silcclient/command.c. * Optimized the WHOIS and IDENTIFY commands to send the request to router only if it includes nicknames or other names. If they include only IDs then check the local cache first before routing. Affected file is silcd/command.c. * Added channels topic announcements. Affected file is silcd/packet_receive.c and silcd/server.c. * Fixed the silc_server_send_notify_topic_set to really destine the packet to channel. Affected file silcd/packet_send.c. * Fixed a crash in CHANNEL_CHANGE notify handling in the client library. Affected file lib/silcclient/client_notify.c. * Added UMODE announcements. Affected file silcd/server.c. Sat Dec 1 12:52:39 EET 2001 Pekka Riikonen * Memory leak fixes in: lib/silcutil/silcsockconn.c lib/silcske/silcske.c lib/silcske/groups.c lib/silccrypt/rsa.c lib/silccrypt/silcpkcs.c lib/silccore/silccommand.c lib/silccore/silcidcache.c silcd/idlist.c silcd/packet_send.c silcd/command.c * ROBOdoc documented the lib/silcske/groups.h file and a bit changed the interface for better. Thu Nov 29 22:12:50 EET 2001 Pekka Riikonen ' * Update the client entry context in the ID cache after nick change. Affected file lib/silcclient/command.c. Fixes the CUMODE command when regaining founder privileges, and a little WHOIS problem. * Fixed silc_net_gethostbyname to correctly call the inet_ntop. Affected file lib/silcutil/silcnet.c. Thu Nov 29 19:31:23 EET 2001 Pekka Riikonen ' * Added IPv6 support checking to the configure.in.pre, added also --enable-ipv6 option to override the check. Affected file configure.in.pre. * The silc_thread_create now calls the start function directly if threads support is not compiled in. Removes ugly #ifdef's from generic code. Affected files are lib/silcutil/unix/silcunixthread, win32/silcwin32thread.c. * Added silc_net_gethostby[name/addr]_async to asynchronously resolve. Affected files are lib/silcutil/silcnet.[ch]. * Added support for rendering IPv6 based server, client and channel IDs. Affected file lib/silcutil/silcutil.c. * Added support for creating IPv6 based server IDs. Affected file is silcd/serverid.c. Wed Nov 28 23:46:09 EET 2001 Pekka Riikonen ' * Added silc_net_gethostby[addr/name] into the lib/silcutil/silcnet.[ch]. Added IPv6 support to Unix network routines. Added silc_net_is_ip[4/6]. Affected file is lib/silcutil/unix/silcunixnet.c. All routines that take address as argument now supports both IPv4 and IPv6 addresses. Mon Nov 26 18:09:48 EET 2001 Pekka Riikonen ' * Fixed LIST command reply sending in server. Affected file silcd/command.c. * Server now sends the kicker's client ID in the KICK notify to the kicked client. Affected file silcd/command.c. * The client library now parses the kickers client ID and UI displays it. Affected files lib/silcclient/client_notify.c and irssi/src/silc/core/silc-channels.c, module-formats.c. * Made all payload parsing function prototypes consistent. They all take now const unsigned char * and uint32 pair as the payload data instead of SilcBuffer. Changes all around the source tree. Other unsigned char* -> const unsigned char* changes around the tree as well. * Optimized SFTP client and server packet sending not to allocate new buffer for each packet but to recycle the first allocated buffer. Affected files are lib/silcsftp/sftp_client.c, sftp_server.c, sftp_util.[ch]. * Optimized the SFTP client to use SilcList instead of SilcDList for requests, because it is faster. Affected file is lib/silcsftp/sftp_client.c. * Moved the ID Payload routines from lib/silccore/silcpayload.[ch] into lib/silccore/silcid.[ch]. Renamed silcpayload.[ch] into silcargument.[ch]. Mon Nov 26 15:01:53 CET 2001 Pekka Riikonen * If client entry is deleted with active key agreement session, abort the session. The silc_client_abort_key_agreement now calls the completion callback with new SILC_KEY_AGREEMENT_ABORTED status. Affected file lib/silcclient/silcapi.h, client_keyagr.c and idlist.c. Sun Nov 25 18:01:45 EET 2001 Pekka Riikonen * Don't use __restrict in older GCC's. Affected file is lib/silcmath/mpi/mpi-priv.h. A patch by salo. * silc_net_localhost now attempts to reverse lookup the IP/hostname. Affected file lib/silcutil/silcnet.c. * Defined argument to the SILC_COMMAND_JOIN command. It can be used to gain founder privileges at the same time when joining the channel. Defined that the SILC_NOTIFY_TYPE_KICKED send the kicker's client ID as well. Updated protocol specs. Defined that the server must send SILC_COMMAND_IDENTIFY command reply with error status to client who sent private message with invalid client ID. Updated the protocol specification. * Added silc_server_send_command_reply to send any command reply. Affected file silcd/packet_send.[ch]. * Added silc_id_payload_encode_data to encode ID payload from raw ID data. Affected file lib/silccore/silcpayload.[ch]. * The server now send IDENTIFY command reply with error status if client ID in private message is invalid. Affected file silcd/packet_receive.c. * Save the server key file with server's IP address in the filename instead of hostname. The affected file is irssi/src/silc/core/client_ops.c. Sat Nov 24 20:08:22 EET 2001 Pekka Riikonen * Typo fixes in irssi/src/fe-common/silc/module-formats.c. A patch by Sunfall. * Added libtool support for compiling shared objects in lib/silcsim. Affected file configure.in.pre and lib/silcsim/Makefile.am. Original patch by cras. Fri Nov 23 23:30:59 EET 2001 Pekka Riikonen * Pid file configuration, and server's config file fixes patch by toma. Updated CREDITS file. Sun Nov 18 01:34:41 EET 2001 Pekka Riikonen * Fixed silc_client_channel_message to not try to decrypt the message twice if it resolved the destination client information. This could cause of dropping one channel message. Affected file lib/silcclient/client_channel.c. Wed Nov 14 23:44:56 EET 2001 Pekka Riikonen * Added silc_client_run_one into lib/silcclient/silcapi.h and lib/silcclient/client.c. This function is used when the SILC Client is run under some other scheduler, or event loop or main loop. On GUI applications, for example this may be desired to used to run the client under the GUI application's main loop. Typically the GUI application would register an idle task that calls this function multiple times in a second to quickly process the SILC specific data. Wed Nov 14 19:16:52 CET 2001 Johnny Mnemonic * Fixed silc_server_drop() for dropping the supplementary groups as well, this could cause a security hole on some systems. Wed Nov 14 16:22:25 EET 2001 Pekka Riikonen * __pid_t -> pid_t in lib/silccrypt/silcrng.c. A patch by johnny. * Write PID file after dropping privileges. Added -F option to run server on foreground. A patch by debolaz. Affected files silcd/server.c, silcd/silcd.c. * Fixed MOTD to return the MOTD file server name. Affected file silcd/command.c. * Added INFO command reply handling to the Irssi SILC Client. Affected file irssi/src/silc/core/client_ops.c. Wed Nov 14 00:18:08 EET 2001 Pekka Riikonen * Fixed the silc_idcache_list_* routines to really support the dynamic list. Fixes a crash. Affected file is lib/silccore/silcidcache.c. * Fixed the LIST command reply to really call LIST command's pending callbacks. Affected file silcd/command_reply.c. Tue Nov 13 00:49:17 EET 2001 Pekka Riikonen * Update conn->local_entry->nickname after giving NICK command. Affected file lib/silcclient/command.c. Sun Nov 11 23:43:02 PST 2001 Brian Costello * Added the [pid] option to the silcd configuration file Affected files: serverconfig.[ch] and silcd.c Sun Nov 11 23:56:39 EET 2001 Pekka Riikonen * Save fingerprint in WHOIS command reply in server. Affected file silcd/command_reply.c. * Fixed NICK commands pending callback registration. Affected file lib/silcclient/command.c. Sun Nov 11 10:49:10 EET 2001 Pekka Riikonen * Use ++server->cmd_ident when sending commands in server, instead of random number. Affected file silcd/command.c. * Fixed GETKEY command reply to call actually GETKEY pending command callbacks. Affected file silcd/command_reply.c. * A bit stricter check for nicknames. Check for same nickname in NICK command also. Affected file silcd/command.c. * Do not call INFO command everytime client ID changes, only during first connecting. Affected file lib/silcclient/client.c. * Set the new nickname only after successful command reply for NICK command is returned by server. Affected file lib/silcclient/command.c. * Remove nicknames from nicklist during server_signoff notify. Should fix /NAMES bit more. The affected file is irssi/src/silc/core/silc-channels.c. * Added `fingerprint' field to the SilcIDListData in the silcd/idlist.h to hold the fingerprint of the client's public key. Send the fingerprint of the client's public key in WHOIS command reply. Affected files silcd/command.c, and silcd/idlist.[ch]. * Added silc_fingerprint into lib/silcutil/silcutil.[ch] to create fingerprint from given data. * Show the fingerprint of the client's public key in WHOIS. Affected files irssi/src/module-formats.[ch] and irssi/src/silc/core/client_ops.c. * Format the multiple same nicknames also during JOIN and NICK_CHANGE notifys. Affected file is lib/silcclient/client_notify.c. * Do not print error on screen for invalid private message payload since it can come if someone is sending private messages with wrong key. Affected file lib/silccore/silcprivate.c. * Fixed multiple concurrent /PING crash. Affected file lib/silcclient/command.c. * Changed the wrong ID encoding. All IP addresses must be in MSB first order in encoded format. They were encoded wrong and was in LSB format. Affected files are silcd/serverid.c, lib/silcutil/silcutil.c. * Remove silc_net_addr2bin_ne from lib/silcutil/silcnet.[ch]. * Call the `connect' client operation through the scheduler in case of error. Affected file lib/silcclient/client.c. * Call the `failure' client operation even if the error occurred locally during a protocol. Affected file is lib/silcclient/protocol.c. * Added support of sending LIST command to router from normal server. This way normal server can get list of all channels in the network too. Fixed the channel list sending in the server too. Affected files are silcd/command.c, and silcd/command_reply.[ch]. * Added silc_server_update_channels_by_server and silc_server_remove_channels_by_server. They are used during disconnection of primary router and in backup router protocol. Affected file silcd/server_util.[ch], silcd/server.c and silcd/server_backup.c. * Fixed channel adding to global list in IDENTIFY command reply in server. Affected file silcd/command_reply.c. Sat Nov 10 21:39:22 EET 2001 Pekka Riikonen * If the incoming packet type is REKEY or REKEY_DONE process that packet always synchronously. Fixes yet another MAC failed error on slow (dialup) connections. Affected file lib/silcclient/client.c and silcd/server.c. Thu Nov 8 22:21:09 EET 2001 Pekka Riikonen * Call check_version SKE callback for initiator too. Affected file lib/silcske/silcske.c. * Implemented fix for security hole found in the SKE that was fixed in the specification few days back; the initiator's public key is now added to the HASH value computation. Added backwards support for the old way of doing it too, for old clients and old servers. Affected file is lib/silcske/silcske.c. * Enabled mutual authentication by default in SKE. If initiator is not providing mutual authentication the responder will force it. This will provide the proof of posession of the private key for responder. The affected files are lib/silcclient/protocol.c and silcd/protocol.c. * Do not cache anymore the server's public key during SKE. We do mutual authentication so the proof of posession of private key is done, and if the server is authenticated in conn auth protocol with public key we must have the public key already. Affected file silcd/protocol.c. * Added new global debug variable: silc_debug_hexdump. If it is set to TRUE SILC_LOG_HEXDUMP will be printed. Affected file lib/silcutil/silclog.[ch]. * Fixed compilation warning due to char * -> const char *. Affected files lib/silcutil/silcnet.h, and lib/silccore/silcauth.[ch]. Wed Nov 7 20:43:03 EET 2001 Pekka Riikonen * Fixed CMODE command when new channel key was created. If the creation failed the old key was removed. Next time giving same command would crash the server since the old key was freed already. Affected file silcd/command.c. * Fixed the silc_server_announce_get_channels to not crash on reconnect. Affected file silcd/server.c. Wed Nov 7 17:15:07 EET 2001 Pekka Riikonen * Added silc_log_set_debug_string function to set a regex string to match for debug output. Only the function names, or filenames matching the given debug string is actually printed. This way it is possible to filter out those debug strings that user is not interested in. Fixed a bug in silc_string_regexify. Affected files lib/silcutil/silclog.[ch], and lib/silcutil/unix/silcunixutil.c. * Changed the -d options in both server and Irssi SILC client to take the debug string as argument. Affected files silcd/silcd.c and irssi/src/silc/core/silc-core.c. Tue Nov 6 21:31:54 EET 2001 Pekka Riikonen * Added silc_hash_babbleprint to create a Bubble Babble Encoded fingerprint. The encoding is developed by Antti Huima (draft-huima-babble-01.txt), and it creates human readable strings out of binary data. Affected file lib/silccrypt/silchash.[ch]. * Print the babble print now in addition of fingerprint as well in Irssi SILC client. Affected files are irssi/src/fe-common/silc/module-formats.[ch], irssi/src/fe-common/silc/core/client_ops.c. Sun Nov 4 23:37:28 EET 2001 Pekka Riikonen * Fixed a security problem found in SKE. The initiator's public key too is now added to the HASH hash value creation which is signed by the responder to create the SIGN value. This will prevent anyone in the middle to lie to the responder about the initiator's public key. If this is done now, the man in the middle will get caught. Updated the protocol specification. Sun Nov 4 11:43:53 EET 2001 Pekka Riikonen * Better installation directory handling. Configure module paths and other paths automatically to example_silc* files in doc/. A patch by toma. * Fixed compiler warning from MPI library, and from SILC RNG. A patch by johnny. * Added SILC_SERVER_PID_FILE to define the pid file for server. It can be configured with ./configure. A patch by toma. Sat Nov 3 23:48:23 EET 2001 Pekka Riikonen * Find correct make to use in prepare-clean. A patch by toma. Affected file prepare-clean. Sat Nov 3 22:04:00 PST 2001 Brian Costello * Added irssi variables use_auto_addr, auto_bind_ip, auto_bind_port and auto_public_ip. * Changed the interface for silc_client_send_key_agreement in lib/silcclient/silcapi.h Affected files: irssi/src/silc/core/silc-core.c irssi/config lib/silcclient/silcapi.h irssi/src/silc/core/silc-channels.c lib/silcclient/client_keyagr.c irssi/docs/help/key Sat Nov 3 17:48:55 EET 2001 Pekka Riikonen * Added silc_pkcs_public_key_compare to compare two public keys. Affected file lib/silccrypt/silcpkcs.[ch]. * Check that the client who set the founder mode on the channel is the same client that is giving the founder mode to itself. It is done by comparing the saved public key (it is saved even in the authentication is passphrase). Affected file silcd/command.c. Fri Nov 2 18:52:08 EST 2001 Pekka Riikonen * Do not process packet for disconnected socket connection. Affected file lib/silccore/silcpacket.c. * Process the DISCONNECT packet through scheduler in the client library. Affected file lib/silcclient/client.c. * Fixed the silc_client_packet_parse to not to increase the packet sequence number if the conn->sock and the current socket connection is not same. This can happen for example during key agreement when the conn includes multiple socket connections (listeners). Affected file lib/silcclient/client.c. * The sender of the file transfer request now provides also the pointer (listener) for the key exchange protocol. If the listener cannot be created then it sends empty key agreement and lets the receiver provide the listener. Added `local_ip' and `local_port' arguments to the silc_client_file_send. If they are provided they are used, if not then it will attempt to find local IP address, if not found or bind fails then the remote client will provide the listener. Affected files are lib/silcclient/client_ftp.c and lib/silcclient/silcapi.h. * Extended the FILE SEND command to support defining the local IP and port for key exchange listener. They are optional. Affected file irssi/src/silc/core/silc-servers.c. Thu Nov 1 22:10:07 EST 2001 Pekka Riikonen * Defined to WHOIS command reply the sending of fingerprint of the client's public key (if the proof of posession of the corresponding private key is verified by the server). Updated to the protocol specification. * Added support of receiving the client's public key's fingerprint in command reply in client library. Affected file is lib/silcclient/command_reply.c, and lib/silcclient/idlist.[ch]. Thu Nov 1 18:06:12 EST 2001 Pekka Riikonen * Do not send over 128 chars long nickname to the server in NICK command. Affected file lib/silcclient/command.c. * Do not send over 256 chars long channel names to the server in JOIN command. Affected file lib/silcclient/command.c. Tue Oct 30 22:48:59 EST 2001 Pekka Riikonen * Assure that silc_server_close_connection cannot be called twice for same socket context. Affected file is silcd/server.c. Tue Oct 30 16:58:14 EST 2001 Pekka Riikonen * Send error message to application if opening file for writing during file transfer fails. Affected file is lib/silcclient/client_ftp.c. Remove all file transfer sessions for a client that we're removing from ID cache. Affected file is lib/silcclient/client_ftp.c. * Fixed silc_net_addr2bin to return correct address. Affected file lib/silcutil/[unix/win32]/silc[unix/win32]net.c. * Fixed file transfer session removing on signoff notify. Affected file irssi/src/silc/core/silc-servers.c. * Added the SilcClientFileError to be returned in the monitor callback. Added NO_SUCH_FILE and PERMISSION_DENIED errors. Affected file lib/silcclient/silcapi.h. Mon Oct 29 17:43:04 EST 2001 Pekka Riikonen * Fixed a crash in silc_client_ftp_free_sessions and silc_client_ftp_session_free_client. Affected file lib/silcclient/client_ftp.c. * Added `disabled' field in the SilcChannelEntry in the server to indicate if the server entry is disabled. Affected file silcd/idlist.h, silcd/command[_reply].c. * SILC server adds now /var/run/silcd.pid everytime it is started. Affected file silcd/silcd.c. * Added silc_server_packet_send_clients to send a packet to the provided table of client entries. Affected file silcd/packet_send.[ch]. * Fixed a crash in client resolving in client_prvmsg.c in client library. Affected file lib/silcclient/client_prvmsg.c. * Do not actually remove the client directly from ID cache during SERVER_SIGNOFF, but invalidate it. This way we preserve the WHOWAS info for the client. Affected file silcd/server_util.c. * Fixed SERVER_SIGNOFF notify handling in the server. The server is now able to process incoming SERVER_SIGNOFF notify for a server that it doesn't even know about. It will remove the clients provided in the notify. Affected file silcd/packet_receive.c. * Check for partial packet in data queue after every packet that was found from the queue. Return and wait for more data if there is partial data in queue. Affected file is lib/silccore/silcpacket.c. Sun Oct 28 18:46:27 EST 2001 Pekka Riikonen * Added SilcClietFileError enum to indicate error in file transfer. Added SILC_CLIENT_FILE_MONITOR_KEY_AGREEMENT and SILC_CLIENT_FILE_MONITOR_ERROR new monitor statuses. Affected files lib/silcclient/silcapi.h and lib/silcclient/client_ftp.c. * Check that newsize in silc_buffer_realloc is larger than the old buffer's size. Affected file lib/silcutil/silcbufutil.h. * Added better monitor of file transfers. It now monitors key agreement protocol during the file transfer too. Added error reporting too. Affected files irssi/src/silc/core/silc-servers.c, irssi/src/fe-common/silc/module-formats.[ch]. * Wrote a help file for FILE command. * Added silc_rng_global_get_byte_fast to get not-so-secure random data as fast as possible. Random data is read from /dev/urandom if available and from the SILC RNG if not available. It is used in padding generation. Affected file lib/silccrypt/silcrng.[ch]. * All packets in client library are now processed synchronously. Optimized packet processing a lot. Affected file lib/silcclient/client.c. * All server connection packets are processing synchronously now in server, to optimize packet processing. Affected file silcd/server.c. * Include files are installed now only in Toolkit distribution if make install is given. Affected files: all Makefile.am's. Thu Oct 25 22:44:06 EDT 2001 Pekka Riikonen * Assure that silc_client_notify_by_server_resolve does not resolve the client information multiple times. If it cannot be found by the first it cannot be found at all. Affected file lib/silcclient/client_notify.c. * Fixed WHOWAS command reply calling. Affected file lib/silcclient/command_reply.c. * Removed all references to silc_idlist_get_client from the Irssi SILC client since that call is internal call used by the library. The Irssi SILC client will use now client retrieval functions found in silcapi.h. * Fixed a bug in resolving nickname info before sending private message. It used freed memory. Affected file irssi/src/silc/core/silc-servers.c. Thu Oct 25 19:04:49 EDT 2001 Pekka Riikonen * Assure my_channels statistics cannot go negative in server. Affected files silcd/server.c, silcd/server_util.c. Wed Oct 24 19:53:05 EDT 2001 Pekka Riikonen * Upgraded dotconf 1.0.2 to 1.0.6 in lib/dotconf. Tue Oct 23 13:51:19 EEST 2001 Pekka Riikonen * Win32 Toolkit changes. Affected files win32/silc.dsw, win32/libsilc/libsilc.def, win32/libsilcclient/libsilc.def, lib/silcutil/silcutil.c, and lib/sftp/sftp_fs_memory.c. Mon Oct 22 16:35:05 EDT 2001 Pekka Riikonen * Added silc_net_localip to return local host's IP address. Affected file lib/silcutil/silcnet.[ch]. * If key exchange or rekey protocol is active for a connection parse all packets syncronously since there might be packets in packet queue that we are not able to process without first processing packets before them. Affected file silcd/server, lib/silcclient/client.c. * SilcPacketParserCallback now returns TRUE or FALSE to indicate whether library should continue processing the packet. Affected file lib/silccore/silcpacket.h. * Added SilcSFTPMonitor callback, SilcSFTPMonitors and SilcSFTPMonitorData to SFTP server to monitor various SFTP client requests. Affected file lib/silcsftp/silcsftp.h, lib/silcsftp/sftp_server.c. * Added silc_file_size to return file size. Affected file lib/silcutil/silcutil.[ch]. * Implemented the file transfer support for the client library. Added preliminary support for simple client to client one-file transmission. Affected file lib/silcclient/client_ftp.c, lib/silccilent/client.[ch]. * Added new local command FILE to the Irssi SILC Client. It is used to perform the file transfer. It has subcommands SEND, RECEIVE, SHOW and CLOSE. Affected files irssi/src/silc/core/client_ops.c, irssi/src/silc/core/silc-server.[ch]. Mon Oct 22 12:50:08 EDT 2001 Pekka Riikonen * Relay the SILC_PACKET_FTP in the server. Affected files silcd/server.c and silcd/packet_receive.c. Sun Oct 21 20:21:02 EDT 2001 Pekka Riikonen * Renamed silc_file_read and silc_file_write to functions silc_file_readfile and silc_file_writefile. Added function silc_file_open and silc_file_close. Affected files lib/silcutil/silcutil.[ch]. Thu Oct 18 20:58:13 EDT 2001 Pekka Riikonen * Resolve the client info when received private message or channel message for a client which nickname we don't know. Affected files lib/silcclient/client_prvmsg.c and lib/silcclient/client_channel.c. * Do not crash in /KEY if client is not connected. Affected file irssi/src/silc/core/silc-channels.c. * Added SilcClientStatus field to the SilcClientEntry in the lib/silcclient/idlist.h. Added SILC_CLIENT_STATUS_RESOLVING to mark that the entry is incomplete and is being resolved, it won't be resolved twice. Make sure also that USERS command reply does not resolve twice information. Affected file is lib/silcclient/command_reply.c. Make sure that silc_client_get_clients_by_list does not resolve twice same information. * Check for valid client->id in the silc_server_free_client_data. Affected file silcd/server.c. * Fixed /GETKEY nick@server not to crash if the server entry is not found. Affected file lib/silcclient/command.c. * Fixed the silc_server_check_cmode_rights to check the requested modes correctly. Affected file silcd/command.c. Thu Oct 18 12:10:22 CEST 2001 Pekka Riikonen * Better checks for non-printable chars in nick added. Affected file silcd/command.c. Thu Oct 18 09:18:58 EDT 2001 Pekka Riikonen * Call the silc_server_udpate_servers_by_server in the primary router that comes back online in the backup resuming protocol. Otherwise it routes packets wrong. Affected file silcd/server_util.[ch], silcd/server_backup.c. Wed Oct 17 16:51:18 EDT 2001 Pekka Riikonen * Added SILC_STR_UI8_[N]STRING[_ALLOC] formats to the lib/silcutil/silcbuffmt.[ch]. * Redefined the SILC packet header to include the padding length. Affected file lib/silccore/silcpacket.[ch]. * Added SILC_PACKET_PADLEN_MAX macro to return the padding length for maximum padding up to 128 bytes). Affected file lib/silccore/silcpacket.h. * Removed all backwards support for old 0.5.x MAC thingies. The SILC packet header change makes it impossible to be backwards compatible. * Send the ENDING packet with timeout in the backup resuming protocol. This is to assure that all routers has connected to the primary router. Affected file silcd/server_backup.c. * Changed the RNG to take the first IV from random data. It used to take it from zero actually. Changed the RNG also to use /dev/urandom during session. /dev/random is used in initialization. Affected file lib/silccrypt/silcrng.[ch]. Tue Oct 16 20:45:49 EDT 2001 Pekka Riikonen * Changed the SILC packet header to have the first two bytes (the packet length) encrypted. Affected files aroung the code tree, lib/silccore/silcpacket.[ch]. Removed the SilcPacketCheckDecrypt callback. It is not needed anymore since the silc_packet_receive_process will determine now whether the packet is normal or special. * Implemented the unidirectional MAC keys. Affected files lib/silcske/silcske.c, silcd/protocol.c and lib/silcclient/protocol.c. * Implemented the packet sequence number to the MAC computation. Affected files lib/silccore/silcpacket.c, silcd/protocol.c, silcd/packet_send.c, silcd/server.c, lib/silcclient/client.c, lib/silcclient/protocol.c. Mon Oct 15 17:42:55 EDT 2001 Pekka Riikonen * Allow backup router to announce servers. All servers announced by backup router are added to the global list automatically. Update hte server's socket to our primary router also when backup router announces a server. Affected file silcd/packet_receive.c. * Do not update the client->router in the function silc_server_udpate_clients_by_server if the client is on global list. We might fail to find any specific server for locally connected clients and local cell clients. They should still use the `from' and not `to' as client->router. This fixes backup router resuming protocol. Affected file silcd/server_util.c. * Decrease channel statistics count only if the channel deletion worked. Affected files are silcd/server.c and silcd/server_util.c. * Added silc_server_update_servers_by_server to update origin of all server entries. Used during backup router protocol. Affected files silcd/server_util.[ch], silcd/server.c. and silcd/backup_router.c. * ROBODoc documented the lib/silccrypt/silchmac.h. Added new function silc_hmac_init, silc_hmac_update, silc_hmac_final, silc_hmac_get_hash and silc_hmac_get_name. Affected file lib/silccrypt/silchmac.c. Sun Oct 14 18:28:22 EDT 2001 Pekka Riikonen * Assure that router cannot reroute the same channel message to the sender. Affected file silcd/packet_receive.c. Sat Oct 13 12:46:18 EDT 2001 Pekka Riikonen * Made better checks that the channel message is not sent to the router it came from. Affected file is silcd/packet_send.c. Fixed memory leak too. * Announce informations for incoming router connection, but only after checking if it is replaced by backup router. Affected file silcd/packet_receive.c. Fri Oct 12 18:37:24 EDT 2001 Pekka Riikonen * Fixed the backup resuming protocol to work in multiple router environment. Affected file silcd/server_backup.c. * Route packet only to one router in the function silc_server_packet_send_to_channel. Affected file is silcd/packet_send.c. * Fixed silc_server_send_notify_dest to set the broadcast flag. Fixed the silc_server_send_notify_topic to actually send the TOPIC_CHANGE notify and not SERVER_SIGNOFF notify. Affected file silcd/packet_send.c. * Changed the SFTP Filesystem interface. Changed the SilcSFTPFilesystemStruct to SilcSFTPFilesystemOps to include the filesystem operation function. The SilcSFTPFilesystem is now a context that is allocated by all filesystem allocation functions and it already includes the operations structure and filesystem specific context. It is given as argument now to the silc_sftp_server_start. This made the interface a bit cleaner. Affected file lib/silcsftp/silcsftp[_fs].h, lib/silcsftp/sftp_fs_memory.c and sftp_server.c. Thu Oct 11 22:19:26 EDT 2001 Pekka Riikonen * Changed the backup router adding and getting interfaces in the server. The router that will be replaced by the specified backup router is now sent as argument. Affected files silcd/serverconfig.[ch], silcd/backup_router.[ch], and silcd/server.c. * Added silc_net_addr2bin_ne to return the binary form of the IP address in network byte order. Affected files lib/silcutil/[unix/win32].silc[unix/win32]net.[ch]. Thu Oct 11 12:14:19 EDT 2001 Pekka Riikonen * Check for existing server ID in silc_server_new_server and in silc_server_connect_to_router_final and remove the old entry if it exists. Affected file silcd/packet_receive.c, silcd/server.c. * Send the channel message always to only one router, either in upstream or downstream. Affected file is silcd/packet_send.c. Tue Oct 9 17:45:43 EDT 2001 Pekka Riikonen * Wrote the definition of the backup resuming protocol to the protocol specification. * Removed one redundant channel key generation from normal server during joining procedure. Removed one redundant channel key sending from server to router during joining procedure. Affected file silcd/command.c. * Made minor bugfixes to the backup router resuming protocol. Affected file silcd/server_backup.c, server.c. Mon Oct 8 16:47:42 EDT 2001 Pekka Riikonen * Added --disable-asm configuration option. Affected files configure.in.pre, lib/silcmath/mpi/configure.in. A patch by salo. * Implemented the backup resuming protocol that is used to resume the primary router position in the cell after the primary router comes back online. Affected files silcd/server_backup.[ch], silcd/server, silcd/packet_receive.c, and silcd/server_util.[ch]. Sun Oct 7 12:29:25 EDT 2001 Pekka Riikonen * 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 * 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 * Created SFTP client and server test programs in the lib/silcsftp/tests directory. Wed Oct 3 23:31:42 EDT 2001 Pekka Riikonen * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * Fixed the configure.in.pre and the compilation and distribution environment to support the new autoconf 2.52. That version is now required to compile the CVS trunk. Thu Sep 6 12:47:37 EEST 2001 Pekka Riikonen * Renamed function silc_parse_nickname to silc_parse_userfqdn to generally parse user@fqdn format strings. Affected file lib/silcutil/silcutil.c. * Added nickname_format and nickname_force_format fields to the SilcClientParams structure. The first one defines the format for the nicknames that the library will enforce if the receives multiple same nicknames. The second one is boolean value and can be used to force the library to always enforce the format to the nicknames regardles whether there are multiple nicknames or not. This configurable formatting was employed to flexibly support accessing multiple nicknames from the user interface. The userinterface can now set the nicknames to what ever format they prefer. Affected file lib/silcclient/silcapi.h. Added function silc_client_nickname_format to the file lib/silcclient/idlist.c. It performs the nickname formatting. Added new field `hostname´ to the SilcClientEntry context. It holds the hostname of the client. Affected file is lib/silcclient/idlist.h. * Irssi SILC Client sets the nicknames in nick@hostn format. Fe. priikone@otaku, priikone@otaku2 etc. Affected file irssi/src/silc/core/silc-core.c. The WHOIS printing now also shows both the real nickname and the formatted nickname so that user knows how to access the user if there are multiple same nicknames cached. Affected file irssi/src/silc/core/client_ops.c. Changed the WHOIS printing formatting too to take the hostname now as a separate argument. The Affected file is irssi/src/fe-common/silc/modules-formats.[ch]. * Changed the silc_client_get_clients_local to accept the formatted nickname as argument. It accepts the real nickname too but the formatted nickname can be used to find the true entry from multiple entries. Affected file lib/silcclient/silcapi.h and lib/silcclient/idlist.c. * Added nickname_format_parse field to the SilcClientParams. It is a callback function provided by the application to parse the nickname out of the formatted nickname string. The library calls it to get the nickname from the formatted string. Since the application generally knows better the format of the nickname string it parses it instead of the library, even though library encodes the formatted string. If the callback function is not provided then the library will use the string as is. The affected file is lib/silcclient/silcapi.h. * All the nickname strings passed to the client library in commands are now expected to be formatted nickname strings. If the command does not support the formatted nickname string it will assume that the sent string is the actual nickname. Affected file lib/silcclient/command.c. Tue Sep 4 22:31:28 EEST 2001 Pekka Riikonen * Added public key authentication support to OPER and SILCOPER commands in the client library. Affected file is lib/silcclient/command.c. Tue Sep 4 12:39:17 EEST 2001 Pekka Riikonen * Changed the get_auth_methdod client operation to be asynchronous. It can be async if the application resolves the authentication method from the server during the negotiation. Added new SilcGetAuthMeth completion callback that the application will call after resolving the authentication method. Added function silc_client_request_authentication_method that the application can use to resolve the authentication method from the server. Added also SilcConnectionAuthRequest callback that the library will call after the server has replied. The application can call this function if it does not know the current authentication method. Affected files are lib/silcclient/client.c and lib/silcclient/silcapi.h. * The Irssi SILC client now automatically resolves the authentication method incase any configuration information is not present (and currently there never is). The affected file is irssi/src/silc/core/client_ops.c. * Fixed public key authentication from the client library. Affected file lib/silcclient/protocol.c. Changed also the protocol specification about the public key authentication in the connection authentication protocol. The actual data to be signed is now computed with a hash function before signing. * Fixed the public key authentication from the server as well. Affected file silcd/protocol.c. * Removed the mlock()'s from the memory allocation routines. Affected file lib/silcutil/silcmemory.c. The ./configure does not check anymore for the mlock(). Affected file is configure.in.pre. * Fixed USERS command in server to allow the execution of the command for private and secret channels if the client sending the command is on the channel. Affected file silcd/command.c. * Fixed silc_client_get_clients_local to return the clients count correctly. It could return wrong value. Affected file lib/silcclient/idlist.c. Mon Sep 3 20:09:59 EEST 2001 Pekka Riikonen * Fixed the lib/silcmath/mpi/mpi.h to always use 32-bit data types. The assembler optimizations seemed not to like 64-bit data types. The assmebler optimizations thus are now enabled also for BSD systems as opposed to only enable them for Linux. * Do not check for threads at all on BSD systems. Affected file configure.in.pre. * Removed -n and -h options from the Irssi SILC Client since they are not used in silc. * Fixed the prime generation to assure that the first digit of the generated random number is not zero since our conversion routines does not like number strings that starts with zero digit. If zero digit is seen the random number is regenerated. This caused some corrupted RSA keys when the zero first digit was met. Affected file lib/silcmath/silcprimegen.c. Sun Sep 2 17:17:24 EEST 2001 Pekka Riikonen * Fixed WIN32 configuration in the ./configure script. Fixed to include xti.h on environments that has it. Patches by Carsten Ilchmann and andrew. Sat Sep 1 00:29:33 EEST 2001 Pekka Riikonen * Changed the silc_id_create_client_id to be collision resistant. It is now assured that there cannot be created two same client ID's. I suspect that some weird bugs in the server were actually caused by duplicate Client IDs. Affected file silcd/serverid.[ch]. A router receiving new ID now also assures and informs the sending server if the ID caused collision. * Changed the silc_id_create_channel_id to also assure that there are no collisions. Wed Aug 29 17:55:01 EEST 2001 Pekka Riikonen * Statement about ignoring the Mutual Authentication flag when performing rekey with PFS was a bit misleading. It is ignored if it was set in the initial negotiation, it cannot be even set in the rekey. Fixed in the ke-auth draft. Started the new versions of the protocol drafts in the doc/. Sun Aug 26 14:59:15 EEST 2001 Pekka Riikonen * Fixed a bug in silc_client_command_identify_save when saving new channel information. The channel name was no duplicated and caused crash on exit. Affected file is lib/silcclient/command_reply.c. Fri Aug 17 23:07:45 EEST 2001 Pekka Riikonen * Fixed the getkey command handling in the server. Send just empty OK reply to the sender if the key could not be fetched (but everything else was ok, like the key just was not available). Changed the public key parameter to optional in the protocol specs so that empty OK reply can be sent. Affected file silcd/command.c. Added a message to Irssi SILC client to tell to user if the server did not return a public key. Tue Aug 14 07:29:27 CEST 2001 Pekka Riikonen * Fixed a channel key regeneration bug. It registered new timeout tasks exponentially until all system resources were used. Affected file silcd/server.c. Sun Aug 12 20:48:14 EEST 2001 Pekka Riikonen * Added the SILC Document generator to the scripts/silcdoc. It can be used to generate the Toolkit Reference Manual out of the source tree. Internally it will also use the RoboDoc generator now imported in util/robodoc. Sun Aug 12 12:28:17 EEST 2001 Pekka Riikonen * Added couple of return's in rekey protocol if error orccurred during the protocol. The execution must be terminated. Affected file silcd/protocol.c. Also, terminate the protocol always with timeout. Sat Aug 11 12:36:02 EEST 2001 Pekka Riikonen * The client's Client ID was created initally from the wrong nickname (it could have been in format nick@host) in the silc_server_new_client. Affected file silcd/packet_receive.c Sat Aug 11 00:29:57 EEST 2001 Pekka Riikonen * Added some SILC_LOG_ERROR's to various error conditions if client could not be added to ID cache. Affected files silcd/packet_receive.c and silcd/server.c. * When client's sock->user_data is freed, NULL also the client->router and client->connection pointers. Added check for these pointers being NULL to various places around the code. Affected file silcd/server.c. * Added client->data.registered == TRUE checks to various places around the code to assure that unregistered client's are not handled when it is not allowed. Affected file silcd/server.c. * Added `bool registered' fields to all silc_idlist_[server|client]_get_* routines to indicate whether the fetched client needs to be registered or not. Affected file silcd/idlist.[ch]. * Add your own entry as registered to the ID cache in the server. Affected file server.c. * Fixed a bug in silc_server_new_server. The SilcServer was set as the new server's context instead of SilcServerEntry. This naturally caused some weird bugs. * Added "updated" field the SilcChannelEntry which indicates the time since the channel entry was last accessed. This can be used to determine whether it is necessary to announce the channel after backup resuming protocol. Affected files silcd/idlist.[ch]. Thu Aug 9 18:28:37 EEST 2001 Pekka Riikonen * Do not delete the channel rekey task when adding it for in silc_server_create_channel_key. * Changed the silc_server_create_channel_key to return TRUE or FALSE to indicate the success of the channel key creation. Thu Jul 26 11:32:31 EEST 2001 Pekka Riikonen * Fixed MSVC++ project files and added missing files to Makefiles under win32/. Wed Jul 25 18:43:54 EEST 2001 Pekka Riikonen * Do not add TCP_NODELAY flag if the operating system does not have it defined. Affected files are lib/silcutil/[unix/win32]/silc[unix/win32]net.c. * Fixed buffer overflow from Irssi SILC Client. Affected file irssi/src/fe-common/core/themes.c. * Fixed double free in client library in the file lib/silcclient/client.c when disconnecting from server. * Applied double free patch from cras to Irssi SILC client. Affected files irssi/src/core/[modules/expandos].c * Fixed the disconnection handling to Irssi SILC Client. The application must call silc_client_close_connection in ops->connect client operation in case of failure of the connection. Affected file is irssi/src/silc/core/client_ops.c. * Do not set sock->protocol to NULL in the function silc_client_close_connection after executing the protocol's final callback since the sock might not be valid anymore. Affected file lib/silcclient/client.c. Wed Jul 25 16:04:35 EEST 2001 Pekka Riikonen * Do not enable SILC_THREADS if the linking with libpthread did not happen. Affected file configure.in.pre. * Added notion to protocol specification that server must verify the sent authentication payload with CMODE when setting the channel founder key. Implemented it to the server. Affected file silcd/command.c. Mon Jul 23 18:31:43 EEST 2001 Pekka Riikonen * Added _EXTRA_DIST SILC distribution variable to the distributions file. It is used to conditionally add extra files or directories to the specific distribution. Affected files ./prepare, Makefile.am.pre and distributions. Removed the `_' from the start of the distribution names. It is redundant. * Added README.WIN32 for instructions to compile the Toolkit under WIN32. Mon Jul 23 10:12:37 EEST 2001 Pekka Riikonen * Fixed a double free in disconnection in the server. Affected file is silcd/server.c. * Fixed the lib/silcske/groups.c to work now also with GMP MP library. The string conversion did not work when using specific base and the base is indicated in the string as well. * Created win32/ directory which now includes MSVC++ specific stuff so that toolkit (DLLs) may be compiled with MSVC++. It will appear only in the toolkit distribution Sun Jul 22 19:40:30 EEST 2001 Pekka Riikonen * Changed the key material distribution function in case when the hash output is too short. The data is now concatenated a bit differently than it used to. Made the change to the SKE protocol specification. * Added better GMP detection to configure.in.pre. A patch by salo. Fri Jul 20 13:16:00 EEST 2001 Pekka Riikonen * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * /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 * 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 * 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 * Do not add regex.h for WIN32. The affected file includes/silcincludes.h. * Added WIN32 DLL generation to lib/Makefile.am.pre. It might not work yet 100%. It generates the DLL's automatically when compiling with --with-win32 under cygwin. Sun Jun 24 19:49:23 EEST 2001 Pekka Riikonen * lib/contrib/regex.c is not compiled on WIN32. * Added silc_net_get_socket_opt function to the lib/silcutil/silcnet.h. * Added includes/silcwin32.h for WIN32 specific includes and definitions. * Do not use ptime structure or any of the posix process functions on WIN32 in lib/silccrypt/silrng.c. * Added silc_gettimeofday to provide generic function for struct timeval on all platforms. Added the function to lib/silcutil/silcutil.h. Sun Jun 24 12:19:52 EEST 2001 Pekka Riikonen * Moved the lib/silccore/silcsockconn.[ch] to the utility library as they clearly belong there. As a plus side we can make the actual socket connection routines platform specific. Added also new generic function silc_socket_read and silc_socket_write (that used to be silc_packet_[read/write]. The implementation of these are platform specific. * Added WIN32 specific routines of silc_socket_[read/write] to lib/silcutil/win32/silcwin32sockconn.c. Sat Jun 23 16:01:00 EEST 2001 Pekka Riikonen * Added preliminary support for native WIN32 compilation under cygwin (using the -mno-cygwin option for GCC) to the ./configure.in.pre. The --with-win32 now prepares the compilation for native WIN32. * Rewrote the SILC Scheduler interface in the file lib/silcutil/silcschedule.h. The scheduler is now context based and does not have anymore any global static scheduler. Moved the Unix scheduler to the lib/silcutil/unix/ directory and created lib/silcutil/win32 directory for WIN32 based scheduler. * Added Unix specific network routines to the lib/silcutil/unix/silcunixnet.c and the old lib/silcutil/silcnet.c includes now only generic routines. Added WIN32 specific network routines to the lib/silcutil/win32/silcwin32net.c. * Added Unix specific utility functions from the lib/silcutil/silcutil.c to lib/silcutil/unix/silcunixutil.c. * Added WIN32 SILC Scheduler to the file lib/silcutil/win32/silcwin32schedule.c. The code is of course untested. Fri Jun 22 10:44:14 EEST 2001 Pekka Riikonen * Do not handle JOIN notify in the server if the target client is not registered (idata->registered == FALSE). The affected file is silcd/packet_receive.c. * Update the nickrec->founder in event_cumode in the Irssi SILC client. Affected file irssi/src/silc/core/silc-channels.c. * Fixed the CUMODE_CHANGE notify handling in the server when server and router are announcing their clients on channels. Now the mode changes are saved and notified correctly. The affected file is /silcd/packet_receive.c. * Fixed silc_idlit_replace_[server/client/channel]_id functions. They really did not replace the cache entry in the ID Cache. Now they do that. Affected file silcd/idlist.c. * Fixed the KICK notify handling in the Irssi SILC client to update the channel records so that the kicked client does not appear to be on the channel. The affected file is irssi/src/silc/core/silc-channels.c. * Always update the conn->current_channel when executing command on a channel. Affected file irssi/src/silc/core/silc-servers.c. * Fixed the KILL notify handling in Irssi SILC client to remove the killed client on all channels. Thu Jun 21 17:10:08 CEST 2001 Pekka Riikonen * 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]. * Resolve the client entry information in the function silc_client_channel_message to assure that NULL pointer is not passed as client entry to the application. */ * Fixed the task timeout calculation to assure that there is never negative timeouts. The affected file is lib/silcutil/silcschedule.c. * Fixed the channel user mode notification sending in server. It was sent point-to-point to the router (or to server by router) but it needs to be destined to a channel. The routines now supports sending the channel user mode notifys to the channels when announcing clients and channels. Affected files are silcd/server.c and silcd/packet_receive.c. * Fixed the CHANNEL_CHANGE notify handling in the client libary. It did not actually replace the old channel entry in the cache. Affected file lib/silcclient/client_notify.c. Tue Jun 19 22:10:36 EEST 2001 Pekka Riikonen * 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 * make install generates new server keys only if there is not keys already. Mon Jun 18 18:49:07 EEST 2001 Pekka Riikonen * 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 * 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 * Fixed GETKEY crash, it crashed if the command did not succseed. Tue Jun 12 21:36:18 EEST 2001 Pekka Riikonen * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * Fixed silc_xxx_get_supported to not crash at some circumstances. Sun May 20 13:45:58 EEST 2001 Pekka Riikonen * 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 * 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 * 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 * 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 * 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 * 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 * 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 * Implemented a collision resistant hash table into the lib/silcutil/silchashtable[ch]. See the header and the source for the SilcHashTable API. Tue May 15 22:05:46 EEST 2001 Pekka Riikonen * Merged dotconf version 1.0.2 into lib/dotconf. Sun May 13 19:32:09 EEST 2001 Pekka Riikonen * Do not compile anything in lib/silcsim/* if the SIM support is not enabled. The tree should now compile without problems under cygwin. Thu May 10 22:49:51 EEST 2001 Pekka Riikonen * Compiled the SILC under cygwin. Compiled and tested briefly without problems. More tests needed. The SIMs didn't compile though. * Added various #ifdef HAVE_* stuff to lib/silccrypt/silrng.c. * Fixed possible crash in silc_get_username in the lib/silcutil/silcutil.c. Tue May 8 09:04:03 EEST 2001 Pekka Riikonen * Fixed a va_arg in silc/client_ops.c. * Oops, RC5 routines were named AES and caused some problems when not using SIM's. Affected file lib/silccrypt/rc5.c. Sun May 6 13:59:48 EEST 2001 Pekka Riikonen * Added new SilcIDIP structure into the lib/silccore/id.h and replaced the old `ip' fields from all SILC ID's to that type. This is a step towards IPv6 support. The silc_id_get_len takes now the ID as an extra argument. The silc_id_id2str, silc_id_str2id and silc_id_dup now supports both IPv4 and IPv6 based ID's. The affected files are lib/silccore/id.[ch] and other files around the tree using these routines. * Removed the ID length arguments in server from various silc_server_send_notify_* routines -> they are not needed anymore. Sat May 5 13:56:33 EEST 2001 Pekka Riikonen * Fixed memory leak in silc_encode_pem_file in the file lib/silcutil/silcutil.c. Thu May 3 21:23:50 EEST 2001 Pekka Riikonen * Check minor version as well in the SKE. Affected files are silcd/protocol.c and lib/silcclient/protocol.c. * Added --identifier option to the server so that an identifier can be when creating the public key for the server. Affected file is silcd/silcd.c. * Fixed minor decoding bug in silc_pkcs_decode_identifier in lib/silccrypt/silcpkcs.c. Wed May 2 20:50:49 EEST 2001 Pekka Riikonen * Register default ciphers and stuff when using -C option with the server. Affected file sildc/silcd.c. * Put back the servers public key filename format, it is better than the new one. For now, the client keys are saved with the new filename format. The affected file silc/client_ops.c. * Implemented the Cipher API for the rest of the ciphers that did not implement it or implemented it the wrong way. Wed May 2 13:31:26 EEST 2001 Pekka Riikonen * Register default ciphers and stuff when using the -S option in the client. Affected file silc/silc.c. Same also when creating new key pair with -C option. Tue May 1 14:18:13 EEST 2001 Pekka Riikonen * Fixed the silc_verify_public_key client operation function to save the public keys differently. The fingerprint is now used as filename and not the hostname. This way also the client keys are saved uniquely and not with hostnames. The affected file is silc/client_ops.c. * Trimmed the silc_hash_fingerprint function to remove extra whitespaces from the end of the fingerprint. The affected file is lib/silccrypt/silchash.c. * Updated TODO. * Added silc_cipher_register_default function to register all default ciphers. It can be used when configuration files does not exist and the application does not want any specific ciphers in any specific order. The SilcDList is now used as silc_cipher_list dynamically allocated cipher list. Removed the static list all together and now all ciphers must be allocated to the dynamic list. The silc_cipher_alloc routine was changed to check only the dynamic list. All silc_cipher_* routines that used to return int returns now bool. The affected files lib/silccrypt/silccrypt.[ch]. * The same thing was done to silc_hash_* as for silc_cipher_* routines. Affected files lib/silccrypt/silchash.[ch]. * The same thing was done to silc_pkcs_* as for silc_cipher_* routines. Affected files lib/silccrypt/silcpkcs.[ch]. Added also silc_pkcs_[un]register[_default] functions. Removed the data_context from the PKCS API. * Added silc_hmac_register_default function to register default hmacs. Affected files lib/silccrypt/silchmac.[ch]. Added also SILC_ALL_HMACS macro that can be used with silc_hmac_unregister to unregister all hmacs at once. * Register the default ciphers, hash functions, PKCSs and HMACs if client's configuration file does not exist. The affected file silc/silc.c. * The client did not load the hash functions from the SIM modules at all. Added support for this. Affected file is silc/clientconfig.c. * When decoding public key with silc_pkcs_public_key_decode, check the supported algorithm only if PKCS are registered. Affected file lib/silccrypt/silcpkcs.c. The same was done with the silc_pkcs_private_key_decode. * Fixed the SILC List routines to keep the list always in order. It used to change the list's order when traversing the list but not it preserves the order. Affected file lib/trq/silclist.h. Mon Apr 30 17:29:03 EEST 2001 Pekka Riikonen * Added the client library to use the SilcSocketConnection's reference counter (by silc_socket_dup) to prevent the bug that the socket object may be freed underneath async operation. * The name resolv library checking fixes in the configure.in.pre. The patch by salo. * Created new version of the protocol drafts for future development. The -03 drafts are the ones that will be changed in the trunk now and the -02 will remain as they are. * Send list of CUMODE notifys to the router when announcing the channel users to the router. Affected file silcd/server.c. If the router receiving channel founder CUMODE for a channel that already has channel founder it will send CUMODE notify to the sender to remove the channel founder rights from the announced client. Affected file silcd/packet_receive.c. * The CUMODE notify may now use Server ID as well as the entity who changes the mode. Updated protocool specs. * Updated INSTALL and README files. Sun Apr 29 23:17:50 EEST 2001 Pekka Riikonen * New web pages in the http://silc.pspt.fi. The pages was designed by salo. * Updated CREDITS. Sun Apr 29 13:33:41 EEST 2001 Pekka Riikonen * Implemented the [DenyConnectin] config section in the server. Added silc_server_config_denied_conn to check whether incoming connection is denied. Affected file silcd/serverconfig.[ch]. * Do not check the ports when checking the incoming configuration data if the port is 0, meaning any. Affected file is silcd/serverconfig.c. Fri Apr 20 18:58:43 EEST 2001 Pekka Riikonen * Fixed buffer overflow in silc_string_compare in the file lib/silcutil/silcutil.c. * Fixed double free in silc_server_command_leave in the file silcd/command.c. Fri Apr 20 14:00:11 EEST 2001 Pekka Riikonen * Fixed the version checking in the server. Affected file is silcd/protocol.c. Thu Apr 19 19:52:46 EEST 2001 Pekka Riikonen * Fixed the configuration data fetching when accepting new connections in the server. Affected file silcd/server.c. Thu Apr 19 11:40:20 EEST 2001 Pekka Riikonen * Added `sender_entry' argument to the function silc_server_packet_relay_to_channel so that we can check whether some destination actually belongs to the same route the sender belongs (ie, we must not resend the packet to the sender). Affected file silcd/packet_send.[ch]. * Added `servername' field to the SilcClientEntry in the server to hold the name of the server where client is from. Affected file is silcd/idlist.h. Wed Apr 18 22:19:03 EEST 2001 Pekka Riikonen * Moved the channel message encrypting in the router betwen router connections from silc_server_channel_message to the silc_server_packet_relay_to_channel since we want to check whether we have anybody channel before encrypting anything. Affected files silcd/packet_[receive/send].c. Tue Apr 17 21:18:19 EEST 2001 Pekka Riikonen * Fixed the [AdminConnection] server config section to support multiple entries. Affected file silcd/serverconfig.c. * Added support into the server to check the validity of the incoming connection before executing any KE or authentication protocols. * The connection configuration is now saved to the KE and connection auth protocol contexts and not fetched anymore in the protocol. Affected files silcd/server.c, silcd/protocol.[ch]. * The local hosts listenning address and port is also resolved now when starting the server. We want to have the socket object to include the real address and port for the listener. Added new function silc_net_check_local_by_sock into the files lib/silcutil/silcnet.[ch]. * Fixed a broadcast bug in server -> do not broadcast if we are standalone. * Fixed a routing bug. Do not route broadcast packets ever. Broadcast packets must be processed always and not routed since they may be destined to some other host than yourself and thus would get routed without no good reason. Affected file is silcd/server.c. * Added function silc_server_config_is_primary_route to check whether primary router connection has been configured (a router configuration that we are initiating). If there is not, we will assume that there is only two routers in the SILC network and we will use the incoming router connection as our primary route. Affected files silcd/serverconfig.[ch], silcd/server.c. * Changed the order of the broadcasting. Broadcast _after_ the packet has been processed not before. Affected file is silcd/server.c. * Fixed a [ClientConnection] parsing bug. The port was never parsed correctly thus resulting to port 0. Affected file silcd/serverconfig.c. * Fixed silc_server_send_notify_args -> it ignored the `broadcast' argument and did not set the broadcast packet flag. Affected file silcd/packet_send.c. Fixed same bug in the function silc_server_send_notify as well. * If we receive NEW_ID packet for our own ID in the server, ignore the packet. Mon Apr 16 12:10:33 EEST 2001 Pekka Riikonen * Updated TODO. * Removed the nickname from the Private Message Payload. Updated the code and the protocol specs. * Updated protocol specs for submitting to the IETF. * Tweaked the Random Number Generator a bit. Affected file lib/silccrypt/silcrng.c. Exported a new function silc_rng_[global]_add_noise which can be used to add more noise to the RNG. Sat Apr 14 16:21:32 EEST 2001 Pekka Riikonen * Do not parse packets with different timeout when protocol is active -> may cause problem with rekey. Affected file silcd/server.c. * When server receives signoff notify it must not create new channel key if the client is on any channels since the sender of the signoff notify will create it. Fri Apr 13 17:12:46 EEST 2001 Pekka Riikonen * Added printing of error messages during SKE protocol from the failure packet sent by server during SKE. Affected file silc/client_ops.c. * Removed the client's failure_callback handling with timeout and handle it immediately when received. * The SKE library returned wrong type in SUCCESS and FAILURE packets. They must be 32 bit MSB not 16 bit MSB. Fri Apr 13 00:09:08 EEST 2001 Pekka Riikonen * Ok, rewrote the logic of the re-key and now it seems to work. I tested it on high traffic with frequent re-keys without problems. Added hmac_receive (and renamed hmac to hmac_send) in SilcClientConnection in lib/silcclient/client.h and in SilcIDListData in silcd/idlist.h. Also, removed the SilcPacketParserContext's cipher and hmac fields as they are not needed anymore and actually caused some problems when the ciphers and hmac's changed underneath the packet parser. Thu Apr 12 14:42:51 EEST 2001 Pekka Riikonen * If re-key protocol is active then process the incoming packets synchronously since we must assure that icoming packets encrypted with the old key is processed before the new keys is set to use. This is true other packets than for REKEY packets. Affected file silcd/server.c. The same was done to client library as well, affected file lib/silcclient/client.c. Thu Apr 12 12:01:52 EEST 2001 Pekka Riikonen * Fixed bug in client and server to accept the force send if the packet is send from silc_[server/client]_packet_process function. Otherwise the packets are never delivered, oops. Wed Apr 11 22:10:15 EEST 2001 Pekka Riikonen * Disable force sending of packets when REKEY protocol is active. We must assure that no packet is sent directly when rekey is performed. All packets must be sent through packet queue. Added macro SILC_SERVER_IS_REKEY to silcd/server.h and SILC_CLIENT_IS_REKEY to lib/silcclient/client.h. Affected function is silc_[server/client]_packet_send_real to check the situation. * Replaced the SIM paths from example config files to /usr/local/modules. Also, make install creates now /usr/local/silc/logs directory to hold all the SILC server logs. Wed Apr 11 16:59:59 EEST 2001 Pekka Riikonen * Made the configure.in.pre work on Solaris. Patch by salo. * Made all ciphers compatible with non-x86 machines. Defined CBC mode macros into lib/silccrypt/ciphers_def.h. Tue Apr 10 20:32:44 EEST 2001 Pekka Riikonen * Fixed the make install. Tue Apr 10 16:20:34 EEST 2001 Pekka Riikonen * When MAC computation fails the silc_packet_decrypt returned 0 even though it was supposed to return -1. Fixed this. The affected file is lib/silccore/silcpacket.c. * Do not replace the config files in /etc/silc (in make install) if they already exist. Affected file ./Makefile.am. * Do not send re-key packets immediately but through packet queue. Affected file silcd/protocol.c and lib/silcclient/protocol.c. * Changed silc_net_check_host_by_sock to return FALSE if the IP/DNS could not be resolved. Though, it returns the IP address now even if it could not resolve it (but returns also FALSE). Affected file lib/silcutil/silcnet.[ch]. Mon Apr 9 21:54:44 EEST 2001 Pekka Riikonen * Added silc_pkcs_decode_identifier to decode the public key's identifier. Affected file lib/silccrypt/silpkcs.[ch]. Added also silc_pkcs_free_identifier. Added also new context SilcPublicKeyIdentifier. * Added -S option to the silc client. It is used to dump the contents of the specified public key file. * Changed the PKCS api to return the public key length when setting the public key. * Fixed a fatal bug in the public and private key file loading. Affected file lib/silccrypt/silcpkcs.c. * Execute the packet parsing for client with zero (0) timeout if the protocol is active. Affected file silcd/server.c. Sun Apr 8 19:30:56 EEST 2001 Pekka Riikonen * Made the key generation options to the silcd program. Added -C option, equivalent to client's option. * Added new [ServerKeys] config section to the server. It configures the server's public and private key. * Defined generic Public Key Payload into the protocol specification to send specific type of public keys and certificates. * Defined new command SILC_COMMAND_GETKEY to fetch a client's public key or certificate. * Implemented the GETKEY command to the server and to the client library and on user interface. Sun Apr 8 01:37:21 EEST 2001 Pekka Riikonen * Made preliminary `make install' work. Thu Apr 5 17:42:30 EEST 2001 Pekka Riikonen * Added SilcServerRekey context into silcd/idlist.h. * Added the PFS support as defined in the specification to the SKE protocol. Affected files lib/silcske/*.c. * Added `ske_group' field to the SilcServerRekey context to hold the number of the SKE group that is used with PFS in re-key. Affected file silcd/idlist.h. * Added PFS re-key support to the server. Affected file is silcd/protocol.c. * Added silc_protocol_cancel to cancel execution of the next state of the protocol. Affected file is lib/silccore/silcprotocol.[ch]. * Added the re-key support with and without PFS to the client library. Re-key is performed once in an hour, by default. Added new protocol type SILC_PROTOCOL_CLIENT_REKEY. Added silc_client_rekey_callback and silc_client_rekey_final. Affected files are lib/silcclient/protocol.[ch] and lib/silcclient/client.[ch]. * Removed the `hmac_key' and `hmac_key_len' fields from the SilcClientConnection structure; not needed. Affected file is lib/silcclient/client.h. * Updated TODO. Wed Apr 4 16:32:31 EEST 2001 Pekka Riikonen * Do not ask whether user wants to use the negotiated private key for private messages, just use it. Affected file is silc/local_command.c. * Added `send_enc_key' and `enc_key_len' fields to the SilcIDListData structure since they are needed in the re-key phase. Affected file is silcd/idlist.[ch]. * Implemented the simple re-key protocol into the server. Affected files silcd/server.c and silcd/protocol.[ch]. The re-key will be performed once in an hour, by default. Added new protocol type SILC_PROTOCOL_SERVER_REKEY. Added silc_server_rekey, silc_server_rekey_callback and silc_server_rekey_final. * Removed Tunneled flag from the protocol. Updated the code and the specifications. * Adde `pfs' field to the SilcIDListData to indicate whether the PFS is to be performed in the re-key. Affected file is silcd/idlist.h. Tue Apr 3 21:52:42 EEST 2001 Pekka Riikonen * Defined uint8, int8, uint16, int16, uint32, int32, uint64 and int64 of at least the xintXX size. If void * is less that 4 bytes uint32 * will be used. Defined bool as boolean. * Changed _ALL_ unsigned long and unsigned int to uint32, unsgined short to uint16 in the source tree. * Fixed a fatal bug in silc_server_remove_clients_by_server. Do not handle clients that has entry->data.registered == FALSE. They are not in the network anymore. Affected file is silcd/server.c. Tue Apr 3 16:39:19 EEST 2001 Pekka Riikonen * Implemented the sending of the SERVER_SIGNOFF notify in the server. Affected file is silcd/server.c. * Added silc_server_send_notify_args into silcd/packet_send.[ch]. Added also silc_notify_payload_encode_args into the lib/silccore/silcnotify.[ch]. * Implemented ther SERVER_SIGNOFF notify handling in the server. Affected file silcd/packet_receive.c. * Implemented the SERVER_SIGNOFF notify handling in the client library. Affected file lib/silcclient/client_notify.c. Also, implemnted the printing of the SERVER_SIGNOFF info to the application. Affected file silc/client_ops.c. * The silc_idlist_del_server now returns TRUE or FALSE to indicate if the deleting was successful. Affected file silcd/idlist.[ch]. * Added support for public key authentication in the connection authentication protocol in the client library. Affected file lib/silcclient/protocol.c. * Changed the server's silc_idlist_get_clients_by_* interface to support already allocated array so that new entries may be added to pre-allocated array. Affected file silcd/idlist.[ch]. This fixes some bugs with WHOIS, WHOWAS and IDENTIFY commands and command replies. * All command reply functions in the server now calls the pending command callback even if error occured. This way the error will be delivered to the client as well. Affected files silcd/command.c and silcd/command_reply.c. * Fixed INFO command to return local server's info if no server was provided. Affected file lib/silcclient/command.c. * Removed RESTART command for good. Updated the code and the protocol specs. * Rewrote parts of the task system. It is a bit simpler now. Removed unsued task priorities. The affected files are lib/silcutil/silctask.[ch]. Mon Apr 2 20:02:33 EEST 2001 Pekka Riikonen * Moved the USERS printing from the library to the application. Affected files lib/silcclient/command.c and silc/client_ops.c. Mon Apr 2 13:13:23 EEST 2001 Pekka Riikonen * Updated TODO. * Added channel key re-key support. The re-key is perfomed only by the router and is done once in an hour. Added `rekey' field to the SilcChannelEntry in the server. Affected files silcd/server.c and silcd/idlist.h. * Added silc_task_unregister_by_context into the file lib/silcutil/silctask.[ch]. Sun Apr 1 19:49:34 EEST 2001 Pekka Riikonen * Added SILC_UMODE_GONE mode to indicate when the client is not present in the SILC network. Added also support to the local command AWAY that will set this mode. Added support of showing "xxx is gone" in WHOIS command. The USERS command shows the gone status as well. * Fixed setting server and router operator privileges in the server's UMODE command. Affected file silcd/command.c. * Merged the SKE KE1 and KE2 payloads into one payload. The new KE payload is equivalent to the old KE2 payload. Cleaned up the SKE Start Payload parsing. It now uses the simple buffer unformatting to do the parsing. A lot faster now. Added new Mutual Authentication flag (SILC_SKE_SP_FLAG_MUTUAL) to the SKE that is used to indicate whether both of the SKE parties should perform authentication. By default only the responder performs authentication. By setting this flag also the initiator must do authentication. By default it is unset since in normal SKE case, client to server connection, only the responder should do authentication. When doing SKE between two clients both should perform authentication. Updated the code and the protocol specs. * A little fix to IDENTIFY command in the server. Search the client first by hash not nickname. Affected file is silcd/command.c. * Fixed the silc_client_close_connection to support closing the client to client connections wihtout deleting too much data. Affected file lib/silcclient/client.c. * Fixed a fatal bug in server and client; if KE1 or KE2 packets are received if protocol used to be active but is not anymore the application would crash due to NULL pointer dereference. Affected files silcd/server.c and lib/silcclient/client.c. * Added `hash' field to the SilcClientConnection to include the hash function negotiated in the SKE protocol. * Added new channel mode SILC_CMODE_FOUNDER_AUTH that is used to set the channel founder authentication data. A client can claim the founder rights later by providing the authentication data to the CUMODE command using SILC_CUMODE_FOUNDER mode. This way the channel founder can regain the channel founder privileges even it is left the channel. This works only on local server and the client must be connected to the same server to be able to regain the founder rights. Updated the protocol specs accordingly. Added support to the CMODE command in the client to set the founder auth data. Read the README to see how to set it. Added support to the CUMODE command to claim the founder rights. Read the README to see how to do it. Added support for the founder authentication to the Channel Entry in the server. Affected file silcd/idlist.h. Added support for the SILC_CMODE_FOUNDER_AUTH mode in the server's CMODE command. Affected file silcd/command.c. * Added the following new functions into lib/silccore/silcauth.[ch]: silc_auth_get_method and silc_auth_get_data. * The server now saves the remote hosts public key to the SilcIDListData pointer. Affected file silcd/protocol.c. * The normal server now does not remove the channel entry from the cache if the founder authentication data is set. It used to remove it if the founder was the last one on the channel on the server and left the channel. The auth data is saved and if the channel is re-joined later the old entry is used with the old auth data. Affected files silcd/command_reply.c and silcd/server.c. * Removed the `pkcs' field from the SilcIDListData structure in the server; it is not used. Affected file silcd/idlist.h. Sat Mar 31 15:38:36 EEST 2001 Pekka Riikonen * Fixed packet processing on slow links. Partial packets were never re-processed because the incoming data buffer was cleared by the application. Application must not directly clear the sock->inbuf, the packet processing routines handle it. Fixed this in client library and in server. Fri Mar 30 16:35:27 EEST 2001 Pekka Riikonen * Fixed the WHOIS and IDENTIFY send reply function to really check whether to send list or just one entry. Affected file silcd/command.c. * Cleaned up the LEAVE command's channel key distribution. The affected file silcd/command.c. * Changed CMODE_CHANGE's to as server can enforce the channel mode as well. In that case the ID includes the ID of the server. The code now enforces the mode change if the router have different mode than the server. * The notify client operation with CMODE_CHANGE notify can now return NULL client_entry pointer if the CMODE was not changed by client. Application must check for this. * Added argument to INFO command to support server info fetching by Server ID. * Added silc_server_announce_get_channel_users to get assembled packets of channel users of the specified channel. Affected file silcd/server.[ch]. * Fixed bug in CHANNEL_CHANGE notify in the server. The new ID was freed underneath the ID Cache. * Re-announce clients when the server received CHANNEL_CHANGE notify from the router. Affected file silcd/packet_send.c. Thu Mar 29 19:10:28 EEST 2001 Pekka Riikonen * Fixed a fatal bug when client does /join 1 2 3 4 5 6 the server crashed since it did not handle the fact that there is no cipher called "3" and didn't check the error condition. Now fixed. * Added SILC_MESSAGE_FLAG_REQUEST message flag as generic request flag. It can be used to send message requests. Thu Mar 29 12:26:25 EEST 2001 Pekka Riikonen * Implemented the RESTART command in the client. * Added SILC_MESSAGE_FLAG_NOTICE message flag for informational notice type messages. Added notice printing to the user interface. * The channel keys are not re-generated if the channel's mode is PRIVKEY, ie private key on the channel exists. Affected files silcd/server.c and silcd/command.c. * Fixed a little bug in channel message delivery when channel private keys are set in the server. Affected file is silcd/packet_send.c. * Changed the setting on channel->on_channel = TRUE from the silc_client_save_channel_key to the JOIN command reply. The key payload is not received if the private channel key is set. Affected file lib/silcclient/command_reply.c and the lib/silcclient/client_channel.c. * When the CMODE_CHANGE notify is sent and the channel private key mode is removed the channel key must be re-generated in other cells as well. Added this support for the router in the silcd/packet_receive.c. * Added new local command NOTICE to send notice message on channel. Affected file silc/local_command.[ch]. Wed Mar 28 23:55:54 EEST 2001 Pekka Riikonen * Added new local command ME to the client. It is used to send message to a channel with SILC_MESSAGE_FLAG_ACTION to indicate some action. Affected file silc/local_command.[ch]. * Changed channel_message and private_message client operations to deliver the message flags to the application. Added also the `flags' arguments to the silc_client_send_channel_message and silc_client_send_private_message functions. Affected file silcapi.h. Wed Mar 28 20:50:47 EEST 2001 Pekka Riikonen * Redefined the Private Message Payload to support private message keys and to support the new private message flags. Updated the protocol specs. Flags makes it possible to have for example CTCP style messages. * Added new type SilcPrivateMessagePayload and defined an API for it in the lib/silcclient/silcprivate.[ch]. * Tested private message private keys successfully. Tested the private message key set, unset and list commands with the new KEY command. * Redefined the Channel Message Payload to include the channel message flags (equal with private message flags) to support for example CTCP style messages. * Defined some of the message (for channel and private message) flags. Updated the protocol specs and added the flags to the lib/silccore/silcchannel.h. The type is SilcMessageFlags. Wed Mar 28 15:52:36 EEST 2001 Pekka Riikonen * Added SilcKeyAgreementStatus type to the key agreement routines to indicate the current status and error if one occured. The status types are defined in the lib/silcclient/silcapi.h. * Added new local command KEY that is used to set and unset private keys for channels, set and unset private keys for private messages with remote clients and to send key agreement requests and negotiate the key agreement protocol with remote client. The key agreement is supported only to negotiate private message keys, it currently cannot be used to negotiate private keys for channels, as it is not convenient for that purpose. * Fixed a minor pending callback setting bug in the function silc_client_get_client_by_id_resolve, now the function works. Affected file lib/silcclient/idlist.c. * Added function silc_net_get_local_port to get local bound port by socket. Added to lib/silcutil/silcnet.[ch]. * Added `sockets' and `sockets_count' fields to the SilcClient object. They hold the sockets of the listenning sockets in the client. Listenning sockets may be for example the key agreement server. Affected file lib/silcclient/client.[ch]. Added functions the silc_client_add_socket and the silc_client_del_socket. They are exported to the application as well. * Added ~./silc/clientkeys to support other client's public keys. * Renamed verify_server_key client operation to verify_public_key and added one argument to indicate the type of the connection (server, client etc.). Tue Mar 27 22:22:38 EEST 2001 Pekka Riikonen * Added silc_server_connection_auth_request to handle the incoming CONNECTION_AUTH_REQUEST packet. Affected file is silcd/packet_receive.[ch]. * Added silc_server_send_connection_auth_request into the silcd/packet_send.c to send the connection auth request packet. * Cleaned up the silcd/protocol.c a bit and fixed some memory leaks. * Fixed the public key authentication in responder side in the server. The `auth_data' pointer includes the SilcPublicKey not the path to the public key. Affected file silcd/protocol.c. * Implemented the public key authentication in the initiator side in the server. Affected file silcd/protocol.c. * Removed the [RedirectClient] config section from the server configuration. Is not needed and I don't want to implement it. Tue Mar 27 12:49:56 EEST 2001 Pekka Riikonen * Cleaned up the CMODE command in the server. It now works correctly and supports all the modes defined in the protocol. Affected file is silcd/command.c. * Added `hmac_name' field to the SilcChannelEntry in the server to hold the default HMAC of the channel. It can be set when creating the channel (with JOIN command). Affected files silcd/idlist.[ch]. * Added and argument to the CMODE_CHANGE notify type to indicate the change of the current cipher and hmac on the channel. Client can safely ignore the argument (if it chooses to do so) since the CHANNEL_KEY packet will force the channel key change anyway. The argument is important since the client is responsible of setting the new HMAC and the hmac key into use. * Fixed the CMODE command in the client library as well. * Tested CMODE command in router environment successfully. Mon Mar 26 14:39:48 EEST 2001 Pekka Riikonen * Show the version of the remote client (or server) when connecting to the server. It is logged to the log file. Affected file is silcd/protocol.c. * Fixed the KILLED notify handling in the client library. The client must be removed from all channels when receiving the KILLED notify. Also, do not remove the client entry when giving the KILL command but when the KILLED notify is received. * Removed silc_idlist_find_client_by_nickname from the server. Not needed anymore. Affected files silcd/idlist.[ch]. * Implemented the CHANNEL_CHANGE notify type handling to the server. Affected file silcd/server.c. * Updated TODO. Mon Mar 26 12:11:14 EEST 2001 Pekka Riikonen * Added silc_server_send_notify_invite to send the INVITE notify between routers. * Implemented the INVITE command correctly to the server. * Implemented the INVITE notify type handling in the server. * Implemented the INVITE command to the client library and on the user interface. Sun Mar 25 20:27:09 EEST 2001 Pekka Riikonen * Added function silc_server_get_client_resolve to find the client entry by ID from all ID lists and then resolve it (using WHOIS) if it cannot be found. Affected file is silcd/server.[ch]. Sun Mar 25 13:52:51 EEST 2001 Pekka Riikonen * Implemented the BAN command to the client library. * The JOIN command in the server now checks the invite list and the ban list. * Changed the silc_command_reply_payload_encode_va and the silc_command_payload_encode_va to support that if argument is NULL it ignores and checks the next argument. Affected file lib/silccore/silccommand.c. * Added silc_server_send_notify_ban to send the BAN notify type between routers. * Chaned the silc_notify_payload_encode to support that if argument is NULL it ignores and checks the next argument. Affected file lib/silccore/silcnotify.c. * Tested ban lists in router environment successfully. Sat Mar 24 14:47:25 EET 2001 Pekka Riikonen * Implemented BAN command to the server, in silcd/command.[ch]. * Removed the BAN and INVITE_LIST modes from the CMODE command in the server code. * Added function silc_string_match to regex match two strings. Affected files lib/silcutil/silcutil.[ch]. Fri Mar 23 22:02:40 EET 2001 Pekka Riikonen * Redefined parts of the SilcChannelEntry in the server to support the new ban and invite lists. Fri Mar 23 16:25:11 EET 2001 Pekka Riikonen * Redefined the INVITE command. The same command can be used to invite individuals to the channel but also to manage the invite list of the channel (to add to and remove from the invite list). Updated the protocol specs. * Added new command SILC_COMMAND_BAN that can be used to manage the ban list of the channel. Updated the protocol specs. * Removed the channel modes: the SILC_CMODE_BAN and the SILC_CMODE_INVITE_LIST as they were a bit kludge to be included in the CMODE command. The equivalent features are now available using INVITE and BAN commands. Updated the protocol specs. * Added new SILC_NOTIFY_TYPE_BAN notify type to notify routers in the network about change in the current ban list. The notify type is not used by the client. * Redefined parts of the SILC_NOTIFY_TYPE_INVITE command to support the invite lists. Thu Mar 22 22:52:23 EET 2001 Pekka Riikonen * Added new function silc_string_regexify that converts string including wildcard characters into regex string that can be used by the GNU regex library. Added into the file lib/silcutil/silcutil.[ch]. Added silc_string_regex_combine to combine to regex strings into one so that they can be used as one regex string by the GNU regex library. Added into the file lib/silcutil/silcutil.[ch]. Added silc_string_regex_match to match two strings. It returns TRUE if the strings match. Added into lib/silcutil/silcutil.[ch]. Thu Mar 22 15:29:42 EET 2001 Pekka Riikonen * Imported GNU regex to the soruce tree into lib/contrib. Fixed some compiler warning from the regex.c. Wed Mar 21 15:27:58 EET 2001 Pekka Riikonen * Fixed MOTD command in the server to work in router environment. * Fixed the MOTD command in the client library to support the server argument in the command. * Added `nickname_len' argument to the silc_idlist_add_client in the server, as the `nickname' argument may be binary data (it may be hash). * Added silc_idlist_get_channels to return all channels from the ID list. * Implemented LIST command to the server. Affected file is silcd/command.c. * Implemented the LIST command to the client library and on the user interface. * Added [] argument to the LIST command reply. With private channels the user count is not shown. * Updated TODO and README. Tue Mar 20 21:05:57 EET 2001 Pekka Riikonen * The client entry's data.registered must be TRUE even with global client entry on global client list. The data.registered is used to check whether the client is anymore in the network, for example with WHOWAS command so it must be valid. * Fixed the WHOWAS command in the server. It now actually works in router environment. Added function into silcd/command_reply.c silc_server_command_reply_whowas_save. * Added silc_idlist_purge function to the silcd/idlist.c to periodically purge the ID Cache. * Fixed INFO command in the server. It works now in router environment. Added argument to the INFO command reply. Updated the protocol specs. * Fixed minor bug in silc_idcache_purge to not purge if the expire value is zero. * Fixed various bugs in WHOIS and IDENTIFY command handling as they were buggy because of the WHOWAS information. * Fixed local command MSG to handle the async resolving of the remote client properly. It used to fail the first MSG. Affected file silc/local_command.c. * Added `data_len' field to SilcIDCache context. Tue Mar 20 16:29:00 EET 2001 Pekka Riikonen * Update TODO. Todo in commands in the server. Tue Mar 20 15:45:14 EET 2001 Pekka Riikonen * Added new notify type SILC_NOTIFY_TYPE_UMODE_CHANGE that is used by routers as broadcast packet to inform other routers about the changed user mode. Implemented the notify handling in the server. Affected file is silcd/packet_receive.c. Added the function silc_server_send_notify_umode to the silcd/packet_send.[ch]. * Added new generic Channel Payload and deprecated the New Channel Payload. The New Channel Payload is now the generic Channel Payload. * Added new argument `mode' to the silc_server_send_new_channel as it is required in the Channel Payload now. * Renamed the SilcChannelPayload to SilcChannelMessagePayload and created a new and real SilChannelPayload to represent the new generic Channel Payload. Implemented the encode/decode for Channel Payload. Affected file lib/silccore/silcchannel.[ch]. * Added silc_server_get_client_channel_list to return the list of channels the client has joined for WHOIS command reply. Affected file silcd/server.[ch]. * Implemented the channel list sending in the WHOIS command reply in server and in the client. Implemented the channel list displaying on the user interface as well. Affected file silc/client_ops.c. * Added silc_channel_payload_parse_list to parse list of Channel Payloads. It returns SilcDList list of SilcChannelPayloads. Client for example can use this function to parse the list of channels it receives in the WHOIS command reply. The caller must free the list by calling silc_channel_payload_list_free. Affected files lib/silccore/silcchannel.[ch]. Mon Mar 19 21:39:15 EET 2001 Pekka Riikonen * Added one new argument to the WHOIS command reply to return the mode of the user in SILC. Updated the protocol specs. Implemented it to the server and client. Mon Mar 19 18:43:06 EET 2001 Pekka Riikonen * Fixed the mode printing on the user interface on joining. Affected file silc/client_ops.c. * Implemented the UMODE command and user modes in general to the client library and to the user interface. * Implemented the UMODE command to the server. * The server now sends UNKNOWN_COMMAND error status if client sends unknown command. Affected file silcd/command.c. * All server commands now handle the command identifier the right way when sending the command reply to the client. The client can use to identify the command replies with the identifier. Mon Mar 19 16:13:07 EET 2001 Pekka Riikonen * Added silc_server_get_client_route to resolve the route to the client indicated by the client ID. Affected file is silcd/server.[ch]. * Added silc_server_relay_packet as general function to relay packet to arbitrary destination. This deprecates functions like _send_private_message_key, _relay_notify etc. Affected file is silcd/packet_send.[ch]. Removed silc_server_send_key_agreement, silc_server_send_private_message_key and silc_server_packet_relay_notify functions from the file silcd/packet_send.[ch]. * Updated TODO. * Implemented the SILC_NOTIFY_TYPE_KILLED notify handling in the server. Affected file silcd/packet_receive.[ch]. * Implemented the KILL command to the client. Implemented the SILC_NOTIFY_TYPE_KILLED notify handling in the client library. Affected files lib/silcclient/command[_reply].c and lib/silcclient/client_notify.c. Implemented the KILL notify printing in the user inteface. * Fixed a lot silc_parse_nick memory leaks from the client library in the file lib/silcclient/command.c. * Changed the silc_server_send_notify_on_channels's `sender' argument from SilcSocketConnection to SilcClientEntry to check the sender as entry and not as connection object and not to send to the client provided as argument. The affected file is silcd/packet_send.[ch]. * The notify packets that are destined directly to the client used to not to be processed by the server. Now changed that and the server processes all notify packets. After relaying the packet to the client the notify packet is processed in the server. * The silc_server_free_client_data now checks whether there is pending outgoing traffic for the client and purges the data to the network before removing the client entry. Sun Mar 18 21:02:47 EET 2001 Pekka Riikonen * Added SILC_NOTIFY_TYPE_KILLED notify type. It is sent when an client is killed from the SILC Network. Updated the protocol specs accordingly. Added new function silc_server_send_notify_killed to the silcd/packet_send.[ch]. * Added function silc_server_packet_relay_notify to relay notify packets that are destined directly to a client. In this case the server does not process the notify packets but merely relays it to the client. Affected file silcd/packet_send.[ch]. Added also silc_server_packet_process_relay_notify to check whereto relay the notify. Affected file is silcd/packet_receive.[ch]. * Implemented the KILL command to the server. * Updated TODO. * Added the backup schema desgined last fall to the protocol specs for everyone to see. The specification is in the *-spec-xx.txt draft and the packet type definitions for the backup routers is in *-pp-xx.txt draft. Thusly, added also new packet type SILC_PACKET_CELL_ROUTERS. * A big security problem in the implementation discovered. The signoff of an client did not cause new channel key generation which it of course should've done. The channel keys must be always re-generated when client leaves (or signoffs) the channel. The silc_server_remove_from_channels funtion now handles the channel key re-generation. * Added `sender' argument to the silc_server_send_notify_on_channels to not to send the client provided as argument. Affected file silcd/packet_send.[ch]. Fri Mar 16 15:52:49 EET 2001 Pekka Riikonen * Implemented OPER and SILCOPER commands into the server and the client library. * Added silc_auth_verify and silc_auth_verify_data to verify the authentication directly from the authentication payload. It supports verifying both passphrase and public key based authentication. Affected file lib/silccore/silcauth.[ch]. * Added `hash' field to the SilcIDListData structure. It is the hash negotiated in the SKE protocol. Affected file is silcd/idlist.[ch]. * Slight redesigning of the SilcAuthPayload handling routines. Do not send SilcPKCS but SilcPublicKey as argument. * Implemented the public key authentication support to the serverconfig. The public key is loaded from the provided path and saved as authentication data to void * pointer. Thus, changed the unsigned char *auth_data to void *auth_data; * Fixed SHUTDOWN command to send the reply before the server is shutdown. :) Affected file silcd/command.c. * Fixed fatal bug in CONNECT command. The hostname was invalid memory and server crashed. Affected file silcd/command.c. * Fixed fatal bug in CLOSE command. The server_entry became invalid but was referenced later in the command. Affected file silcd/command.c. Thu Mar 15 12:46:58 EET 2001 Pekka Riikonen * Fixed fatal bug in failure packet handling. Server ignored the failure and thus crashed when it came. * Updated TODO. Wed Mar 14 20:37:35 EET 2001 Pekka Riikonen * Added new SILC_CF_LAG_STRICT command flag that strictly forces that the command may be executed only once in (about) 2 seconds. The old SILC_CF_LAG flag is same but allows command bursts up to five before limiting. Added the support for CF_LAG and CF_LAG_STRICT flags to the server code. Various commands now includes the CF_LAG_STRICT flag to disallow any kind of miss-use of the command. * Fixed the silc_buffer_unformat to not to allocate any data if the length of the data is zero. It used to allocate the length + 1. Affected file lib/silcutil/silcbuffmt.c. Wed Mar 14 16:10:30 EET 2001 Pekka Riikonen * Changed the format of AdminConnection configuration section in the server. Added username of the admin to the format. Affected files silcd/serverconfig.[ch]. Added silc_server_config_find_admin into silcd/serverconfig.[ch] to return admin configuration data by host, username and/or nickname. Wed Mar 14 13:18:16 EET 2001 Pekka Riikonen * Implemented WHOWAS command to the server. Added the functions: silc_server_command_whowas_parse, silc_server_command_whowas_send_reply, silc_server_command_whowas_from_client and silc_server_command_whowas_from_server * Added argument to the WHOWAS command reply. Updated the protocol specs accordingly. * Implemented WHOWAS command and command_reply to the client library. Implemented the WHOWAS printing on the user interface. Tue Mar 13 22:17:34 EET 2001 Pekka Riikonen * Added new argument to the WHOWAS command reply, the real name. It is an optional argument. Updated the protocol specs. * Added SilcIDCacheDestructor callback that is registered when the SilcIDCache is allocated. The callback is called when an cache entry in the ID Cache expires, or is purged from the cache. Added into lib/silccore/idcache.[ch]. Added silc_idlist_client_destructor to the silcd/idlist.[ch] to destruct the client entries when the cache entry expires. Other ID Cache's in server and in the client library ignores the destructor. * If the ID Cache entry's `expire' field is zero then the entry never expires. Added boolean `expire' argument to the silc_idcache_add function in the lib/silccore/idcache.[ch]. If it is TRUE the default expiry value is used. * Added silc_server_free_client_data_timeout that is registered when client disconnects. By default for 5 minutes we preserve the client entry for history - for WHOWAS command. Tue Mar 13 13:26:18 EET 2001 Pekka Riikonen * Added support to the server to enforce that commands are not executed more than once in 2 seconds. If server receives commands from client more frequently, timeout is registered to process the commands. Affected file silcd/command.c. Added new function silc_server_command_process_timeout. * Changed NICK_NOTIFY handling in client library to check that if the client's nickname was changed, so there is no need to resolve anything from the server. * Removed error printing from the WHOIS and IDENTIFY commands. If error occurs then it is ignored silently in the client library. The application, however, may map the received error to human readable error string. The application currently maps the NO_SUCH_NICKNAME error to string. * Made the command status message public to the application. Moved them from lib/silcclient/command_reply.c to lib/silcclient/command_reply.h. The application can map the received command status to the string with the silc_client_command_status_message function. * Added check to the server to check that client's ID is same as the Source ID in the packet the client sent. They must match. Tue Mar 13 12:49:21 EET 2001 Pekka Riikonen * Added dist-bzip hook to the Makefile.am to make bzip2 compressed distributions. Mon Mar 12 18:43:38 EET 2001 Pekka Riikonen * Server now enforces the maximum length for the nickname and the channel as protocol specification dictates. 128 bytes for nickname and 256 bytes for channel name. * Moved the WHOIS printing to the application. The client libary does not print out the WHOIS information anymore, the application must do it. Renamed silc_client_command_reply_whois_print to the silc_client_command_reply_whois_save. The client's idle time is also sent to the application now, and the idle is shown on screen. * Added silc_client_command_reply_identify_save to save the received IDENTIFY entries. * Do not check for channel private keys in message sending and reception if the channel does not have the PRIVKEY mode set. Affected file lib/silclient/client_channel.c. Sun Mar 11 20:25:06 EET 2001 Pekka Riikonen * Fixed a minor bug if WHOIS and IDENTIFY command parsing that just surfaced after chaning the JOIN procedure. Sun Mar 11 14:59:05 EET 2001 Pekka Riikonen * Added silc_client_get_clients_by_list to get client entries from Client ID list, that is returned for example by JOIN and USERS command replies. The application should use this function for example when JOIN command reply is received to resolve the clients already on the channel (library does not do that anymore as USERS command reply is not used in the JOIN procedure anymore). Affected files lib/silcclient/silcapi.h and lib/silcclient/idlist.c. * JOIN command reply and USERS command reply returns now SilcBuffer pointers instead of unsigned char pointers when returning the client list and mode list. * Added argument to the JOIN command reply, mainly for the server to identify for which client the command was originally sent. Updated protocol specs accordingly. * Added SilcDlist private_key pointer to the SilcChannelEntry in the client to support the channel private keys. Affected file is lib/silcclient/idlist.h. * Added SilcChannelPrivateKey argument to the function silc_client_send_channel_message so that application can choose to use specific private ke if it wants to. If it is not provided, the normal channel key is used, unless private keys are set. In this case the first (key that was added first) is used as the encryption key. * Implemented the support for channel private key handling. Implemented the following functions: silc_client_add_channel_private_key, silc_client_del_channel_private_keys, silc_client_del_channel_private_key, silc_client_list_channel_private_keys and silc_client_free_channel_private_keys Affected file lib/silcclient/client_channel.c. * Added the support for the private keys in the channel message sending and encryption and in the message reception and decryption. Affected funtions are silc_client_send_channel_message and silc_client_channel_message. Sat Mar 10 21:36:22 EET 2001 Pekka Riikonen * Added SKE's key verify callback to the client library's KE protocol context. Affected files lib/silcclient/protocol.[ch]. * Removed the statement that server (or router) must send USERS command reply when joining to the channel so that the client knows who are on the channel. Instead, the client list and client's mode list is now sent in the JOIN command reply to the client who joined channel. This is better solution. * Added function silc_server_get_users_on_channel and function silc_server_save_users_on_channel to the silcd/server.[ch]. * Removed function silc_server_command_send_users from the silcd/command.c. * Do not show topic on the client library anymore. The topic is sent in the command reply notify to the application and the application must show the topic now. Sat Mar 10 00:07:37 EET 2001 Pekka Riikonen * Added client searching by nickname hash into the IDENTIFY and WHOIS commands in the server as they were clearly missing from them. Affected file is silcd/command.c. * Fixed a bug in private message receiving in the client library. The remote ID was freed and it wasn't supposed, now it is duplicated. Fri Mar 9 12:40:42 EET 2001 Pekka Riikonen * Minor fix to the channel payload; allocate the data area, as it needs to be of specific length. * If the key agreement port is zero then the operating system will define the bound port. Affected files are lib/silcclient/silcapi.h and lib/silcclient/client_keyagr.c. * Added new function silc_channel_payload_decrypt into the file lib/silccore/silcchannel.[ch]. * Moved the channel message etc, check from silc_packet_decrypt to applications. The library calls now a generic SilcPacketCheckDecrypt callback which is to return TRUE or FALSE when the packet is either normal or special. This was done to allow more wide range of checking that was not allowed when the code was in library. Now applications can do virtually any checks to the packet and return to the library the decision how the packet should be processed. Affected files are lib/silccore/silcpacket.[ch]. Added silc_server_packet_decrypt_check to the server and silc_client_packet_decrypt_check to the client library. * Added silc_server_packet_send_srcdest into silcd/packet_send.[ch] to send with specified source and destination information. * Channel message delivery between routers was broken after the channel key distribution was fixed earlier. The channel key was used be to distributed to other routers as well which is not allowed by the protocol. Now this is fixed and channel keys really are cell specific and the channel message delivery between routers comply with the protocol specification. * Fixed various commands in server to check also the global list for the channel entry and not just the local list. The affected file silcd/command.c. Thu Mar 8 21:39:03 EET 2001 Pekka Riikonen * Added assert()s to buffer formatting and unformatting routines to assert (if --enable-debug) when error occurs. Affected file: lib/silcutil/silcbuffmt.c. * Changed to auto-reconnect to check whether the remote host is router and register the re-connect timeout if it is. It used to check that whether we are normal server, but router must do auto-reconnect with another router as well. Affected file silcd/server.c. * Removed the [] option from CMODE command as the cipher name decides the key length, nowadays. See the defined ciphers from the protocol specification. * Added [] option to the CMODE command to define the HMAC for the channel. Added SILC_CMODE_HMAC channel mode. * Added [] option for the JOIN command so that user can select which HMAC is used to compute the MACs of the channel messages. * Added Hmac field to the Channel Message Payload. The integrity of plaintext channel messages are now protected by computing MAC of the message and attaching the MAC to the payload. The MAC is encrypted. Now, it is clear that this causes some overhead to the size of the packet but rationale for this is that now the receiver can verify whether the channel message decrypted correctly and also when private keys are set for the channel the receiver can decrypt the packet with several keys and check from the MAC which key decrypted the message correctly. * Added silc_cipher_encrypt and silc_cipher_decrypt into the lib/silccrypt/silccipher.[ch]. * Added silc_hash_len to return the digest length into the lib/silcrypt/silchash.[ch]. * Rewrote parts of Silc Channel Payload interface in the lib/silccore/silcchannel.[ch]. The encode function now also encrypts the packet and parse function decrypts it. Wed Mar 7 20:58:50 EET 2001 Pekka Riikonen * Fixed a minor formatting bug in the SKE's key material processing. It actually might have processed the keys wrong way resulting into wrong keys. * Redefined the mandatory HMAC algorithms and added new algorithms. Added hmac-sha1-96 and hmac-md5-96 which are normal hmac-sha1 and hmac-md5 truncated to 96 bits. The mandatory is now hmac-sha1-96. Rest are optional (including the one that used to be mandatory). Rationale for this is that the truncated HMAC length is sufficient from security point of view and can actually make the attack against the HMAC harder. Also, the truncated HMAC causes less overhead to the packets. See the RFC2104 for more information. * Added new [hmac] configuration section. The SKE used to use the hash names (md5 and sha1) in the SKE proposal as HMCAS which is of course wrong. The official names that must be proposed in the SKE are the ones defined in the protocol specification (hmac-sha1-96 for example). The user can configure any hmac using any hash function configured in the [hash] section. At least, the mandatory must be configured. Rewrote the HMAC interface in lib/silccrypt/silchmac.[ch]. * Added HMAC list to the SKE proposal list. It has now both hash algorithm list and HMAC list. This makes the protocol incompatible with previous versions. The SKE now seems to work the way it is supposed to work, for the first time actually. * Defined plain Hash algorithms to the protocol specification. Added sha1 and md5. Tue Mar 6 15:36:11 EET 2001 Pekka Riikonen * Implemented support for key agreement packets into the server. Added functions silc_server_key_agreement and silc_server_send_key_agreement. Other than these functions, server has nothing to do with this packet. * Added support for private message key packets into the server. Added functions silc_server_private_message_key and silc_server_send_private_message_key. * Updated TODO. * Changed the silc_[client|server]_protocol_ke_set_keys to be called in the protocol's final callback instead in the END protocol state. This makes a little more sense and in the same time in client we can use the same protocol routines for normal key exchange and to key agreement packet handling as well. * Added to both client's and server's KE protocol context the SilcSKEKeyMaterial pointer to save the key material. We will bring the key material to the protocol's final callback by doing this. The final callback must free the key material. * Added SKE's packet_send callback into client's KE protocol context so that the caller can choose what packet sending function is used. This way we can use different packet sending when doing normal SKE when doing key agreement packet handling (in the key agreement packet handling we do not want to encrypt the packets). * Implemented the responder side of the key agreement routines in the client. The client can now bind to specified port and accept incoming key negotiation. The key material is passed to the application after the protocol is over. * Implemented the processing of incoming Key Agreement packet in the client. Added function silc_client_key_agreement to process the packet. * Implemented the intiator side of the key agreement routines in the client. The client can now initiate key agreement with another remote client. The key material is passed to the application after the protocol is over. * Created client_keyagr.c to include all the key agreement routines. * Added macro SILC_TASK_CALLBACK_GLOBAL which is equal to the SILC_TASK_CALLBACK except that it is not static. * Created client_notify.c and moved the Notify packet handling from the client.[ch] into that file. * Created client_prvmsg.c and moved all private message and private message key routines from the client.[ch] into that file. * Create client_channel.c and moved all channel message and channel private key routines from the client.[ch] into that file. * Changed silc_client_get_client_by_id_resolve to resolve with WHOIS command instead of IDENTIFY command, in the file lib/silclient/idlist.c. Mon Mar 5 18:39:49 EET 2001 Pekka Riikonen * Implemented the SKE's responder side to the Client library. * When FAILURE is received to the protocol do not trust it blindly. Register a timeout to wait whether the remote closes the connection as it should do it, only after that process the actual failure. This was changed to both client and server. * Added client_internal.h to include some of the structures there instead of client.h in lib/silcclient/. * Added function silc_task_unregister_by_callback to unregister timeouts by the callback function. Sat Mar 3 19:15:43 EET 2001 Pekka Riikonen * Some "Incomplete WHOIS info" errors has been appearing on the log files. Took away the entry->userinfo check from WHOIS reply sending. The entry->userinfo is now " " if client did not provide one. I thought this was fixed earlier but something is wrong still. Let's see if the error still appears. Wed Feb 28 20:56:29 EET 2001 Pekka Riikonen * Fixed a minor bug in the login when the channel key is re-generated in the server. It used to generate the key in wrong order and thus caused problems in the channel traffic. * Fixed a minor bug in channel key distsribution after KICK command. The key was not sent to the router even though it should've been. Tue Feb 27 20:24:25 EET 2001 Pekka Riikonen * Added silc_ske_process_key_material_data as generic routine to process any key material as the SILC protocol dictates. The function is used by the actual SKE library but can be used by applications as well. This relates to the private message keys and the channel private keys since they must be processed the same way the normal SILC session keys. The protocol dictates this. Affected files: lib/silcske/silcske.[ch]. Added also silc_ske_free_key_material to free the SilcSKEKeyMaterial structure. * Defined silc_cipher_set_key function to set the key for cipher without using the object's method function. The affected files: lib/silccrypt/silccipher.[ch]. * Implemented silc silc_client_add_private_message_key, silc_client_add_private_message_key_ske, silc_client_del_private_message_key, silc_client_list_private_message_keys and silc_client_free_private_message_keys functions in the client library. Added functions silc_client_send_private_message_key to send the Private Message Key payload and silc_client_private_message_key to handle incoming Private Message Key payload. * Added Cipher field to the Private Message Key payload to set the cipher to be used. If ignored, the default cipher defined in the SILC protocol (aes-256-cbc) is used. Tue Feb 27 13:30:52 EET 2001 Pekka Riikonen * Removed lib/silcclient/ops.h file. Redefined parts of the SILC Client Library API. Created new file silcapi.h that deprecates the ops.h file and defines the published Client Library API. Defined also private message key API and channel private key API into the file. This is the file that the application must include from the SILC Client Library. Other files need not be included by the application anymore. * Added new key_agreement client operation callback and also defined the Key Agreement library API for the application. Tue Feb 27 11:28:31 EET 2001 Pekka Riikonen * Added new packet type: SILC_PACKET_KEY_AGREEMENT. This packet is used by clients to request key negotiation between another client in the SILC network. If the negotiation is started it is performed using the SKE protocol. The result of the negotiation, the secret key material, can be used for example as private message key. Implemented the Key Agreement payload into the files lib/silccore/silauth.[ch]. Mon Feb 26 12:13:58 EET 2001 Pekka Riikonen * Redefined ciphers for the SILC protocol. Added some new ciphers and defined the key lengths for the algorithms. Changed the code accordingly. The default key length is now 256 bits. * Fixed SKE key distribution function silc_ske_process_key_material when the key length is more than 128 bits. The default key length in SILC is now 256 bits. * Added new command status type: SILC_STATUS_ERR_UNKOWN_ALGORITHM to indicate unsupported algorithm. * Renamed rijndael.c to aes.c and all functions as well. * Fixed a long standing channel key setting bug in client library. Weird that it has never surfaced before. * Fixed bug in channel deletion. If the entire channel is removed then it must also delete the references of the channel entry from the client's channel list as the client's channel entry and the channel's client entry share same memory. Sun Feb 25 20:47:29 EET 2001 Pekka Riikonen * Implemented CONNECT and SHUTDOWN commands in the client. * Implemented CLOSE command to the client. * Added the function silc_idlist_find_server_by_name into the files silcd/idlist.[ch]. Added the function silc_idlist_find_server_by_conn into the files silcd/idlist.[ch]. Sat Feb 24 23:45:49 EET 2001 Pekka Riikonen * DIE command was renamed to SHUTDOWN. Updated the both code and protocol specs. * Defined SILC_UMODE_NONE, SILC_UMODE_SERVER_OPERATOR and SILC_UMODE_ROUTER_OPERATOR modes into lib/silccore/silcmode.h. * Implemented CONNECT, CLOSE and SHUTDOWN commands to the server side. * Added function silc_server_create_connection function to create connection to remote router. My server implementation actually does not allow router to connect to normal server (it expects that normal server always initiates the connection to the router) so the CONNECT command is only good for connecting to another router. Sat Feb 24 16:03:45 EET 2001 Pekka Riikonen * Added SILC_NOTIFY_TYPE_KICKED to indicate that the client or some other client was kicked from the channel. Implemented the handling of the notify type to both client and server. Implemented silc_server_send_notify_kicked to send the KICKED notify. It is used to send it to the server's primary router. * Implemented the KICK command into server and client. * Added `query' argument to the silc_idlist_get_client function to indicate whether to query the client from server or not if it was not found. * Added new command status type SILC_STATUS_ERR_NO_CHANNEL_FOPRIV to indicate that the client is not channel founder. * Updated TODO. Sat Feb 24 00:00:55 EET 2001 Pekka Riikonen * Removed the rng context from SilcPacketContext structure and changed that the packet routine uses the Global RNG API. Fri Feb 23 11:22:57 EET 2001 Pekka Riikonen * Added support for quit message that client can "leave" on the channel when it quits the SILC. It is ditributed inside the SILC_NOTIFY_TYPE_SIGNOFF notify type. Added silc_server_free_client_data that will take the signoff message as argument. * Changed SKE routines to use the silc_pkcs_sign/verify routines. Thu Feb 22 23:05:36 EET 2001 Pekka Riikonen * Updated parts of the protocol specification to keep it up to date. Thu Feb 22 15:08:20 EET 2001 Pekka Riikonen * Added List flag (SILC_PACKET_FLAG_LIST) to indicate list of payloads in one packet. * Deprecated following packet types: NEW_ID_LIST, NEW_CHANNEL_LIST, NEW_CHANNEL_USER_LIST, SET_MODE and SET_MODE_LIST. List packets use now the new List flag. * Also deprecated the following packet types: REPLACE_ID, NEW_CHANNEL_USER and REMOVE_CHANNEL_USER packet types. * Added list support for Notify packet in server. * Added silc_server_send_notify_channel_change to send the CHANNEL_CHANGE notify type to replace channel ID's. Deprecates the silc_server_send_replace_id. * Added silc_server_send_notify_nick_change to send the NICK_CHANGE notify type. Deprecates the function silc_server_send_replace_id. * Added silc_server_send_notify_join to send the JOIN notify type. Deprecates the function silc_server_send_new_channel_user. * Added silc_server_send_notify_leave to send LEAVE notify type. Deprecates the function silc_server_send_remove_channel_user. * Added silc_server_send_notify_cmode and silc_server_send_notify_cumode to send CMODE and CUMODE notify types. Deprecates the silc_server_send_set_mode function. * Added SERVER_SIGNOFF notify type to indicate that server has quit. This means that all clients on the channel from that server will drop. This can be also used when netsplit happens. Deprecated REMOVE_ID packet type since it is not needed anymore even from server. Added silc_server_send_notify_server_signoff to send the SERVER_SIGNOFF notify type. Deprecates the function silc_server_send_remove_id. Added also silc_server_send_notify_signoff to send the SIGNOFF notify type. * Employed the PKCS #1. It is the mandatory way to do RSA in the SILC protocol from this day on. Changed the protocol specification as well. * Added silc_server_send_notify_topic_set to send TOPIC_SET notify type. It is used between routers to notify about topic changes on a channel. * Added silc_id_dup into lib/silccore/id.[ch] to duplicate ID data. * Partly updated the protocol specification to comply with the changes now made. It is still though a bit outdated. * The JOIN notify type now takes one extra argument . The packet used to be destined to the channel but now the JOIN type may be sent as list thus it is impossible to destine it to any specific channel. By adding this argument it is again possible. Wed Feb 21 22:39:30 EET 2001 Pekka Riikonen * Added CREDITS file. The CHANGES and CREDITS file will appear in the distribution as well. Wed Feb 21 14:17:04 EET 2001 Pekka Riikonen * Implemented CMODE_CHANGE, CUMODE_CHANGE and TOPIC_SET notify types in the server's silcd/packet_receive.c. * Implemented CMODE and CUMODE to work in router environment. * Fixed minor encoding and decoding buglet from the lib/silccore/silcmode.c. * Fixed buffer overflow from lib/silcclient/command.c in USERS command parsing. Wed Feb 21 12:44:00 EET 2001 Mika Boström * Changed all SilcConfigServer* and silc_config_server* to SilcServerConfig* and silc_server_config*, respectively. Patch by Bostik. Wed Feb 21 00:10:00 EET 2001 Pekka Riikonen * Associated the ID (client or server ID) to the Authentication Payload to avoid any possibility of forging. Updated the protocol specification and the code accordingly. Tue Feb 20 14:14:14 EET 2001 Pekka Riikonen * 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. * Created Global RNG API which is global RNG that application can initialize. After initializing, any routine anywhere in the code (including library) can use RNG without allocating a new RNG object. This was done to allow this sort of use of the RNG in code that has no chance to allocate RNG object. All applications currently allocate this and many routines in the library use this. Affected file lib/silccrypt/silcrng.[ch]. * Removed the RNG kludge from lib/silcmath/primegen.c and changed it to use the Global RNG API. * Defined Authentication Payload into protocol specification that is used during SILC session to authenticate entities. It is used for example by client to authenticate itself to the server to obtain server operator privileges. Implemented this payload into the lib/silccore/silcauth.[ch]. Implemented also routines for public key based authentication as the new protocol specification dictates. Moved definitions of different authentication methods from lib/silccore/silcprotocol.h into lib/silccore/silcauth.h. * Added silc_pkcs_encrypt, silc_pkcs_decrypt, silc_pkcs_sign, silc_pkcs_verify and silc_pkcs_sign_with_hash and silc_pkcs_verify_with_hash functions into the file lib/silccrypt/silcpkcs.[ch]. Mon Feb 19 19:59:28 EET 2001 Pekka Riikonen * The client entry's userinfo pointer must be always valid. Otherwise the [] 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 * 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 * Changed the client operation API: channel_message operation's `sender' is now the client entry of the sender, not the nickname and the `channel' is the channel entry, not the channel name. In the private_message operation the `sender' is now also the client entry of the sender not the nickname. Affected file is lib/silcclient/ops.h and all applications using the client operations. Sat Feb 17 22:11:50 EET 2001 Pekka Riikonen * Moved the calling of ops->connect() from connect_to_server_final into receive_new_id functin since that is the point when the client is actually allowed to send traffic to network. The affected file is lib/silcclient/client.c. Sat Feb 17 13:15:35 EET 2001 Pekka Riikonen * When receiving NEW_CHANNEL_LIST, NEW_CHANNEL_USER_LIST, NEW_ID_LIST and SET_MODE_LIST packets, broadcast the list packet (if needs broadcasting) instead of broadcasting the packets one by one which would make a burst in the network traffic. * Added `broadcast' argument to the functions in silcd/server.[ch] silc_server_create_new_channel[_with_id] to indicate whether to send New Channel packet to primary router. Sat Feb 17 01:06:44 EET 2001 Pekka Riikonen * Added new function into the silcd/server.[ch] files: silc_server_create_new_channel_with_id to create new channel with already existing Channel ID. * Added new packet type SILC_PACKET_SET_MODE_LIST into the file lib/silccore/silcpacket.h. This packet is used t send list of Set Mode payloads inside one packet. Server uses this to set the modes for the channels and clients on those channels, that it announced to the router when it connected to it. The protocol specification has been updated accordingly. * The silc_server_new_channel did not handle the packet coming from normal server as it normally does not send that. However, when it announces its channels it does send it. Implemented the support for that. * Added SILC_ID_CHANNEL_COMPARE macro to compare to Channel ID's into the file lib/silccore/id.h. Fri Feb 16 23:57:29 EET 2001 Pekka Riikonen * Fixed memory leaks in the functions silc_idlist_del_client, silc_idlist_del_channel and silc_idlist_del_server in the file silcd/idlist.c. All of those leaked like a sieve. * Fixed some small memory leaks in the client's function silc_client_notify_by_server. * Added functions into silcd/server.c: silc_server_announce_clients, silc_server_announce_channels and silc_server_announce_server. These functions are used by normal and router server to announce to its primary router about clients, channels and servers (when router) that we own. This is done after we've connected to the router. These functions effectively implements the following packet types: SILC_PACKET_NEW_CHANNEL_LIST, SILC_PACKET_NEW_CHANNEL_USER_LIST and SILC_PACKET_NEW_ID_LIST. * Added new functions into the silcd/packet_receive.[ch]: silc_server_new_id_list, silc_server_new_channel_list and silc_server_new_channel_user_list to handle the incoming NEW_ID_LIST, NEW_CHANNEL_LIST and NEW_CHANNEL_USER_LIST packets. * Added support of changing Channel ID in the function silc_server_replace_id. If the server that announces a channel to the router already exists in the router (with same name but with different Channel ID), router is responsible to send Replace ID packet to the server and force the server to change the Channel ID to the one router has. * Added new notify type SILC_NOTIFY_TYPE_CHANNEL_CHANGE to notify client that the Channel ID has been changed by the router. The normal server sends this to the client. Client must start using the new Channel ID as the channel's ID. Implemented handling of this new type into lib/silcclient/client.c into the function silc_client_notify_by_server. * Added new function silc_idlist_replace_channel_id into the files silcd/idlist.[ch] to replace the Channel ID. Fri Feb 16 14:14:00 EET 2001 Pekka Riikonen * Call silc_server_command_identify_check always when processing the IDENTIFY command in silcd/command.c Thu Feb 15 20:07:37 EET 2001 Pekka Riikonen * Added new packet type SILC_PACKET_HEARTBEAT that is used to send keepalive packets. The packet can be sent by clients, servers and routers. Added function silc_socket_set_heartbeat into the file lib/silccore/silcsockconn.[ch] to set the heartbeat timeout. If not set, the heartbeat is not performed. The actual heartbeat is implemented in the low level socket connection library. However, application is responsible of actually sending the packet. Added silc_server_send_heartbeat to send the actual heartbeat packet into silcd/packet_send.[ch]. Server now performs keepalive with all connections. * Added silc_task_get_first function into lib/silcutil/silctask.c to return the timeout task with shortest timeout. There was a bug in task unregistration that caused problems. TODO has been updated to include that task system must be rewritten. * The client library will now resolve the client information when receiving JOIN notify from server for client that we know but have incomplete information. * Rewrote parts of silc_server_remove_from_channels and silc_server_remove_from_one_channel as they did not remove the channel in some circumstances even though they should've. * Encryption problem encountered in server: The LEAVE command used to send the Channel Key packet to the router immediately after generating it. However, the code had earlier sent Remove Channel user packet but not immediately, ie. it was put to queue. The order of packets in the router was that Channel Key packet was first and Remove Channel User packet was second, even though they were encrypted in the reverse order. For this reason, MAC check failed. Now, this is fixed by not sending the Channel Key packet immediately but putting it to queue. However, this is more fundamental problem: packets that are in queue should actually not be encrypted because packets that are sent immediately gets encrypted actually with wrong IV (and thus MAC check fails). So, packets that are in queue should be encrypted when they are sent to the wire and not when they put to the queue. However, the problem is that the current system has not been designed to work that way. Instead, the packet is encrypted as soon as possible and left to the queue. The queue is then just purged into wire. There won't be any fixes for this any time soon. So, the current semantic for packet sending is as follows: o If you send packet to remote host and do not force the send (the packet will be in queue) then all subsequent packets to the same remote host must also be put to the queue. Only after the queue has been purged is it safe again to force the packet send immediately. o If you send all packets immediately then it safe to send any of subsequent packets through the queue, however, after the first packet is put to queue then any subsequent packets must also be put to the queue. Follow these rules and everything works fine. Thu Feb 15 14:24:32 EET 2001 Pekka Riikonen * Added new function silc_server_remove_clients_by_server to remove all client entries from ID list when the server connection is lost. In this case it is also important to invalidate all client entires as they hold the invalid server entry. This fixes fatal bug when server has lost connection and will reconnect again. Wed Feb 14 16:03:25 EET 2001 Pekka Riikonen * Made some sanity checks to silc_server_daemonise like to check whether the requested user and group actually exists. * Added sanity check to SKE's silc_ske_responder_finish to check that the public and private key actually is valid. * Invalidate the client's nickname when receiving Replace ID packet and the Client ID is being replaced. This means that the server will query the nickname if someone needs it (client) a bit later. * Sort the ID Cache in client library when the ID Cache data has changed (needs sorting). * Do not allow for SILC client to create several connections to several servers. The client does not support windows right now and generating multiple connections causes weird behaviour. Irssi-silc client does support windows and can handle several connections without problems, see: www.irssi.org and SILC plugin. * Fixed some places where client was added to the IDList. The rule of thumb is following (in order to get everything right): If the client is directly connected local client then the `connection' argument must be set and `router' argument must be NULL to silc_idlist_add_client function. If the client is not directly connected client then the `router' argument must bet set and the `connection' argument must be NULL to the silc_idlist_add_client function. * The funtion silc_server_packet_send_local_channel actually did not check whether the client was locally connected or not. It does that now. Fixed a bug related to LEAVE command. * Fixed Remove Channel User payload parsing bug in server's silcd/packet_receive.c. Fixed a bug related to LEAVE command. * The server's silc_server_save_channel_key now checks also the global ID list for the channel as it might not be in the local list. Fixed a bug related to LEAVE command. * Is this the end of the [] buglet that has been lurking around for a long time? A little for loop fix in server's silc_server_command_whois_parse that is used by both IDENTIFY and WHOIS command. At least, this was a clear bug and a cause of one type of [] buglet. * WHOIS and IDENTIFY commands call the function silc_server_command_[whois/identify]_check function even if we are not router server. Tue Feb 13 19:55:59 EET 2001 Pekka Riikonen * Added --with-gmp configuration option. If set the GMP is always compiled in the SILC source tree. If not set then it is checked whether the system has the GMP3 installed. If it has then the GMP won't be compiled (the system's headers and library is used), if it doesn't have it then the GMP is compiled in the SILC source tree. Mon Feb 12 11:20:32 EET 2001 Pekka Riikonen * Changed RSA private exponent generation to what PKCS #1 suggests. We try to find the smallest possible d by doing modinv(e, lcm(phi)) instead of modinv(e, phi). Note: this is not security fix but optimization. Sun Feb 11 18:19:51 EET 2001 Pekka Riikonen * Added new config entry [Identity] to fork the server and run it as specific user and group. A patch from Bostik. * Imported Dotconf configuration library into lib/dotconf. This will be used to create the SILC configuration files later. It will appear in the distsribution after this commit. Sat Feb 10 21:13:45 EET 2001 Pekka Riikonen * A big code auditing weekend happening. Auditing code for obvious mistakes, bugs and errors. Also, removing any code that is obsolete. Removed files for being obsolete: o lib/silcutil/silcbuffer.c (the buffer interface is entirely in inline in the file lib/silcutil/silcbuffer.h) o lib/silcutil/silcbufutil.c (the header has inline versions) Changed code to fix possible error conditions: o The buffer formatting routines now check that the destination buffer really has enough space to add the data. This applies for both buffer formatting and unformatting (lib/silcutil/silcbuffmt.[ch]). Also, the entire buffer unformatting was changed to accomodate following rules: XXX_*STRING_ALLOC will allocate space for the data into the pointer sent to the function while XXX_*STRING will not allocate or copy the data into the buffer. Instead it sets the pointer from the buffer into the pointer sent as argument (XXX_*STRING used to require that the pointer must be allocated already). This change makes this whole thing a bit more consistent and more optimized (note that the data returned in the unformatting with XXX_*STRING must not be freed now). The routines return now -1 on error. o Tried to find all code that use buffer_format and buffer_unformat and added return value checking to prevent formatting and especially unformatting errors and possible subsequent fatal errors. o Changed ske->x and ske->KEY to mallocated pointers in lib/silcske/silcske.h. Fixed possible data and memory leak. o Added return value checking to all *_parse* functions. Fixed many memory leaks as well. o Added length argument to silc_id_str2id in lib/silccore/id.[ch] so that buffer overflows would not happen. All code now also checks the return value as it can fail. Mon Feb 5 20:08:30 EET 2001 Pekka Riikonen * Added reconnection support to server if the normal server looses its connection to the router (for example if router is rebooted). The server performs normal reconnection strategy implemented to the server. Affected file silcd/server.c. Sun Feb 4 13:18:32 EET 2001 Pekka Riikonen * Added new packet type SILC_PACKET_SET_MODE that is used to distribute the information about changed modes (for clients, channels and clients channel modes) to all routers in the network. Updated the protocol specification accordingly. Added functions into silcd/packet_send.c and silcd/packet_receive.c: silc_server_send_set_mode, silc_server_set_mode. Added new files silcmode.[ch] into lib/silccore that implements the encoding and decoding of Set Mode Payload. Added new type SilcSetModePayload. Moved the definitions of different modes from lib/silccore/silcchannel.h into lib/silccore/silcmode.h. Sat Feb 3 15:44:54 EET 2001 Pekka Riikonen * Oops, a little mistake in server's connection authentication protocol. The protocol is not ended with FAILURE but with SUCCESS if the authentication is Ok. :) Affected file is silcd/protocol.c. * Implemented NICK_CHANGE notify handling in server in the file silcd/packet_receive.c The NICK_CHANGE notify is distributed to the local clients on the channel. After the changing nickname in router environment snhould work and the [] nickname should appear no more. The silc_server_replace_id function that receives the Replace ID payload now sends the NICK_CHANGE notify type also in the file silcd/packet_receive.c * Changed WHOIS and IDENTIFY command to support the maximum amount of arguments defined in protocol specs (3328 arguments). This fixed a bug that caused problems when there were more than three users on a channel. Fri Feb 2 11:42:56 EET 2001 Pekka Riikonen * Added extra parameter, command identifier, to the silc_client_send_command so that explicit command identifier can be defined. Changed that ID list routines uses specific command identifier when sending WHOIS/IDENTIFY requests to the server so that they can be identified when the reply comes back. Affected files lib/silcclient/command.[ch], lib/silcclient/client.c and lib/silcclient/idlist.[ch]. * Added `sender' argument to silc_server_packet_send_to_channel to indicaet the sender who originally sent the packet to us that we are now re-sending. Ignored if NULL. Affected file silcd/packet_send.[ch]. * Added some server statistics support in silcd/server_internal.h SilcServerStatistics structure and around the server code. Also send some nice statistics information when client is connecting to the client. Thu Feb 1 23:31:21 EET 2001 Pekka Riikonen * Fixed channel ID decoding in server's JOIN command reply in silcd/command_reply.c * Fixed braodcasting of replace ID payload to not to send it if we are standalone server in silcd/packet_receive.c. * Fixed all channel message sending routines to not to send packets to clients that has router set, since they are routed separately in the same function earlier. Affects file silcd/packet_send.c and all channel packet sending functions. * In USERS reply, res_argv[i] are not allocated, the table is allocated. Thus changed that free the table, not its internals. * In server's whois_check and identify_check if the client is locally connected do not send any WHOIS commands - they are not needed. Thu Feb 1 21:32:27 EET 2001 Pekka Riikonen * Fixed some minor bugs in client when sending WHOIS command. The arguments was in wrong order. * Removed statis function add_to_channel from server in silcd/command.c that was previously used with the joining but is obsolete now. * Tested USERS command in router environment successfully with two routers, two servers and two clients. Thu Feb 1 00:54:26 EET 2001 Pekka Riikonen * Reorganized the USERS command and command reply in client library in lib/silcclient/command.c and lib/silcclient/command_reply.c. When the command is given by user we register a pending command callback that will reprocess the command after the reply has been received from the server. When reprocessing the packet we then display the information. Thus, the USERS information is displayed now in the command callback instead of in the command reply callback. The processing of the command is same as previously when server has sent the command reply in the JOINing process. * Added to USERS command in silcd/command_reply.c to join the client, we didn't use to know about, to the channel after we've created a client entry for it. Also, for clienet we did know already still check whether it is on the channel or not and add it if not. * Removed silc_server_command_join_notify as the function and its use was obsolete. Tue Jan 30 22:39:15 EET 2001 Pekka Riikonen * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * Add route cache for received ID for fast routing. * Added silc_server_packet_route to route received packet on router that is not destined to us. * Renamed silc_server_get_route to silc_server_route_get. * Added id_string and id_string_len fields into SilcServer to include encoded ServerID for fast comparing without excess encoding of the ID's. * Cleaned up WHOIS command on server side. Added following static functions: silc_server_command_whois_parse silc_server_command_whois_check silc_server_command_whois_send_reply silc_server_command_whois_from_client silc_server_command_whois_from_server * Added macro SILC_SERVER_COMMAND_CHECK_ARGC to check mandatory arguments in command replies. All command functions should be updated to use this macro. Sun Dec 10 23:52:00 EET 2000 Pekka Riikonen * Minor typo fixes on command reply handling on server. Tue Nov 28 11:05:39 EET 2000 Pekka Riikonen * Added silc_server_command_add_to_channel internal routine to add the client to the channel after router has created the channel and sent command reply to the server. * Added generic silc_server_send_command to send any command from server. * Use static buffer with ID rendering instead of duplicating data. Mon Nov 27 21:39:40 EET 2000 Pekka Riikonen * Fixed a channel user mode bug when joining to a channel server gave everybody channel founder rights, oops. * We mark ourselves as the router of the incoming server connection if we are router ourselves. This way we can check in some packet sending functions whether it is locally connected server. For incoming router connections we put NULL. * For router sending packets locally means now always sending the packet cell wide; to local clients and local servers. For normal server sending packet locally means sending it to only local clients. * Fixed the JOIN command to really work in router environment. If the channel is created it is always created by the router. Router is also responsible of making the initial joining to the channel, sending JOIN notify to the sending server and distributing NEW_CHANNEL and NEW_CHANNEL_USER packets. Hence, if the channel does not exist server doesn't do anything else but forward the command to the router which performs everything. * Added silc_server_send_channel_key function to send the Channel Key payload. * Added silc_server_create_channel_key to create new channel key. The channel key is now re-generated everytime someone joins or leaves a channel, as protocol dictates. Note: channel->key_len is the key length in bits. Wed Nov 22 22:14:19 EET 2000 Pekka Riikonen * Splitted server.[ch] finally. Created now packet_send.[ch] and packet_receive.[ch] to separate packet sending and receiving routines. The server.[ch] now includes everything else including actual packet processing (writing and reading data) and other server issues. Renamed silc_server_private_message_send_internal to silc_server_send_private_message. The routine is still though used only to relay private messages as server does not send private messages itself. Renamed silc_server_new_channel to silc_server_create_new_channel and added new function sicl_server_new_channel that handles the incoming New Channel packet. Added also new sending function silc_server_send_new_channel to send New Channel Payload. * Added new function silc_server_notify to process incoming notify packet to the server/router. Server may then relay the notify to clients if needed. * Added new function silc_server_new_channel_user to process incoming New Channel User packet. Router will redistribute the packet and send JOIN notify to its local clients and locally connected servers if needed. Normal server will send JOIN notify to its local client on same channel when received this packet. Added also corresponding sending function silc_server_send_new_channel_user to sent the payload. * Added boolean route argument to send_notif_to_channel and packet_send_to_channel functions to attempt to route the packet if it is TRUE and send only locally if it is FALSE. Tue Nov 21 19:49:31 EET 2000 Pekka Riikonen * silc_server_replace_id now broadcasts the received replace ID packet if it is not broadcast packet already. The router must broadcast to inform other routers about changed ID. * Added backpointer to server's router into SilcServer context in silcd/server_internal.h. * Fixed silc_server_packet_broadcast to send correct broadcast packets. * The channel key is now distributed to the local client as soon as it is received from the router (in router environment) so that no other packet may be sent for the channel until client has received the key. * silc_server_remove_channel_user now broadcasts the received Remove Channel User packet if it is not broadcast packet already. The router must broadcast to inform other routers about removed channel user. * Added users field into SilcPacketContext that is a reference count of the context. One can increase the reference count by calling silc_packet_context_dup which is now changed to just increase the reference count instead of duplicating the data. The reference count is decresed by calling silc_packet_context_free that will free the data after the reference count hits zero. For now on the packet context and everything allocated into it (including the raw packet from network) must be freed by calling the new silc_packet_context_free function. Added also new function silc_packet_context_alloc that must be used now to allocate the context. This also means that if a routine is asynchronous from silc_[client/server]_packet_parse_type the packet context must be duplicated by calling silc_packet_context_dup. Otherwise it gets free'd after silc_[client/server]_packet_parse_type returns. Also, one must remember that if packet is duplicated then its reference count must be decresed by calling the free function as many times as it was duplicated. * Changed SilcBuffer field from protocol contexts to SilcPacketContext from both client and server. Mon Nov 20 23:47:03 EET 2000 Pekka Riikonen * Made joining to a channel working in router environment. * Cleaned up JOIN command on server side and create function silc_server_command_join_channel internal routine to make the joining happen. Thu Nov 9 21:12:39 EET 2000 Pekka Riikonen * Changed silc_command_pending list to SilcDList. Also, added `ident' field to SilcServerCommandPending structure to identify the reply and to call correct callback. Added silc_server_command_pending_check function to replace the corresnponding macro. The silc_command_pending list is not extern anymore. * Added silc_command_set_ident into lib/silccore/silccommand.[ch] to set identifier to previously allocated Command Payload. It is used to set identifier for command when resending Command Payload. * Added silc_command_payload_encode_payload to encode Command Payload buffer from SilcCommandPayload structure. * Added silc_argument_payload_encode_payload to encode Argument payload buffer from SilcArgumentPayload structure. Wed Nov 8 21:03:28 EET 2000 Pekka Riikonen * Changed WHOIS command to support router connection on server side. The whois request is always sent to router unless the server is standalone server. After server has received the reply from the router will it send the reply to the client. * Added silc_server_packet_broadcast into silcd/server.[ch] to broadcast received broadcast packet. The function is used only by router. The broadcast packet is always sent to the router's primary route. * Added silc_id_render function in lib/silcutil/silcutil.[ch] to render given ID to printable string, for log files for example. Tue Nov 7 22:14:19 EET 2000 Pekka Riikonen * Made basic router to router connections working. At least they can now connect to each other but nothing really works the way they are supposed - yet. * Added new initiator token to RouterConnection configuration file in silcd/serverconfig.[ch]. It is used to tell whether we are the initiator to the remote router or whether we'll expect the other end to connect. * Moved registering of listener task to silc_server_init, hence the server starts listenning as soon as it is run, even if it does not have connections to other routers. Let's see how well this will work. * Changed default connection retry timeouts for more suitable in silcd/server.h. * Removed cipher and such arguments from silc_idlist_add_client and silc_idlist_add_server prototypes from silcd/idlist.[ch]. Added new function silc_idlist_add_data to add the keys and stuff to any ID entry. * Added SilcIDListData structure and added it to SilcClientEntry and SilcServerEntry as their first field in the structure. This way we can explicitly cast the ID entries to the SilcIDListData structure and get common data for the entries. In past, we had to first check what type of connection it is and then cast it to correct ID entry type. Now, we can directly cast the opaque pointer to the SilcIDListData (no matter what ID entry it actually is) and get the data needed. Mon Nov 6 21:56:12 EET 2000 Pekka Riikonen * Wow, found a bug in scheduler. The scheduler uninitialized itself in some circumstances even if threre were timeout tasks, though not IO tasks, but tasks anyway. Now fixed. * Defined SilcServerConnection structure to hold connection specific stuff about directly connected servers and routers. The definition is currently in silcd/server_internal.h. I thought about having a bit more important role fro this struct but for now it is used only when connecting to other server (or router actually). * Added connecting retry support in server when connecting to router(s). The retry feature implement exponential backoff algorithm. Also, added SilcServerParams structure to hold default parameters for server. For now, it include these retry settings and are hard coded. After server is moded to be as Silc Server Library this structure will be more important. Sun Nov 5 22:28:44 EET 2000 Pekka Riikonen * Changed client librarys channel->clients table to SilcList and changed code accordingly. Thu Nov 2 16:28:01 EET 2000 Pekka Riikonen * Changed client's channel table to SilcList and changed code accordingly. Also changed SilcChannelClientEntry to include back- pointer to the channel so that client entry can use that structure as list as well and we have fast cross-reference to the channel. This change dramatically decreased the complexity of channel handling with client entry and vice versa (removed one extra loop when searching for channel entry from many functions). * Changed server->sim from table to SilcDList and changed code accordingly. * NAMES command can now be used from user interface. It will show the user list on the channel, neatly. * Added realname pointer to SilcClientEntry in lib/silcclient/idlist.h. Code now saves realname of the user if it becomes available. * Renamed configure.in to configure.in.pre and made ./prepare script to automatically add correct version string to configure.in which it creates from configure.in.pre. Wed Nov 1 17:21:26 EET 2000 Pekka Riikonen * NAMES command reply now shows users mode with the nickname when joining to channel. * Moved silc_client_ch[u]mode[_char] functions from silc/clientutil.[ch] to lib/silcclient/client.[ch]. Though, that place sucks, they are utility functions and should be in some other file. * Fixed some unsigned int's to unsigned short's. Patch by cras. * Fixed contrib/getopt*.[ch] to not require config.h. Patch by cras. Tue Oct 31 20:10:37 EET 2000 Pekka Riikonen * Updated README. * Added TRQ (efficient deque and list library) into lib/trq. This is a very good list library that is currently used in the SILC. Defined SilcList API over the library because I didn't like the API very much. See lib/trq/silclist.h for the API and examples of how to use the API. Fixed various places in the code to use the new SilcList API. The SilcList is meant for lists that has a structure already defined as a list. It is not suitable to add just some context to the list (in TRQ, the context is the list actually). So, I defined SilcDList that can be used for the purpose where predefined list structure does not exit. This can be used as such list. Now some context just can be added to the SilcDList. Currently this list is not used in the SILC just yet, though there are a lot places where this can replace dynamically allocated tables and I will fix these places, later, to use SilcDList. See lib/trq/silcdlist.h for SilcDList (they are all inline functions, and use TRQ internally). Also fixed some annoying warning messages that the original TRQ code generated. Also minor changes to TRQ's Makefile.in. * Added support for querying by Client ID to both WHOIS and IDENTIFY commands into server, as required by the protocol. * Removed method function pointers from SilcBuffer structure. They weren't used to anything and just increased the context size for no good reason. This change also made silc_buffer_alloc and silc_buffer_free functions inline functions. * Disabled command flooding detection support until it's fixed so that it accepts commands in but does not execute them more than once in two seconds. * Added silc_net_localhost(), to return local hostname, into lib/silcutil/silcnet.[ch]. Also added client->hostname pointer that must be initialized before calling silc_client_init. * Added new function: silc_server_send_notify_on_channels to send notify messages to all channels client has joined. It is assured that the message is sent only once per client. * Moved silc_log_format (from lib/silcutil/silclog.[ch] into lib/silcutil/silcutil.[ch] as silc_format function. The new function is generic and is used by server as well, not only by the logging routines. * Added new SKE status type: SILC_SKE_STATUS_BAD_VERSION to indicate the provided version string was not acceptable. Added new function: silc_ske_check_version into lib/silcske/silcske.h. The function must be implemented by the application (client or server) and it does not reside in the SKE library. The function checks the version string remote end sent. * Added back pointers (to opaque context and to SilcSocketConnection) into SilcPacketContext structure into lib/silccore/silcpacket.h. * Added silc_packet_context_dup into lib/silccore/silcpacket.[ch] to duplicate packet context structure. * Changed `notify' client operation to send same arguments as client receives from server except for ID's. ID's are mapped to correct ID entry and that is returned. Also, if channel entry is not sent by server but the notify is for channel the channel entry is sent to application (otherwise application doesn't know that it is for channel (library gets it from packet's Destination ID)). * Added silc_client_remove_from_channels into client library to remove a client from all channels it has joined to. Used when received SIGNOFF notify from server. Added also new function silc_client_replace_from_channels to replace old ID entry with new ID entry on all channels. Used when received NICK_CHANGE notify from server. * Fixed ID Cache list handling in silc_idlist_get_client in lib/silcclient/idlist.c. Also, added silc_idlist_get_client_by_id to get (or query) client by ID. * Updated TODO list. * Added connection authentication status message defined by the protocol: SILC_CONN_AUTH_OK and SILC_CONN_AUTH_FAILED and added the support for these into the code in client and server side. * Added generic function silc_client_send_command to send any command with variable argument list. Application should use this function to send commands if the command functions provided by the library does not suite for the application's user interface needs. * Added new `failure' client operation. Application is notified about received failure packet if client is executing a protocol. In this case the protocol's execution has failed. * Added SKE's end notify to send the SKE_SUCCESS notify message that is required by the protocol. * Added SILC_PROTOCOL_STATE_FAILURE to indicate received failure packet from remote. SILC_PROTOCOL_STATE_ERROR indicates local error at our end. * Added status flag to SilcSKE object to indicate realtime status of the SKE protocol. * Application receives now exactly same command reply arguments as the library receives from server. However, if ID is received the corresponding ID entry is returned to the application (eg. Client ID is mapped to correct SilcClientEntry entry and that is returned). Changed command_reply client operation due to this change. * Changed all ID's in commands and in command replys as ID Payloads. Change affected both client and server side codes. All ID's sent in SILC network (with execption of ID's in SILC Packet header) are sent in ID Payload to support variable length ID's. * Server now notifies nick changes and notifies all clients on the channels about the new nickname (about the new Client ID, actually). * Implemented CMODE command to change channel modes. Supports all channel modes defined by the protocol specs except ban and invite lists. (Also, private channel key mode is supported but support for setting private channel key in client is missing, thus, this mode has no effect on client side (except that server requires that the client uses private channel key and normal channel traffic does not work anymore)). Also, invite mode works per se, but INVITE command does not work yet correctly, so you can set channel as invite only channel but inviting clients to the channel does not work (it is yet to be thought what's the best way to do it). * Added new command SILC_COMMAND_CUMODE to change user mode on the channel. Defined user modes: CHANNEL_FOUNDER and CHANNEL_OPERATOR. Implemented CUMODE command to change user's mode on the channel. Supports all modes defined by the protocol specs. * Added NAMES command reply to return users modes on the channel. * Removed unnecessary and slow ciphers from lib/silccrypt. * Set SO_KEEPALIVE option to connection sockets by default. * Added new command reply status: SILC_STATUS_USER_NOT_ON_CHANNEL. * Added notify types: MOTD, CMODE_CHANGE and CUMODE_CHANGE. Also, redefined the Notify Payload into protocol specs. * Added silc_id_payload_parse_id to get ID directly from raw ID payload data. Mon Oct 9 20:57:02 EEST 2000 Pekka Riikonen * Changed SILC_COMMAND_IDENTIFY in protocol specification to accept searching by Client ID as well. * Added support for LEAVE and SIGNOFF notify types in client library. * Added silc_id_payload_parse_data into lib/silccore/silcpayload.[ch] to parse ID Payload from raw data. Sun Oct 8 19:33:08 EEST 2000 Pekka Riikonen * Added flags parameter into silc_ske_assemble_security_properties function in lib/silcske/silcske.[ch]. * Changed notify client operation to fit better for notify messages sent by server. The notify payload received from server is now passed to the application (after parsing it to SilcNotifyPayload). It is application's responsibility to retrieve the arguments from the payload and show the message the way it wants. The message sent by server is implementation specific. * Changed public keys to comply with the protocol specification. Old public keys are not supported anymore and are not compatible. * Removed nickname from Channel Payload as the latest draft removed it. The client must resolve the nickname from the NAMES command reply received when it joined the channel. Also, changed all channel_xxxx_payload to channel_payload_xxxx. Sat Oct 7 21:55:01 EEST 2000 Pekka Riikonen * Fixed some errors in protocol specification drafts. * Created lib/silccore/silcnotify.c to implement Notify Payload encoding and decoding, lib/silccore/silcpayload.[ch] to implement generic payloads described by protocol specifications. The file includes implementations for ID Payload and Argument Payload. * Changed Command Payload implementation to use the new Argument Payload. Changed command_xxxx_payload to command_payload_xxxx to comply with SILC coding conventions. * Added suppport for Argument Payload handling in Notify Payload implementation as protocol requires it. Added the new support into server and client lib as well. Thu Oct 5 21:16:28 EEST 2000 Pekka Riikonen * Added support for multiple nicknames on same channel. [n] is added locally to the nickname if there are more than one same nicknames on the channel. * Server now sends all nicknames that matched WHOIS request. Client also shows the list received from server. * Added TOPIC command to client side. User can now set and show current topic on channel. * Added MOTD command to client and server. Also, server sends the motd when client connects to the server. * Changed version strings to comply ISO 8601. Wed Oct 4 23:29:06 EEST 2000 Pekka Riikonen * Fixed protocol error handling in client library. It should now cope even if the SKE fails for some reason. * Made new protocol specification drafts for submitting to IETF. * Implemented TOPIC command to server in silcd/command.c. * Added two new notify types into lib/silccore/silcnotify.h: SILC_NOTIFY_TYPE_NICK_CHANGE and SILC_NOTIFY_TYPE_TOPIC_SET to notify nickname change and topic setting/change on a channel. * API change of command_reply operation in client library. The application gets now the status type received from server as well. Sat Sep 30 16:57:42 EEST 2000 Pekka Riikonen * Removed the function just added to lib/silcutil/silcschedule.[ch]. * Cras fixed and optimized the packet handling even further and it should work now. Minor change to the prototype of function silc_packet_receive_process in lib/silccore/silcpacket.[ch]. Sat Sep 30 08:48:47 EEST 2000 Pekka Riikonen * Added new function into lib/silcutil/silcschedule.[ch]: silc_schedule_with_fd to select() a specified fd. The function returns after timeout expires or data arrives or goes. The function is used by packet routines to wait that all data is received from network. * Fixed data reading from network in lib/silccore/silcpacket.c. The code now assures that all data is read from the fd and then continues packet processing. This was a bug fix since the code used to drop some data in some circumstances. * Added new function into lib/silcclient/client.[ch]: silc_client_start_key_exchange to start key exchange after connection has been established to server. The code internally now uses this funtion but its main purpose was to provide it for applications that perform their own connecting. After application has created a connection it merely calls this function to start the key exchange between client and server. The library takes care of everything else after that. Updated also lib/silcclient/README to explain the usage of this new function. * Do not send to application information that connection has been established. Application gets notified it by connect operation anyway. Thu Sep 28 23:40:19 EEST 2000 Pekka Riikonen * Applied cras's patch to add silc_schedule_one function. The function runs scheduler once and returns. * Fixed the scheduler after cras messed it up. The timeout handling works now as it's supposed to work. * Added into lib/silccore/ silcnotify.h to include notify message types support. Changed silc_server_send_notify* functions, in server.[ch], to support those new notify types. Added the support for the notify types into client library, as well. Added new notify client operation into ops.h in lib/silcclient/. * Changed silc_server_packet_send_to_channel to send normal packets instead of just channel message packets. The function is now used to send the notify packets to channels. It is not used to send channel message packets anymore, as server never sends them anymore. * Added explicit casting into lib/silcutil/silcbuffmt.c to few va_arg()s as it seems to require it nowadays. I guess, if SILC is compiled with older va_arg() the new code should work anyway. Wed Sep 13 18:10:14 EEST 2000 Pekka Riikonen * Splitted core library. Core library (lib/silccore) includes now only SILC protocol specific core (and common) components. Created new utility library (lib/silcutil) that includes more generic purpose stuff. The stuff for util library was taken from the old core library. This was minor and easy split. * Created SILC Client Library (lib/silcclient) that includes implementation of the SILC client without user interface. This was major move from silc/ directory. The code has been changed so that it is transparent towards the user interface. The silc/ directory includes now the same user interface as before and it uses the new client library. Read lib/silcclient/README. Basicly, the client library performs everything else related to SILC except user interface handling. Also, configuration files are considered to be part of user interface and library does not handle them. This change also changed a lot of structures, function naming etc. Most important change was that SilcClientWindow object was renamed to SilcClientConnection in the client library. Created also new file lib/silcclient/ops.h. Also added new files silc/local_command.[ch] and silc/client_ops.[ch]. All these changes were made to make it easier for user interface designers to create what ever user interface for the SILC client they want. It is also expected that the server will be moved to lib directory as well and SILC Server Library will be created; sometimes in the future. * Removed Local commands from lib/silccore/silccommand.h as they are application specific and new client library does not handle any of those anymore. * Several functions moved to lib/silcutil/silcutilc.[ch] from old client implementation in silc/. * Added support for callback functions in SILC_LOG_* macros. Application can now set its own callbacks that will be called instead of using the default functions that will always print the debug messages to stderr (or stdout). Also, debugging can now be disabled by setting silc_debug to FALSE and re-enabled by setting it to TRUE. Note, that logging will still work even if debugging is disabled. New functions in lib/silcutil/silclog.[ch]: silc_log_set_callbacks, silc_log_reset_callbacks, silc_log_set_debug_callbacks and silc_log_reset_debug_callbacks. * To enable debugging in silc client one must give now -d option on command line. * Changed silc_schedule_init to automatically allocate task queues if they are not allocated before calling it. Thu Sep 7 10:49:33 EEST 2000 Pekka Riikonen * Added GMP 3.1 into math library. Sun Aug 20 21:27:26 EEST 2000 Pekka Riikonen * Added SILC_PACKET_REMOVE_CHANNEL_USER to remove a client from a channel in SILC network. The packet is used by servers and routers to notify other routers that user has left a channel. This little feature was missing until now. Added the feature to protocol specification as well. Added functions: silc_server_send_remove_channel_user and silc_server_remove_channel_user into server.[ch]. * Added SILC_PACKET_REKEY and SILC_PACKET_REKEY_DONE into lib/silccore/silcpacket.h. However, they are not implemented yet. Sat Aug 19 23:04:16 EEST 2000 Pekka Riikonen * Fixed joining to a channel and sending channel messages between server and router. The channel message sending should now work inside a cell. Tue Jul 25 20:46:13 EEST 2000 Pekka Riikonen * Fixed the private message sending between server and router. The private message sending should now work inside a cell. * Added silc_server_replace_id into server.[ch] to replace existing ID in the SILC network. * Added silc_idlist_find_server_by, silc_idlist_replace_client_id and silc_idlist_replace_server_id into idlist.[ch] in server. Mon Jul 24 18:33:31 EEST 2000 Pekka Riikonen * Fixed the server to server connections. Server can again now connect to router. Router to router connections probably does not work just yet. Thu Jul 20 13:15:01 EEST 2000 Pekka Riikonen * Added dynamic protocol registering support. Now protocols can registered and unregistered on the fly. Patch by cras. Wed Jul 19 19:08:46 EEST 2000 Pekka Riikonen * Added lib/contrib directory to hold routines that some platforms don't have but are needed by SILC. * Added getopt.c, getopt1.c and getopt.h from GNU C library into lin/contrib to provide getopt() and getopt_long() for those who don't have it. Tue Jul 18 20:41:20 EEST 2000 Pekka Riikonen * Added AWAY command to client. When away message is set and client receives a private message packet the client automatically replies to the sender with the away message. * Fixed a bug in lib/silcmath/mpbin.c: silc_mp_mp2bin. This bug seemed to be the cause of recent problems when compiling with gcc-2.95. * Added version detection support to SKE protocol specification and added the new changes to the SKE implementation as well. There were other minor changes in the SKE protocol as well. Many changes in lib/silcske/silcske.[ch] and in lib/silcske/payload.[ch]. * Added ^U functionality, clear input line. Patch from cras. Mon Jul 17 23:33:26 EEST 2000 Pekka Riikonen * Mainly small bugfixes on core library. Fixed some debugging logging and buffer overflow in silclog.c. * Updated config.sub and config.guess on the distribution tree. Sat Jul 15 15:33:48 EEST 2000 Pekka Riikonen * Added command lagging support in server. Client may execute commands now only once in two seconds. Thu Jul 13 22:10:21 EEST 2000 Pekka Riikonen * Optimized packet reception. MAC computation and checking is now also more optimized. A lot previously duplicated code is now used as generic by both client and server. * Fixed key pair generation in clientutil.c Wed Jul 12 18:28:07 EEST 2000 Pekka Riikonen * Added into lib/silccore/silcbufutil.[ch] new function; silc_buffer_realloc. * Moved generic packet sending/encryption functions to lib/silccore/silcpacket.[ch] from client and server. Some rewriting of the functions. * Moved all generic packet reception/decryption functions to lib/silccore/silcpacket.[ch] from client and server. The packet processing is now much cleaner in both client and server. These were major changes in both client and server. * Created many common functions in server to do packet sending. Previously code were duplicated a lot, this has been removed with these changes. Tue Jul 11 20:27:26 EEST 2000 Pekka Riikonen * Rewrote major parts of the ID cache system. Don't know whether it is better now or not but at least the API is more cleaner now. * Major rewrite on ID cache stuff on client because of the ID cache API changes. Added idlist.c to client. * Also major rewrite on ID cache stuff on server as well. Major rewrite of idlist.[ch]. SilcXXXList's are now named SilcXXXEntry's. We won't keep anymore idlist specific pointers in hand, instead they are all put into the ID cache system now. All server_idlist_* routines uses ID cache now instead of traversing its own lists (those lists does not exist anymore). SilcIDList though still exists. Also, SilcXXXEntry's are now pointers. Sun Jul 9 15:19:24 EEST 2000 Pekka Riikonen * Finally made the SKE implementation compliant to the protocol specification. All mp integers are now binary encoded as opposed being HEX encoded. * Added lib/silcmath/mpbin.[ch]. Encoding mp intergers to and from binary data. * Added into lib/silccore/silcutil.[ch] PEM encoding/decoding functions: silc_[encode/decode]_pem. Also added function silc_encode_pem_file to PEM encode with newlines ('\n') for saving into a file. * SILC public keys are now encoded either PEM or binary. Same option is for private keys as well. By default private keys are binary encoded and public keys PEM encoded. Silly HEX encoding were removed. * Added into lib/silccrypt/silchash.[ch] silc_hash_fingerprint function to create fingerprints. * Fixed a bug in SHA1; does not change the original data anymore. * Partly implemented INFO command on client and server side. Fixed CLEAR command. Changes to SERVER command; show current server(s) when giving command without arguments. Added VERSION command to client. * Added check to server that unregistered connections cannot execute commands (unless it is specificly allowed). Thu Jul 6 18:12:24 EEST 2000 Pekka Riikonen * Fixed screen refresh. * Fixed channel joining bug from client. On some circumstances client tried to join to a channel it had already joined. * Added public key verification process into client's protocol.c. The client now verifies the public key from user and saves it into ~./silc/serverkeys/ directory. Added into: clientutil.[ch]: silc_client_verify_server_key. * Changed SKE protocol's silc_ske_initiator_finish function to accept callback function that verifies the received public key. Removed old silc_ske_verify_public_key function. Wed Jul 5 19:19:02 EEST 2000 Pekka Riikonen * Added into silcpkcs[ch]: silc_pkcs_public_key[_data]_set and silc_pkcs_private_key[_data]_set. * Made the password and public authentication more cleaner in server's protocol.c. * Removed historic and obsolete protocol `channel_auth' from both client and server. * Removed wrong way of sending command status messages from server to client in server's command.c. The old way violated protocol specification. Changes to silccore/silccommand.[ch]: removed silc_command_encode_status_payload -> not needed anymore, changed silc_command_encode_payload_va to accept extra argument on variable argument list. The argument type must now be provided to the function. Also, added new function: silc_command_encode_reply_payload_va which is same as normal command_encode_payload_va except command status type is provided as extra argument. Tue Jul 4 18:26:39 EEST 2000 Pekka Riikonen * Added ~./silc directory handling. The directory includes the public and private keys for the client. Added silc_client_check_silc_dir, silc_client_create_identifier and silc_client_load_keys. * Implemented SILC protocol compliant public key. Added public and private key saving to and loading from files. Added into silcpkcs.[ch]: silc_pkcs_encode_identifier, silc_pkcs_public_key_encode[_data], silc_pkcs_public_key_decode, silc_pkcs_private_key_encode[_data], silc_pkcs_private_key_decode, silc_pkcs_public_key_alloc, silc_pkcs_public_key_free, silc_pkcs_private_key_alloc and silc_pkcs_private_key_free. Implemented: silc_pkcs_save_[public/private]_key[_data] and silc_pkcs_load_[public/private]_key. Mon Jul 3 18:51:27 EEST 2000 Pekka Riikonen * Added silc_server_get_route (route.[ch]) to get connection data for the fastest route for given ID. * Implemented INVITE command on client and server. The command were re-defined in the SILC Protocol Specification and the implementation now complies with the specification. * Implemented PING command on client and server. * Implemented NAMES command on client and server. The server side supports currently only normal server not router server yet. Some changes to NAMES definition in SILC protocol specification. Sun Jul 2 18:23:01 EEST 2000 Pekka Riikonen * Implemented LEAVE command on client and server. * Previously deprecated SILC_PACKET_FORWARDED flag is now in use again. This change was made to the protocol as well. Server should not violate the protocol specification anymore. Fri Jun 30 14:03:26 EEST 2000 Pekka Riikonen * Added SOCKS4 and SOCKS5 support to SILC client. SOCKS5 was tested. SOCKS4 was not but should work anyway.