updates.
[silc.git] / CHANGES
1 Sat Mar 16 22:39:23 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2
3         * Check for unauthenticated client and server in the
4           silc_server_new_client and silc_server_new_server functions.
5           Affected file silcd/packet_receive.c.
6
7         * Added function silc_string_is_ascii to check whether given
8           string is 7-bit ASCII string.  Affected files are
9           lib/silcutil/silcutil.[ch].
10
11         * Added function silc_id_is_valid_server_id into the
12           silcd/serverid.c and added checking for valid Server ID's in
13           silc_server_new_server.  The Server ID must always be based
14           on the server's public IP address.
15
16         * Added logging of DISCONNECT packet message in the server.
17           Affected file silcd/server.c.
18
19 Sat Mar 16 18:04:30 EET 2002  Pekka Riikonen <priikone@silcnet.org>
20
21         * Changed all library interfaces that use Global RNG to also
22           accept SilcRng as argument.  Affected files are
23           lib/silcclient/command.c, lib/silccore/silcauth.[ch],
24           lib/silccore/silcchanel.[ch], lib/silcclient/client_channel.c,
25           silcd/packet_send.c, lib/silccore/silcprivate.[ch],
26           lib/silcmath/silcprimegen.c, lib/silcmath/silcmath.h, and
27           lib/silccrypt/rsa.c.
28
29         * Added function silc_pkcs_generate_key to the
30           lib/silccrypt/silcpkcs.[ch] for applications so that they
31           don't need to do pkcs->pkcs->init calls anymore.
32
33         * Remove SilcSocketConnection from the SFTP API since it really
34           wasn't needed there.  The application has the information
35           saved in its contexts anyway and the SFTP layer doesn't need
36           know about it.  Affected files lib/silcsft/silcsftp.h and
37           lib/silcsftp/sftp_[server/client].c.
38
39         * Rewrote the SILC SIM (modules) interface in lib/silcsim.[ch].
40           The SilcSimContext is not SilcSim.
41
42         * Fixed possible buffer overflows in silc_id_render in the
43           lib/silcutil/silcutil.c.
44
45         * On EPOC the global crypto module lists are not used at all
46           in the crypto library.  Added support for using the constant
47           algorithm list on EPOC.  Affected files are
48           lib/silccrypt/silccipher.c, silchash.c, silchmac.c and
49           silcpkcs.c.
50
51         * Fixed the handling of third parameter of KICKED notify, since
52           it was mistakenly updated to SILC Protocol 1.0 even though it
53           is to be included in 1.1.  Since it is not in 1.0 it is not
54           mandatory, and this fix now handles it only if it is provided,
55           and it is not error if it is not provided.  Affected file 
56           lib/silcclient/client_notify.c.
57
58 Sat Mar 16 09:07:27 EET 2002  Pekka Riikonen <priikone@silcnet.org>
59
60         * Handled CHANNEL_CHANGE notify (ignore it) in Irssi SILC
61           client.  Affected file irssi/src/silc/core/client_ops.c.
62
63         * Merged with Irssi 0.8.4 from irssi.org CVS.
64
65 Thu Mar 14 12:53:57 CET 2002  Pekka Riikonen <priikone@silcnet.org>
66
67         * Check for valid socket connection in client entries before
68           sending any messages.  Fixes a crash, but doesn't fix some
69           other underlaying bug that is lurking there.  Affected
70           file silcd/packet_send.c.
71
72 Thu Mar 14 13:38:12 EET 2002  Timo Sirainen <tss@iki.fi>
73
74         * $usermode, $cumode and $cumode_space expandos shouldn't do
75           anything with non-SILC server records. Affected file
76           irssi/src/silc/core/silc-expandos.c
77
78 Wed Mar 13 21:38:26 EET 2002  Pekka Riikonen <priikone@silcnet.org>
79
80         * Fixed the silc_net_check_[host/local]_by_sock to support
81           IPv6 bound sockets as well.  Now they can return IPv6 addresses
82           as well.  Affected file lib/silcutil/silcnet.c.
83
84         * Fixed silc_net_addr2bin to correctly convert IPv6 addresses.
85           Affected lib/silcutil/unix/silcunixnet.c.
86
87         * Fixed ID rendering (at least on some platforms, not NetBSD)
88           for IPv6 addresses.  Affected file lib/silcutil/silcutil.c.
89
90 Tue Mar 12 17:58:59 EET 2002  Pekka Riikonen <priikone@silcnet.org>
91
92         * Added silc_hash_public_key and silc_hash_public_key_compare
93           functions to be used with SilcHashTable.  They can be used to
94           hash public keys and compare public keys in hash table.  Affected
95           file lib/silcutil/silcutil.[ch].
96
97         * Added support for specifying multiple public keys for Client
98           connection section in server configuration file.  This makes it
99           possible to accept multiple public keys from same host, or to
100           make a section that accepts any incoming host, and have the
101           accepted public keys listed in the section.
102
103           Added functions silc_sever_[find/get]_public_key,  added the
104           support for this actually to all connection sections but only
105           the Client section is currently allowed to specify multiple
106           public keys.
107
108           Affected files are silcd/server.c, server_internal.h,
109           command.c, protocol.c, server_util.[ch], packet_receive.c.
110
111 Mon Mar 11 23:37:38 EET 2002  Pekka Riikonen <priikone@silcnet.org>
112
113         * Merged Irssi 0.8.2 from irssi.org CVS.
114
115 Sun Mar 10 23:34:48 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
116
117         * If silc_debug is TRUE, also output standard logging messages
118           to stderr with the debug output.
119
120           Made silc_log_reset_all() flushing all channels before returning.
121           Also fixed some documentation typos.
122
123           Affected files are lib/silcutil/silclog.[ch].
124
125 Sun Mar 10 20:07:49 EET 2002  Pekka Riikonen <priikone@silcnet.org>
126
127         * Fixed the server to check correctly the amount of connections
128           from single host, by checking also the type of the connection.
129           Fixed also the comparison of number of connections and number
130           of allowed connections.  Affected files are silcd/server.c, 
131           server_util.[ch].
132
133 Fri Mar  8 17:16:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
134
135         * Fixed the USERS command reply to save the user's mode on the
136           channel as well.  Fixed JOIN command reply to check whether a
137           client is on channel already and not join it twice.  Affected
138           file lib/silcclient/command_reply.c.
139
140         * Added new file silc-expandos.c into irssi/silc/core/ to return
141           various stuff for various signal for the statusbar etc. updating.
142           Now Irssi SILC client prints channel user modes etc. on the
143           statusbar.
144
145         * The user mode (like server/router operator changes) is now shown
146           on the Irssi SILC client's statusbar.  The affected files are
147           irssi/src/silc/core/client_ops.c, silc-expandos.c.
148
149 Thu Mar  7 19:21:22 EET 2002  Pekka Riikonen <priikone@silcnet.org>
150
151         * Changed silc_mutex_[un]lock calls in lib/silcutil/silcschedule.c
152           to SILC_SCHEDULE_[UN]LOCK macros.
153
154         * Added more error printing to logs in server code.  Affected
155           files silcd/server.c and silcd/protocol.c.
156
157         * Fixed -S option parsing in Irssi SILC Client.  Affected file
158           irssi/src/silc/core/silc-core.c.
159
160         * Added silc_buffer_alloc_size function.  Affected file is
161           lib/silcutil/silcbuffer.h.
162
163 Tue Mar  5 14:37:27 EET 2002  Pekka Riikonen <priikone@silcnet.org>
164
165         * Changed all silc_[hash|hmac|cipher|pkcs]_default tables to
166           constants.  Affected files in
167           lib/silccrypt/silcpkcs.[ch], silchash.[ch], silchmac.[ch] and
168           silccipher.[ch].
169
170         * Changed the internal SFTP Memory FS table to const.  Affected
171           file lib/silcsftp/sftp_fs_memory.c.
172
173 Sun Mar  3 18:37:13 EET 2002  Pekka Riikonen <priikone@silcnet.org>
174
175         * Fixed the buffer formatting and unformatting routines to
176           check the size of 64 bits types with sizeof().  Affected
177           file is lib/silcutil/silcbuffmt.c.
178
179 Mon Feb 25 17:19:05 EET 2002  Pekka Riikonen <priikone@silcnet.org>
180
181         * Removed 0.6.x backwards support.
182
183 Sun Feb 24 12:53:25 EET 2002  Pekka Riikonen <priikone@silcnet.org>
184
185         * Changed all integer type names:
186           [u]int[8/16/32/64] -> Silc[UInt/Int][8/16/32/64].  This is
187           to avoid collisions with other libraries using same type names
188           as we did.
189
190 Sat Feb 23 20:31:43 EET 2002  Pekka Riikonen <priikone@silcnet.org>
191
192         * Added `prefer_ipv6' argument to the functions
193           silc_net_gethostbyname[_async].  If it is TRUE it will return
194           IPv6 address over IPv4.  If FALSE IPv4 address is returned
195           even if IPv6 address was found.  Affected files
196           lib/silcutil/silcnet.[ch].
197
198         * Added support silc_net_create_connection[_async] to fallback
199           to IPv4 address if IPv6 address could not be used (like if
200           it doesn't work on a specific system).  Affected file in
201           lib/silcutil/unix/silcunixnet.c.
202
203 Sat Feb 23 15:20:30 EET 2002  Pekka Riikonen <priikone@silcnet.org>
204
205         * Added silc_schedule_reinit function to do the enlarging
206           of the max tasks handling capabilities of the scheduler.
207           Affected files lib/silcutil/silcschedule.[ch].
208
209 Wed Feb 20 20:41:01 EET 2002  Pekka Riikonen <priikone@silcnet.org>
210
211         * Added automatic extern "C" { ... } for C++ compilers so the
212           application does not need to define them.  Affected file
213           includes/silcincludes.h.
214
215         * Renamed lib/silcclient/silcapi.h to silcclient.h as the
216           old name went against naming convention.  Applications now
217           include "silcclient.h" instead of "clientlibincludes.h".
218           Removed includes/clientlibincludes.h, it is redundant now.
219
220         * Renamed includes/version.h to silcversion.h.
221
222         * Added really preliminary support for OS/2 into the util
223           library.  Only thread & mutex API is implemented, others
224           are still to be implemented.  Created the lib/silcutil/os2/
225           directory.  Created also file includes/silcos2.h.
226
227 Wed Feb 20 18:48:49 EET 2002  Pekka Riikonen <priikone@silcnet.org>
228
229         * Added preliminary BeOS support into the util library.
230           Created lib/silcutil/beos/, and implemented all the needed
231           functions to support SILC on BeOS.  Created also file
232           includes/silcbeos.h.
233
234 Mon Feb 18 15:49:22 EET 2002  Timo Sirainen <tss@iki.fi>
235
236         * Added proper initializations to silc's irssi code, so it's
237           now possible to load it as module.  Affected files
238           irssi/src/silc/core/silc-core.c,
239           fe-common/silc/fe-common-silc-core.[ch] and fe-text/silc.c
240
241 Sun Feb 17 19:02:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
242
243         * Merged latest Irssi (0.8.1) from the irssi.org's CVS into
244           the SILC tree.
245
246         * Fixed the silcdoc document generator to correct generate
247           docs from all kinds of filenames.  Affected files are
248           util/robodoc/Source/generator.c, scripts/silcdoc/silcdoc
249
250         * ROBOdoc documented lib/silcutil/silcmemory.h.
251           Added also new function silc_memdup.
252
253         * Removed lib/silcutil/silcbufutil.h and moved those routines
254           to the lib/silcutil/silcbuffer.h.
255
256 Sun Feb 17 15:52:30 EET 2002  Pekka Riikonen <priikone@silcnet.org>
257
258         * Added `user_count' to the SilcChannelEntry which now tells the
259           number of users on the channel.  The user count is now saved
260           in normal server of global channels as well.  Affected files
261           silcd/server.c, idlist.h, packet_receive.c and command.c.
262
263         * Splitted lib/silcutil/silcutil.[ch] into silcfileutil.[ch] to
264           include file utility functions.
265
266         * Fixed the lib/silcsftp/sftp_fs_memory.c to use silcutil routines
267           instead of calling directly OS routines.
268
269         * Fixed NICK change printing in Irssi SILC Client. Fixed
270           KICKED notify printing in Irssi SILC Client.  Affected file
271           irssi/src/silc/core/client_ops.c.
272
273         * Fixed a NICK change bug in client library, to not recreate the
274           client_entry->channels hash table everytime nick is changed.
275           Affected file lib/silcclient/client.c.
276
277 Sun Feb 17 10:10:14 EET 2002  Pekka Riikonen <priikone@silcnet.org>
278
279         * ROBOdoc documented the lib/silcske/silcske.h, and improved
280           the SKE interface a bit.
281
282         * Fixed padding problem in PKCS#1. The padding was not actually
283           random since the random number generator was used incorrectly.
284           This security bug affects only when encrypting with PKCS#1, and
285           it is not currently used at all in SILC. SILC only use signing
286           with PKCS#1. Affected file lib/silccrypt/pkcs1.c.
287
288 Sat Feb 16 13:44:24 EET 2002  Pekka Riikonen <priikone@silcnet.org>
289
290         * Rewrote the notify handling in Irssi SILC client to not call
291           the events as signals.  Fixes problems with Perl support.
292           Affected files irssi/src/silc/core/client_ops.c, silc-channels.c.
293
294         * Send the auto-nicking NICK command in client library with
295           little timeout after connecting.  The affected file is
296           lib/silcclient/client.c.
297
298         * Added following new config file settings:
299           channel_rekey_secs, key_exchange_rekey, key_exchange_pfs,
300           key_exchange_timeout, conn_auth_timeout, connections_max,
301           links_max.
302
303           Implemented all the new config settings handling in the server.
304
305           Optimized the use of SKE Mutual flag usage.  Use it only
306           if connection authentication protocol is not based in public
307           key authentication.
308
309           Renamed all SilcServerConfigSection* to SilcServerConfig*
310           to have a bit shorter names.
311
312           Affected files silcd/serverconfig.[ch], server.[ch], and
313           protocol.[ch].
314
315 Sat Feb 16 02:46:43 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
316
317         * Cleaned up the listening sockets code, preparing for the rehash
318           support.  Affected file is silcd/server.c.
319
320         * Fixed some output messages.  Affected files are silcd/silcd.c,
321           and silcd/server.c.
322
323 Fri Feb 15 19:10:20 EET 2002  Pekka Riikonen <priikone@silcnet.org>
324
325         * Create lib/doc/silcrng_intro.html document as introduction
326           to SILC RNG.  ROBOdoc documented lib/silccrypt/silcrng.h.
327
328 Fri Feb 15 13:23:03 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
329
330         * Fixes to the silcd config template.  Affected file is
331           doc/example_silcd.conf.in.
332
333         * Removed type casts from silc_calloc(), conforming to the
334           CodingStyle.  Affected file is lib/silcutil/silcconfig.c.
335
336         * Removed param_name member from client, server, and router
337           section structs, now identifying the param directly.
338
339           Added CONFIG_FREE_AUTH macro in config file parsing.
340
341           Affected files are silcd/serverconfig.[ch].
342
343 Fri Feb 15 12:24:08 EET 2002  Timo Sirainen <tss@iki.fi>
344
345         * Fixed command line parameter handling. All SILC initialization
346           is now done in silc_core_init() which also fixes autoconnecting
347           to servers.
348
349           Affected files irssi/src/silc/core/silc-core.c,
350           irssi/src/fe-text/silc.c.
351
352 Thu Feb 14 22:03:58 EET 2002  Pekka Riikonen <priikone@silcnet.org>
353
354         * Added new configuration options and blocks:
355           keepalive_secs, reconnect_count, reconnect_interval,
356           reconnect_interval_max, reconnect_keep_trying and
357           require_reverser_lookup.  Added ConnectionParam block, and
358           implemented the connection parameters when connecting as
359           initiator and when accepting connections as responder. 
360
361           Added CONFIG_IS_DOUBLE macro in config file parsing, to check
362           whether given configuration value has been given already.
363
364           Affected files silcd/serverconfig.[c], server.[c].
365
366         * Splitted the doc/example_silcd.conf.in.  Separated the crypto
367           algorithm parts and created new file silcalgs.conf, that
368           is now included from the example_silcd.conf.in.
369
370         * Optimized the silc_server_connect_to_router_second to take
371           the connection configuration object from the SilcServerConnection
372           object instead of finding it during the connecting phase.
373           Added the configuration object to SilcServerConnection struct.
374           Affected files silcd/server_internal.h, server.c.
375
376 Thu Feb 14 16:02:26 CET 2002  Pekka Riikonen <priikone@silcnet.org>
377
378         * Add the client on channel after it was resolved at the
379           channel message receiving, and it was not already on the
380           channel.  Affected file lib/silcclient/client_channel.c.
381
382 Wed Feb 13 23:16:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
383
384         * Fixed the public key authentication to allocate always the
385           destination signature buffer instead of using static buffer.
386           Affected file silcd/protocol.c.
387
388 Wed Feb 13 20:51:13 EET 2002  Pekka Riikonen <priikone@silcnet.org>
389
390         * Unified the serverconfig.[ch]'s helper function interface.
391           Affected file silcd/serverconfig.[ch].
392
393         * Removed doc/example_silc.conf.in since it is redundant.
394           The make install will now install irssi/silc.conf file.
395
396         * Added new Passphrase and Publickey authentication methods to  
397           config file, allowing both public key and passphrase based
398           authentication to be set at the same time.
399
400           Added `prefer_passphrase_auth' setting in config file which
401           can be used to set to prefer passwd auth if both passwd and
402           public key is set.  If not set, public key is preferred.
403           This has effect only when being initiator (responder will try
404           both anyway).
405
406           Added support for authentication with passphrase and public key
407           at the same time.  The passphrase is tried first always since
408           it is faster to check.
409
410           Affected file silcd/serverconfig.[ch], server.c, protocol.[ch].
411
412 Wed Feb 13 12:46:25 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
413
414         * Merged the new SILC Config library, with the server parsing
415           support.  Read the header file silcconfig.h or the toolkit
416           documentation for the news.  Affected files are
417           doc/example_silcd.conf.in lib/silcutil/silcconfig.[ch]
418           silcd/command.c silcd/packet_receive.c silcd/packet_send.c
419           silcd/protocol.c silcd/server.c silcd/server_backup.c
420           silcd/serverconfig.[ch] silcd/silcd.c.
421
422         * Fixed some silclog documentation.  Affected file is
423           lib/silcutil/silclog.h.
424
425 Sun Feb 10 18:11:30 EET 2002  Pekka Riikonen <priikone@silcnet.org>
426
427         * The silc_cipher_register, silc_hash_register and
428           silc_hmac_register now checks if the object to be registered
429           is registered already.  Affected files are
430           lib/silccrypt/silccipher.c, silchash.c and silchmac.c.
431
432 Sun Feb 10 15:48:38 EET 2002  Pekka Riikonen <priikone@silcnet.org>
433
434         * Merged new irssi from irssi.org's CVS, the version 0.7.99.
435
436 Sat Feb  9 14:54:33 EET 2002  Pekka Riikonen <priikone@silcnet.org>
437
438         * Allow zero length channel messages inside the Channel Message
439           Payload.  Affected file lib/silccore/silcchannel.c.
440
441         * Fixed scripts/silcdoc/silcdoc to support all kinds of filenames
442           as header filenames.
443
444         * Removed lib/silcclient/README and created HTML file
445           lib/silcclient/silcclient_using.html, which is now included
446           as part of Toolkit documentation.
447
448 Thu Feb  7 10:12:25 CET 2002  Pekka Riikonen <priikone@silcnet.org>
449
450         * Fixed CUMODE_CHANGE notify handling to change the mode of
451           correct client.  Affected file lib/silcclient/client_notify.c.
452
453         * Make silc_rng_alloc fail if it cannot allocate the sha1
454           hash algorithm.  Affected file lib/silccrypt/silcrng.c.
455
456 Sun Feb  3 17:20:52 EET 2002  Pekka Riikonen <priikone@silcnet.org>
457
458         * Fixed the file transfer's key agreement payload to include
459           zero port also if the hostname is NULL because it could not
460           be bound.  
461
462           Call file transfer monitor callback now also if error occurs
463           during key agreement protocol.
464
465           Changed the silc_client_file_send interface to return the
466           SilcClientFileError instead of session id.  The session ID
467           is returned into pointer provided as argument.
468
469           Check that the file exists locally before sending the
470           file transfer request at all.
471
472           Affected file lib/silcclient/client_ftp.c, silcapi.h.
473
474         * Added SILC_CLIENT_FILE_KEY_AGREEMENT_FAILED file transfer
475           error than can occur while key agreement protocol.  Affected
476           file lib/silcclient/silcapi.h.
477
478         * Fixed the event_mode CMODE handler to not crash when mode
479           is changed and +k mode is set in the channel.  Affected file
480           irssi/src/silc/core/silc-channels.c.
481
482         * Fixed SILC_LOG_ERROR to give out Error and not Warning, and
483           SILC_LOG_WARNING to give out Warning and not Error.  Affected
484           file lib/silcutil/silclog.c.
485
486         * Fixed the channel message payload decryption in the function
487           silc_channel_message_payload_decrypt to not modify the original
488           buffer before it is verified that the message decrypted
489           correctly.  Otherwise, next time it is called with correct
490           channel key it won't encrypt since the payload is corrupted.
491           Affected file lib/silccore/silcchannel.c.
492
493 Sun Feb  3 11:46:12 EET 2002  Pekka Riikonen <priikone@silcnet.org>
494
495         * Do not constantly resize the window.  A fix patch by cras.
496           Affected file irssi/src/fe-text/screen.c.
497
498 Sat Feb  2 16:54:18 EET 2002  Pekka Riikonen <priikone@silcnet.org>
499
500         * Applied IPv6 fix patch from Jun-ichiro itojun Hagino.
501           Affected file lib/silcutil/silcnet.c.
502
503 Fri Feb  1 22:33:11 EET 2002  Pekka Riikonen <priikone@silcnet.org>
504
505         * Fixed a bug in hash table internal routine for traversing
506           the table with foreach callback.  The current entry may
507           become invalid in the callback but it was referenced after
508           the callback returned.
509
510           Do not allow auto rehashing of hash table during the
511           silc_hash_table_foreach operation, for same reasons as it is
512           not allowed for SilcHashTableList.  Affected files are
513           lib/silcutil/silchashtable.[ch].
514
515 Fri Feb  1 14:55:00 CET 2002  Pekka Riikonen <priikone@silcnet.org>
516
517         * Defined DLLAPI into silcincludes.h and silcwin32.h for
518           Win32 DLL.  extern's in header files are now declared with
519           DLLAPI.
520
521 Thu Jan 31 23:34:33 EET 2002  Pekka Riikonen <priikone@silcnet.org>
522
523         * Fixed private message handling.  It used some old code that
524           caused the client to crash.  Affecte file is
525           lib/silcclient/client_prvmsg.c.
526
527 Thu Jan 31 19:06:22 EET 2002  Pekka Riikonen <priikone@silcnet.org>
528
529         * Added function silc_client_add_channel, 
530           silc_client_replace_channel_id, and removed functions
531           silc_client_new_channel_id and silc_idlist_get_channel_by_id
532           from client library.
533
534         * Added cross reference of the joined channels to the 
535           SilcClientEntry, and changed the SilcChannelEntry's
536           users list to SilcHashTable.  The affected files are
537           lib/silcclient/idlist.[ch].
538
539         * Fixed a bug in hash table tarversing.  While the hash table
540           is traversed with SilcHashTableList the table must not be
541           rehashed.  It is now guaranteed that auto rehashable tables
542           are not rehashed while tarversing the list.  Also defined that
543           silc_hash_table_rehash must not be called while tarversing
544           the table.  Added function silc_hash_table_list_reset that must
545           be called after the tarversing is over.  The affected files are
546           lib/silcutil/silchashtable.[ch].
547
548         * Changed all hash table traversing to call the new
549           silc_hash_table_list_reset in server and in client library.
550
551         * Added function silc_client_on_channel to return the 
552           SilcChannelUser entry if the specified client entry is joined
553           on the specified channel.  This is exported to application as
554           well.  Affected files lib/silcclient/client_channel.c, silcapi.h.
555
556 Wed Jan 30 19:14:31 EET 2002  Pekka Riikonen <priikone@silcnet.org>
557
558         * Fixed founder regaining problem with JOIN command on normal
559           server.  The notify for mode change must be sent always and
560           not only if !cmd->pending.  Affected file silcd/command.c.
561
562         * Fixed the WHOWAS command's reply sending to support the
563           lists correctly.  Affected file silcd/command.c.
564
565 Wed Jan 30 11:11:47 CET 2002  Pekka Riikonen <priikone@silcnet.org>
566
567         * When sending JOIN command to router for processing the
568           sender's old command identifier was not saved back to the
569           sender's command context, fixed now.  The affected file is
570           silcd/command.c.
571
572         * Create the key in JOIN command of the router did not return
573           the channel key, added check for this.  Affected file is
574           silcd/command.c.
575
576         * Fixed a channel ID update bug in JOIN command reply.  Do
577           not directly upgrade the ID but call the function
578           silc_idlist_replace_channel_id if the ID was changed.
579           Affected file silcd/command_reply.c.
580
581         * Fixed memory leaks from command calling if it would fail.
582           Affected file silcd/command.c.
583
584 Tue Jan 29 19:49:31 EET 2002  Pekka Riikonen <priikone@silcnet.org>
585
586         * Applied patches from cras:
587
588           Memory leak fixes around libaries, irssi window resize fix,
589           new silclist.h and silcdlist.h, all extern inline changed to
590           static inline.
591
592         * Removed dotconf from lib/dotconf, not needed anymore.
593
594         * Removed TRQ from lib/trq, not needed anymore.
595
596         * Do more frequent heartbeats (5 minutes instead of 10 minutes)
597           with server connections.  Later this will be configurable
598           in config file after new config file is done.  Affected file
599           silcd/server.c.
600
601 Tue Jan 29 10:35:03 CET 2002  Pekka Riikonen <priikone@silcnet.org>
602
603         * Fixed a crash in server related to channel announcements.
604           Affected file silcd/server.c.
605
606 Mon Jan 28 17:49:42 EET 2002  Pekka Riikonen <priikone@silcnet.org>
607
608         * Fixed memory leaks in silc_server_create_new_channel*
609           functions.  Affected file silcd/server.c.
610
611         * Fixed the CHANNEL_CHANGE notify to re-announce the channel
612           which ID was changed.  This way the router will send the
613           user list for the channel again, and server won't be in 
614           desync in some rare circumstances.  Affected file is
615           silcd/packet_receive.c.
616
617 Sun Jan 27 21:04:19 EET 2002  Pekka Riikonen <priikone@silcnet.org>
618
619         * Check for NULL socket pointer in the function
620           silc_server_packet_send_to_channel_real.  Affected file
621           silcd/packet_send.c.
622
623         * Fixed the BAN notify handling to correctly remove ban
624           list.  Affected file silcd/packet_receive.c.
625
626 Sat Jan 26 23:01:03 EET 2002  Pekka Riikonen <priikone@silcnet.org>
627
628         * Fixed some header addition to Toolkit distribution in
629           lib/silcutil/Makefile.am and lib/trq/Makefile.am.
630
631         * Added lib/silcclient/client_ops_example.h as an template
632           file for application programmers to quickly start using
633           the SilcClientOperation functions in their application.
634           Updated the lib/silcclient/README as well to tell about this
635           nice file made available.
636
637 Sat Jan 26 10:45:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
638
639         * Call silc_server_remove_from_channels when removing client
640           entry when NO_SUCH_CLIENT_ID was received.  Affected file
641           is silcd/command_reply.c.
642
643 Fri Jan 25 19:12:36 EET 2002  Pekka Riikonen <priikone@silcnet.org>
644
645         * Added server & router operator statistics updating.  Affected
646           file silcd/packet_receive.c and silcd/command.c.
647
648         * Fixed the SERVER_SIGNOFF notify handling on normal server
649           not to save the history information for clients.  Same was
650           fixed earlier in remove_clients_by_server function, but not
651           here.  Affected file silcd/packet_receive.c.
652
653         * Raised the default connection-retry count from 4 to 7 in
654           server.  Affected file silcd/server.h.
655
656         * Cancel any possible reconnect timeouts when we start the
657           key exchange.  Affected file silcd/server.c.
658
659         * Do not reconnect on connection failure when SCONNECT was
660           given.  Affected files silcd/server.[ch].
661
662 Tue Jan 22 18:19:36 EET 2002  Pekka Riikonen <priikone@silcnet.org>
663
664         * Removed assert()'s from the lib/silcclient/client_keyagr.c.
665
666         * Fixed the NICK command to always give the unformatted
667           nickname to the one giving the NICK command.  If unformatted
668           nickname is cached already it will be formatted and the
669           local entry will always get the unformatted nickname.
670           Affected file lib/silcclient/idlist.c.
671
672         * Fixed some double frees from client library commands.
673           Affected file is lib/silcclient/command.c.
674
675         * Fixed CUMODE command in server to assure that no one can
676           change founder's mode than the founder itself, there was a
677           little bug.  Affected file silcd/command.c.
678
679 Mon Jan 21 19:07:53 EET 2002  Pekka Riikonen <priikone@silcnet.org>
680
681         * Removed the SilcClientCommandDestructor from the client
682           libary, it is not needed anymore.  Affected files are
683           lib/silcclient/silcapi.h, command[_reply].[ch],
684           client_notify, idlist.c.
685
686         * Fixed GETKEY command to first resolve client, and then
687           resolve the server only if the client was not found, instead
688           of resolving both at the same time.  Affected file is
689           lib/silcclient/command.c.
690
691         * Added silc_client_start_key_exchange_cb and lookup the
692           remote hostname and IP address before starting the key
693           exchange with server.  The affected file is 
694           lib/silcclient/client.c.
695
696         * The server's public key is now saved using the IP address
697           of the server and not the servername for the filename.
698           The hostname public key filename is checked as an fall back
699           method if the IP address based filename is not found.
700
701           Fixed the GETKEY command to save the fetched server key
702           in correct filename.
703
704           Print the remote server's hostname now when new key is
705           received during connection process.  Affected file is
706           irssi/src/silc/core/client_ops.c.
707
708         * Return always our own public key to the client if it asks
709           for it with GETKEY command.  Affected file silcd/command.c.
710
711         * Removed the use_auto_addr variable from default config
712           file since it was in wrong section.  Affected file is
713           irssi/src/config.
714
715         * Fixed TOPIC_CHANGE notification to not route it when it
716           was sent using silc_server_send_notify_to_channel function.
717           Affected file silcd/command.c.
718
719         * Fixed silc_server_send_notify_kicked to send the kicker's
720           Client ID also, it was missing.  Affected files are
721           silcd/command.c, silcd/packet_send.[ch].
722
723 Thu Jan 17 18:59:11 EET 2002  Pekka Riikonen <priikone@silcnet.org>
724
725         * Do not save client history information in SERVER_SIGNOFF.
726           Fixes the bug in normal server that it does not detect
727           the client becoming valid after the server becomes back
728           online.  Affected file silcd/server_util.c.
729
730         * Added `sock_error' field  into the SilcSocketConnection
731           context.  When error occurs during socket operation (read
732           or write) the error is saved.  Added also new function
733           silc_socket_get_error to return human readable socket error
734           message.  Affected files are lib/silcutil/silcsockconn.[ch], 
735           lib/silcutil/unix/silcunixsockconn.c, and
736           lib/silcutil/win32/silcwin32sockconn.c.
737
738         * The server now prints the socket error message in the
739           signoff for client.  Affected file silcd/server.c.
740
741         * Fixed the `created' channel information sending from router
742           to server in JOIN command.  Checks now whether the channel
743           really was created or not and set it according that. 
744
745           Fixed the JOIN command to use the client entry's current
746           ID during the joining procedure instead of the one it sent
747           in the command (it is checked though), since it can change
748           between the packet processing and command processing, and 
749           would just case unnecessary pain in the client end.  Affected
750           file silcd/command.c.
751
752         * Fixed a channel key payload sending to use correct channel
753           ID when the server was forced to change the channel's ID by
754           router.  Router sent the key payload with the old Channel ID.
755           Affected file silcd/packet_receive.c.
756
757 Wed Jan 16 22:26:30 EET 2002  Pekka Riikonen <priikone@silcnet.org>
758
759         * Call silc_server_save_channel_key only if the key payload
760           was provided in the JOIN command's command reply.  Affected
761           file silcd/command_reply.c.
762
763 Tue Jan 15 18:49:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
764
765         * Fixed silc_mp_sizeinbase to return the value correctly with
766           MPI.  Affected file lib/silcmath/mp_mpi.c.
767
768         * Fixed the stop_server signal to correctly stop the scheduler
769           and gracefully stop the server when SIGTERM or SIGINT signals
770           are received.  Affected file silcd/silcd.c.
771
772 Mon Jan  7 23:38:19 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
773
774         * Simple handling of TERM and HUP signals. Also added some log
775           flushing call around.  Affected file is
776           silcd/silcd.c.
777
778         * Fixed small bugs in silclog.c. Now buffering output will take
779           effect after 10 seconds since startup: This will ensure that
780           no important startup messages are lost. Also output redirection
781           will preserve original format ([Date] [Type] message).
782           Affected file is lib/silcutil/silclog.c.
783
784         * Added two options to the config file, in the logging section:
785           quicklogs:<yes/no>: and flushdelay:<seconds>:.  Affected files
786           lib/silcutil/silclog.[ch], silcd/serverconfig.[ch].
787
788 Sun Jan  6 12:49:40 EET 2002  Pekka Riikonen <priikone@silcnet.org>
789
790         * Do not print the warning about log files not being initialized
791           more than once to avoid excess logging.  Affected file is
792           lib/silcutil/silclog.c.
793
794         * Fixed the SIM compilation in lib/silcsim/Makefile.am.  Fixed
795           the SIM copying in make install in Makefile.am.pre.
796
797 Sun Jan  6 01:10:21 CET 2001  Johnny Mnemonic <johnny@themnemonic.org>
798
799         * Rewritten silclog APIs. Globally interesting changes follows:
800           silc_log_set_files() changed to silc_log_set_file().
801           silc_log_set_callbacks() changed to silc_log_set_callback().
802           ROBOdoc documented silclog header file.
803           SilcLogCb now returns bool to wether inihibit the default
804           handler or not (to keep the old behaviour return always TRUE).
805           The new APIs should also fix the problem of the
806           silcd_error.log file that was written in the current directory.
807
808           New features:
809           Log files streams will remain opened after silc_log_set_file()
810           call, means less CPU usage notably on high traffic servers.
811           File streams are now full buffered, and flushed to the disk
812           every 5 minutes, lesses HD activity and CPU usage.
813           Messages can be redirected, allowing admins to configure
814           one single logfile for all server messages.
815           the silc_log_quick global variable to activate fast-logging.
816           Affected files lib/silcutil/silclog.[ch]
817
818         * Changed some code to conform new silclog APIs. Affected
819           files are doc/example_silcd.conf.in, silcd/server.c
820           irssi/src/silc/core/silc-core.c, silcd/serverconfig.[ch],
821           silcd/silcd.c.
822
823         * Fixed a memory leak that could occur in some situations.
824           Affected file silcd/serverconfig.c.
825
826 Sat Jan  5 13:37:29 EET 2002  Pekka Riikonen <priikone@silcnet.org>
827
828         * Added the silc_client_del_client to remove the client from
829           all channels as well.  Affected file lib/silcclient/idlist.c.
830
831         * Fixed the client library to correctly remove the client
832           from all channels when the client entry is being destroyed.
833           Affected file lib/silcclient/client_notify.c, command.c.
834
835         * Added auto-nicking support to the client library.  If the
836           applicatio now sets client->nickname it will be sent to the
837           server after connecting by the library.  This way for example
838           SILCNICK (or IRCNICK) environment variables will have effect
839           and always change the nickname automatically to whatever
840           it is wanted.  Affected file lib/silcclient/client.[ch].
841
842         * Renamed silc_server_command_bad_chars to the
843           silc_server_name_bad_chars and moved it to the
844           silcd/server_util.[ch].  Added also new function
845           silc_server_name_modify_bad to return nickname that
846           includes bad characters as new nickname without those
847           bad characters.  This check and modify is now used in
848           silc_server_new_client when the username is initially set
849           as nickname, so it must be checked to be valid nickname.
850           Affected file silcd/packet_receive.c.
851
852         * The nickname length is now taken from the packet for real
853           and not trusted to strlen() since it clearly can return
854           wrong length for nickname including bad characters.  This
855           also applies to channel names.  Affected file silcd/command.c.
856
857         * Removed the lib/silcsilm/modules directory.  Modules are now
858           compiled into the lib/silcsim.  Fixed the copying of the
859           modules to follow symbolic links in Makefile.am.pre.
860
861 Wed Jan  2 18:56:21 EET 2002  Pekka Riikonen <priikone@silcnet.org>
862
863         * Fixed silc_string_regexify list creation.  Fixes bugs with
864           BAN and INVITE commands in server.  The affected file is
865           lib/silcutil/unix/silcunixutil.c.
866
867 Sun Dec 30 13:41:34 EET 2001  Pekka Riikonen <priikone@silcnet.org>
868
869         * Removed the command destructor entirely from the server's
870           command and command reply routines.  It is not needed, and
871           its usage was buggy and caused crashes.  Affected files are
872           silcd/command[_reply].[ch].
873
874 Fri Dec 28 12:43:22 EET 2001  Pekka Riikonen <priikone@silcnet.org>
875
876         * Cancel protocol and NULL sock->protocol if timeout
877           occurred during protocol.  Affected file silcd/server.c.
878
879         * Cancel protocol timeouts always before calling the final
880           callback, to assure that after final callback is called
881           no other state will be called for the protocol anymore.
882           Affected file silcd/protocol.c.
883
884         * Print error log if incoming connection configuration could
885           not be found.  Affected file silcd/server.c.
886
887         * Fixed JOIN command to correctly save the founder mode
888           to the client on normal SILC server, when the channel
889           was created by the router.  Affected file silcd/command.c.
890
891         * Fixed LIST command (hopefully) to send correct reply
892           packets.  Affected file silcd/command.c.
893
894 Thu Dec 20 16:14:52 CET 2001  Pekka Riikonen <priikone@silcnet.org>
895
896         * The silc_packet_receive_process now returns FALSE if the
897           read data was invalid packet, and TRUE if it was ok.
898
899           The server now checks that if unauthenticated connection
900           sends data and its processing fails the server will close
901           the connection since it could be a malicious flooder. 
902
903           Affected files lib/silccore/silcpacket.[ch], silcd/server.c.
904
905 Wed Dec 19 21:31:25 EET 2001  Pekka Riikonen <priikone@silcnet.org>
906
907         * Make sure the warning about error opening a log file is
908           printed only once and not everytime it fails (produces
909           too much useless log).  Affected file lib/silcutil/silclog.c.
910
911 Wed Dec 19 18:21:51 CET 2001  Johnny Mnemonic <johnny@themnemonic.org>
912  
913         * Made the silc_server_daemonise() function more readable.
914           Affected file silcd/server.c.
915  
916         * Pid file is now optional, the user may comment it out from
917           the config file. Removed define SILC_SERVER_PID_FILE, we
918           don't need a default any longer.  Affected file
919           configure.in.pre, lib/Makefile.am.pre.
920  
921         * Make some use of the pid file. The server now dies at startup
922           if it detects a valid pid file on his path. The server would
923           die anyway in this circumstance, because of the bind() failure.
924           Affected file silcd/silcd.c.
925  
926         * No longer compiling lib/dotconf.
927
928 Mon Dec 17 18:24:27 EET 2001  Pekka Riikonen <priikone@silcnet.org>
929
930         * Fixed JOIN command parsing not to crash.  Affected file
931           lib/silcclient/command.c.
932
933         * Fied the NICK_CHANGE notify to add the new client entry
934           even it is resolved.  This removes an <[unknown]> nick
935           thingy bug in the client.  Affected file is 
936           lib/silcclient/client_notify.c.
937
938         * Do not try to allocate 0 bytes (efence does not like it)
939           in lib/silccore/silccomand.c when encoding payload.
940
941         * Do not take IRCNICK as nickname in Irssi SILC client since
942           it is not possible to set nickname before hand connecting
943           the server (TODO has an entry about adding auto-nicking
944           support).
945
946         * Changed the silc_server_command_pending to check whether
947           there already exists an pending entry with the specified
948           command, command identifier and pending callback.  This is
949           to fix IDENTIFY and WHOIS related crashes that may register
950           multiple pending commands with same identifier.  Affected
951           file silcd/command.c.
952
953         * Fixed the server to reconnect to the router even if it
954           was already reconnecting and EOF was received.  This to
955           fix a possibility that the server wouldn't ever try to
956           auto-reconnect to the router.  Affected file silcd/server.c.
957
958 Sat Dec 15 20:31:50 EET 2001  Pekka Riikonen <priikone@silcnet.org>
959
960         * Fixed the server's password authentication to use the
961           length of the locally saved password, and not the one
962           sent in the packet.  Affected file silcd/protocol.c.
963
964         * Fixed same password authentication problem in the
965           Authentication Payload handling routines in
966           lib/silccore/silcauth.c.
967
968         * Yet another password authentication problem fixed with
969           channel password handling in silcd/command.c.
970
971 Mon Dec 10 19:57:40 EET 2001  Pekka Riikonen <priikone@silcnet.org>
972
973         * If first character of string in silc_parse_userfqdn is '@'
974           then do not parse it.  Affected file is
975           lib/silcutil/silcutil.c.
976
977 Sun Dec  9 22:18:50 EET 2001  Pekka Riikonen <priikone@silcnet.org>
978
979         * Fixed minor bug in IDENTIFY command reply sending, which
980           caused various weird problems during JOIN when it was
981           resolving names for users.  Affected file silcd/command.c.
982
983 Sun Dec  9 19:18:41 EET 2001  Pekka Riikonen <priikone@silcnet.org>
984
985         * Fixed the IDENTIFY command reply sending to chech better valid
986           clients.  It was possible to send incomplete list of replies.
987           Affected file silcd/command.c.
988
989 Sat Dec  8 15:58:31 EET 2001  Pekka Riikonen <priikone@silcnet.org>
990
991         * Added silc_client_command[s]_[un]register functions now to
992           dynamically register the commands in client library.  Removed
993           the static table of commands.  This allows the client library
994           to call commands without causing the application to know about
995           what commands library has called.
996
997           Removed the INFO command reply kludge to detect when the command
998           was called by library.  Now library use its own command reply
999           function for INFO command.
1000
1001           Added function silc_client_command_call to call a command.
1002           Application can use it to call command, not access the structure
1003           directly.
1004
1005           Now all commands that are sent by the client library (not
1006           explicitly sent by application) use own command reply functions.
1007
1008           Affected files around lib/silcclient/ and in
1009           irssi/src/silc/core/.
1010
1011         * Fixed the WHOIS command reply sending to chech better valid
1012           clients.  It was possible to send incomplete list of replies.
1013
1014           Fixed the WHOIS and IDENTIFY to send the request to router
1015           if normal server did not do it and did not find any results.
1016
1017           Affected file silcd/command.c.
1018
1019 Thu Dec  6 17:21:06 EET 2001  Pekka Riikonen <priikone@silcnet.org>
1020
1021         * Moved the internal data from SilcClient context into its
1022           own file, not accesible to application.  Affected files
1023           lib/silcclient/client.h and lib/silcclient/client_internal.h,
1024           and other files in client library.
1025
1026 Thu Dec  6 10:37:55 EET 2001  Pekka Riikonen <priikone@silcnet.org>
1027
1028         * Added doc/examples installation target in Makefile.am.pre.
1029           A patch by salo.
1030
1031 Tue Dec  4 17:43:19 EET 2001  Pekka Riikonen <priikone@silcnet.org>
1032
1033         * If NO_SUCH_CLIENT_ID notify is received for WHOIS or IDENTIFY
1034           commands the found client entry will be removed from the
1035           cache, after notifying application about the error.  Affected
1036           file lib/silcclient/command_reply.c.
1037
1038         * Changed the /MSG to check for exact nickname user gave, and
1039           not let `nick' match `nick@host' if it is only one found.  Now,
1040           user must type the exact nickname (like nick@host2) even if
1041           there are no more than one same nicks found.  This is to avoid
1042           a possibility of sending nickname to wrong nickname since
1043           `nick' could match `nick@host'.  Affected file is
1044           irssi/src/core/silc-servers.c.
1045
1046 Mon Dec  3 18:49:45 EET 2001  Pekka Riikonen <priikone@silcnet.org>
1047
1048         * Do not print "you are now server operator" or similar when
1049           giving /away command.  Affected files are
1050           irssi/src/silc/core/client_ops.c, silc-servers.h.
1051
1052         * Made the silc_server_command_pending_error_check to send
1053           the same command reply payload it received back to the
1054           original sender of the command.  This way all arguments
1055           that was received by the server will be received by the
1056           client too.  Affected file silcd/command.c.
1057
1058         * Added the silc_idcache_add to return the created cache entry
1059           to a pointer.  Affected file lib/silccore/silcidcache.[ch].
1060
1061         * Add global clients to expire if they are not on any channel.
1062           This is because normal server will never know if they signoff
1063           if they are not on any channel.  The cache expiry will take
1064           case of these entries.  This is done by normal servers only.
1065           The affected files are silcd/command_reply.c,
1066           silcd/idlist.[ch], silcd/server and silcd/packet_receive.c.
1067
1068         * If server receives invalid ID notification for WHOIS or
1069           IDENTIFY and the ID exists in the lists, it is removed.
1070           Affected file silcd/command_reply.c.
1071
1072         * If NO_SUCH_CLIENT_ID is received for WHOIS or IDENTIFY command
1073           in client then client entry that it matches is searched and
1074           the nickname is printed on the screen for user.  Affected
1075           file irssi/src/silc/core/client_ops.c.
1076
1077 Mon Dec  3 11:56:59 EET 2001  Pekka Riikonen <priikone@silcnet.org>
1078
1079         * Use cache entry expire time in the LIST command reply to
1080           purge old entries from the cache after the LIST command
1081           reply has been received.  This way we don't have non-existent
1082           entries in the cache for too long.  Affected file is
1083           silcd/command_reply.c.
1084
1085 Sun Dec  2 23:29:07 EET 2001  Pekka Riikonen <priikone@silcnet.org>
1086
1087         * If we are normal server, and we've not resolved client info
1088           in WHOIS or IDENTIFY from router, and it is global client,
1089           we'll check whether it is on some channel.  If it is not
1090           then we cannot be sure about its validity and will resolve it
1091           from router.  Fixes a bug in WHOIS and IDENTIFY.  Affected 
1092           file silcd/command.c.
1093
1094         * Search channel by name (if possible) rather than by ID
1095           in IDENTIFY command's command reply.  Affected file is
1096           silcd/command_reply.c.
1097
1098 Sun Dec  2 13:48:46 EET 2001  Pekka Riikonen <priikone@silcnet.org>
1099
1100         * Distribute to the channel passphrase in CMODE_CHANGE notify.
1101           Updated specs and implemented it.  Affected file silcd/command.c,
1102           silcd/packet_send.c and silcd/packet_receive.c.
1103
1104         * Implemented the <founder auth> payload handling in the JOIN
1105           command.  If provided all conditions for channel joining
1106           except requirement to provide correct passphrase can be 
1107           overrided by the channel founder.  Updated the protocol specs.
1108           Affected file silcd/command.c.
1109
1110           Added support for founder auth in JOIN command in client
1111           library.  Fixed the parsing of the JOIN command now to support
1112           all options as they should be.  The affected file is
1113           lib/silcclient/command.c.
1114
1115         * Optimized the WHOIS and IDENTIFY commands to send the request
1116           to router only if it includes nicknames or other names.  If
1117           they include only IDs then check the local cache first before
1118           routing.  Affected file is silcd/command.c.
1119
1120         * Added channels topic announcements.  Affected file is
1121           silcd/packet_receive.c and silcd/server.c.
1122
1123         * Fixed the silc_server_send_notify_topic_set to really destine
1124           the packet to channel.  Affected file silcd/packet_send.c.
1125
1126         * Fixed a crash in CHANNEL_CHANGE notify handling in the client
1127           library.  Affected file lib/silcclient/client_notify.c.
1128
1129         * Added UMODE announcements.  Affected file silcd/server.c.
1130
1131 Sat Dec  1 12:52:39 EET 2001  Pekka Riikonen <priikone@silcnet.org>
1132
1133         * Memory leak fixes in:
1134
1135           lib/silcutil/silcsockconn.c
1136           lib/silcske/silcske.c
1137           lib/silcske/groups.c
1138           lib/silccrypt/rsa.c
1139           lib/silccrypt/silcpkcs.c
1140           lib/silccore/silccommand.c
1141           lib/silccore/silcidcache.c
1142           silcd/idlist.c
1143           silcd/packet_send.c
1144           silcd/command.c
1145
1146         * ROBOdoc documented the lib/silcske/groups.h file and a
1147           bit changed the interface for better.
1148
1149 Thu Nov 29 22:12:50 EET 2001  Pekka Riikonen <priikone@silcnet.org>'
1150
1151         * Update the client entry context in the ID cache after
1152           nick change.  Affected file lib/silcclient/command.c.
1153           Fixes the CUMODE command when regaining founder privileges,
1154           and a little WHOIS problem.
1155
1156         * Fixed silc_net_gethostbyname to correctly call the
1157           inet_ntop.  Affected file lib/silcutil/silcnet.c.
1158
1159 Thu Nov 29 19:31:23 EET 2001  Pekka Riikonen <priikone@silcnet.org>'
1160
1161         * Added IPv6 support checking to the configure.in.pre, added
1162           also --enable-ipv6 option to override the check.  Affected
1163           file configure.in.pre.
1164
1165         * The silc_thread_create now calls the start function
1166           directly if threads support is not compiled in.  Removes
1167           ugly #ifdef's from generic code.  Affected files are
1168           lib/silcutil/unix/silcunixthread, win32/silcwin32thread.c.
1169
1170         * Added silc_net_gethostby[name/addr]_async to asynchronously
1171           resolve.  Affected files are lib/silcutil/silcnet.[ch].
1172
1173         * Added support for rendering IPv6 based server, client and
1174           channel IDs.  Affected file lib/silcutil/silcutil.c.
1175
1176         * Added support for creating IPv6 based server IDs.  Affected
1177           file is silcd/serverid.c.
1178
1179 Wed Nov 28 23:46:09 EET 2001  Pekka Riikonen <priikone@silcnet.org>'
1180
1181         * Added silc_net_gethostby[addr/name] into the
1182           lib/silcutil/silcnet.[ch].  Added IPv6 support to Unix network
1183           routines.  Added silc_net_is_ip[4/6].  Affected file is
1184           lib/silcutil/unix/silcunixnet.c.  All routines that take
1185           address as argument now supports both IPv4 and IPv6 addresses.
1186
1187 Mon Nov 26 18:09:48 EET 2001  Pekka Riikonen <priikone@silcnet.org>'
1188
1189         * Fixed LIST command reply sending in server.  Affected file
1190           silcd/command.c.
1191
1192         * Server now sends the kicker's client ID in the KICK notify
1193           to the kicked client.  Affected file silcd/command.c.
1194
1195         * The client library now parses the kickers client ID and
1196           UI displays it.  Affected files lib/silcclient/client_notify.c
1197           and irssi/src/silc/core/silc-channels.c, module-formats.c.
1198
1199         * Made all payload parsing function prototypes consistent.
1200           They all take now const unsigned char * and uint32 pair as
1201           the payload data instead of SilcBuffer.  Changes all around
1202           the source tree.  Other unsigned char* -> const unsigned char*
1203           changes around the tree as well.
1204
1205         * Optimized SFTP client and server packet sending not to
1206           allocate new buffer for each packet but to recycle the
1207           first allocated buffer.  Affected files are
1208           lib/silcsftp/sftp_client.c, sftp_server.c, sftp_util.[ch].
1209
1210         * Optimized the SFTP client to use SilcList instead of
1211           SilcDList for requests, because it is faster.  Affected file
1212           is lib/silcsftp/sftp_client.c.
1213
1214         * Moved the ID Payload routines from lib/silccore/silcpayload.[ch]
1215           into lib/silccore/silcid.[ch].
1216
1217           Renamed silcpayload.[ch] into silcargument.[ch].
1218
1219 Mon Nov 26 15:01:53 CET 2001  Pekka Riikonen <priikone@silcnet.org>
1220
1221         * If client entry is deleted with active key agreement
1222           session, abort the session.
1223
1224           The silc_client_abort_key_agreement now calls the completion
1225           callback with new SILC_KEY_AGREEMENT_ABORTED status.
1226
1227           Affected file lib/silcclient/silcapi.h, client_keyagr.c and
1228           idlist.c.
1229
1230 Sun Nov 25 18:01:45 EET 2001  Pekka Riikonen <priikone@silcnet.org>
1231
1232         * Don't use __restrict in older GCC's.  Affected file is
1233           lib/silcmath/mpi/mpi-priv.h.  A patch by salo.
1234
1235         * silc_net_localhost now attempts to reverse lookup the
1236           IP/hostname.  Affected file lib/silcutil/silcnet.c.
1237
1238         * Defined <founder auth> argument to the SILC_COMMAND_JOIN
1239           command.  It can be used to gain founder privileges at 
1240           the same time when joining the channel.
1241
1242           Defined that the SILC_NOTIFY_TYPE_KICKED send the 
1243           kicker's client ID as well.  Updated protocol specs.
1244
1245           Defined that the server must send SILC_COMMAND_IDENTIFY
1246           command reply with error status to client who sent
1247           private message with invalid client ID.
1248
1249           Updated the protocol specification.
1250
1251         * Added silc_server_send_command_reply to send any
1252           command reply.  Affected file silcd/packet_send.[ch].
1253
1254         * Added silc_id_payload_encode_data to encode ID payload
1255           from raw ID data.  Affected file lib/silccore/silcpayload.[ch].
1256
1257         * The server now send IDENTIFY command reply with error
1258           status if client ID in private message is invalid.  Affected
1259           file silcd/packet_receive.c.
1260
1261         * Save the server key file with server's IP address in
1262           the filename instead of hostname.  The affected file is
1263           irssi/src/silc/core/client_ops.c.
1264
1265 Sat Nov 24 20:08:22 EET 2001  Pekka Riikonen <priikone@silcnet.org>
1266
1267         * Typo fixes in irssi/src/fe-common/silc/module-formats.c.
1268           A patch by Sunfall.
1269
1270         * Added libtool support for compiling shared objects in
1271           lib/silcsim.  Affected file configure.in.pre and
1272           lib/silcsim/Makefile.am.  Original patch by cras.
1273
1274 Fri Nov 23 23:30:59 EET 2001  Pekka Riikonen <priikone@silcnet.org>
1275
1276         * Pid file configuration, and server's config file fixes
1277           patch by toma.  Updated CREDITS file. 
1278
1279 Sun Nov 18 01:34:41 EET 2001  Pekka Riikonen <priikone@silcnet.org>
1280
1281         * Fixed silc_client_channel_message to not try to decrypt
1282           the message twice if it resolved the destination client
1283           information.  This could cause of dropping one channel
1284           message.  Affected file lib/silcclient/client_channel.c.
1285
1286 Wed Nov 14 23:44:56 EET 2001  Pekka Riikonen <priikone@silcnet.org>
1287
1288         * Added silc_client_run_one into lib/silcclient/silcapi.h and
1289           lib/silcclient/client.c. This function is used when the SILC
1290           Client is run under some other scheduler, or event loop or
1291           main loop.  On GUI applications, for example this may be
1292           desired to used to run the client under the GUI application's
1293           main loop.  Typically the GUI application would register an
1294           idle task that calls this function multiple times in a second
1295           to quickly process the SILC specific data.
1296
1297 Wed Nov 14 19:16:52 CET 2001  Johnny Mnemonic <johnny@themnemonic.org>
1298
1299         * Fixed silc_server_drop() for dropping the supplementary
1300           groups as well, this could cause a security hole on some
1301           systems.
1302
1303 Wed Nov 14 16:22:25 EET 2001  Pekka Riikonen <priikone@silcnet.org>
1304
1305         * __pid_t -> pid_t in lib/silccrypt/silcrng.c.  A patch by
1306           johnny.
1307
1308         * Write PID file after dropping privileges.  Added -F option
1309           to run server on foreground.  A patch by debolaz.
1310           Affected files silcd/server.c, silcd/silcd.c.
1311
1312         * Fixed MOTD to return the MOTD file server name.  Affected
1313           file silcd/command.c.
1314
1315         * Added INFO command reply handling to the Irssi SILC Client.
1316           Affected file irssi/src/silc/core/client_ops.c.
1317
1318 Wed Nov 14 00:18:08 EET 2001  Pekka Riikonen <priikone@silcnet.org>
1319
1320         * Fixed the silc_idcache_list_* routines to really support
1321           the dynamic list.  Fixes a crash.  Affected file is
1322           lib/silccore/silcidcache.c.
1323
1324         * Fixed the LIST command reply to really call LIST command's
1325           pending callbacks.  Affected file silcd/command_reply.c.
1326
1327 Tue Nov 13 00:49:17 EET 2001  Pekka Riikonen <priikone@silcnet.org>
1328
1329         * Update conn->local_entry->nickname after giving NICK
1330           command.  Affected file lib/silcclient/command.c.
1331
1332 Sun Nov 11 23:43:02 PST 2001  Brian Costello <bc@wpfr.org>
1333
1334         * Added the [pid] option to the silcd configuration file
1335
1336           Affected files: serverconfig.[ch] and silcd.c
1337
1338 Sun Nov 11 23:56:39 EET 2001  Pekka Riikonen <priikone@silcnet.org>
1339
1340         * Save fingerprint in WHOIS command reply in server.
1341           Affected file silcd/command_reply.c.
1342
1343         * Fixed NICK commands pending callback registration.
1344           Affected file lib/silcclient/command.c.
1345
1346 Sun Nov 11 10:49:10 EET 2001  Pekka Riikonen <priikone@silcnet.org>
1347
1348         * Use ++server->cmd_ident when sending commands in server,
1349           instead of random number.  Affected file silcd/command.c.
1350
1351         * Fixed GETKEY command reply to call actually GETKEY pending
1352           command callbacks.  Affected file silcd/command_reply.c.
1353
1354         * A bit stricter check for nicknames.  Check for same nickname
1355           in NICK command also.  Affected file silcd/command.c.
1356
1357         * Do not call INFO command everytime client ID changes, only
1358           during first connecting.  Affected file lib/silcclient/client.c.
1359
1360         * Set the new nickname only after successful command reply for
1361           NICK command is returned by server.  Affected file
1362           lib/silcclient/command.c.
1363
1364         * Remove nicknames from nicklist during server_signoff notify.
1365           Should fix /NAMES bit more.  The affected file is
1366           irssi/src/silc/core/silc-channels.c.
1367
1368         * Added `fingerprint' field to the SilcIDListData in the 
1369           silcd/idlist.h to hold the fingerprint of the client's
1370           public key.
1371
1372           Send the fingerprint of the client's public key in WHOIS
1373           command reply.
1374
1375           Affected files silcd/command.c, and silcd/idlist.[ch].
1376
1377         * Added silc_fingerprint into lib/silcutil/silcutil.[ch] to
1378           create fingerprint from given data.
1379
1380         * Show the fingerprint of the client's public key in WHOIS.
1381           Affected files irssi/src/module-formats.[ch] and
1382           irssi/src/silc/core/client_ops.c.
1383
1384         * Format the multiple same nicknames also during JOIN and
1385           NICK_CHANGE notifys.  Affected file is
1386           lib/silcclient/client_notify.c.
1387
1388         * Do not print error on screen for invalid private message
1389           payload since it can come if someone is sending private
1390           messages with wrong key.  Affected file
1391           lib/silccore/silcprivate.c.
1392
1393         * Fixed multiple concurrent /PING crash.  Affected file
1394           lib/silcclient/command.c.
1395
1396         * Changed the wrong ID encoding.  All IP addresses must be
1397           in MSB first order in encoded format.  They were encoded
1398           wrong and was in LSB format.  Affected files are
1399           silcd/serverid.c, lib/silcutil/silcutil.c.
1400
1401         * Remove silc_net_addr2bin_ne from lib/silcutil/silcnet.[ch].
1402
1403         * Call the `connect' client operation through the scheduler
1404           in case of error.  Affected file lib/silcclient/client.c.
1405
1406         * Call the `failure' client operation even if the error
1407           occurred locally during a protocol.  Affected file is
1408           lib/silcclient/protocol.c.
1409
1410         * Added support of sending LIST command to router from normal
1411           server.  This way normal server can get list of all channels
1412           in the network too.  Fixed the channel list sending in the
1413           server too.  Affected files are silcd/command.c, and
1414           silcd/command_reply.[ch].
1415
1416         * Added silc_server_update_channels_by_server and
1417           silc_server_remove_channels_by_server.  They are used during
1418           disconnection of primary router and in backup router protocol.
1419           Affected file silcd/server_util.[ch], silcd/server.c and
1420           silcd/server_backup.c.
1421
1422         * Fixed channel adding to global list in IDENTIFY command
1423           reply in server.  Affected file silcd/command_reply.c.
1424
1425 Sat Nov 10 21:39:22 EET 2001  Pekka Riikonen <priikone@silcnet.org>
1426
1427         * If the incoming packet type is REKEY or REKEY_DONE process
1428           that packet always synchronously.  Fixes yet another MAC
1429           failed error on slow (dialup) connections.  Affected file
1430           lib/silcclient/client.c and silcd/server.c.
1431
1432 Thu Nov  8 22:21:09 EET 2001  Pekka Riikonen <priikone@silcnet.org>
1433
1434         * Call check_version SKE callback for initiator too.  Affected
1435           file lib/silcske/silcske.c.
1436
1437         * Implemented fix for security hole found in the SKE that was
1438           fixed in the specification few days back; the initiator's
1439           public key is now added to the HASH value computation.
1440           Added backwards support for the old way of doing it too, for
1441           old clients and old servers.  Affected file is
1442           lib/silcske/silcske.c.
1443
1444         * Enabled mutual authentication by default in SKE.  If initiator
1445           is not providing mutual authentication the responder will
1446           force it.  This will provide the proof of posession of the
1447           private key for responder.  The affected files are
1448           lib/silcclient/protocol.c and silcd/protocol.c.
1449
1450         * Do not cache anymore the server's public key during SKE.
1451           We do mutual authentication so the proof of posession of
1452           private key is done, and if the server is authenticated in
1453           conn auth protocol with public key we must have the public
1454           key already.  Affected file silcd/protocol.c.
1455
1456         * Added new global debug variable: silc_debug_hexdump.  If
1457           it is set to TRUE SILC_LOG_HEXDUMP will be printed.  Affected
1458           file lib/silcutil/silclog.[ch].
1459
1460         * Fixed compilation warning due to char * -> const char *.
1461           Affected files lib/silcutil/silcnet.h, and
1462           lib/silccore/silcauth.[ch].
1463
1464 Wed Nov  7 20:43:03 EET 2001  Pekka Riikonen <priikone@silcnet.org>
1465
1466         * Fixed CMODE command when new channel key was created.  If
1467           the creation failed the old key was removed.  Next time giving
1468           same command would crash the server since the old key was
1469           freed already.  Affected file silcd/command.c.
1470
1471         * Fixed the silc_server_announce_get_channels to not crash
1472           on reconnect.  Affected file silcd/server.c.
1473
1474 Wed Nov  7 17:15:07 EET 2001  Pekka Riikonen <priikone@silcnet.org>
1475
1476         * Added silc_log_set_debug_string function to set a regex
1477           string to match for debug output.  Only the function names,
1478           or filenames matching the given debug string is actually
1479           printed.  This way it is possible to filter out those debug
1480           strings that user is not interested in.
1481
1482           Fixed a bug in silc_string_regexify.
1483
1484           Affected files lib/silcutil/silclog.[ch], and
1485           lib/silcutil/unix/silcunixutil.c.
1486
1487         * Changed the -d options in both server and Irssi SILC client
1488           to take the debug string as argument.  Affected files
1489           silcd/silcd.c and irssi/src/silc/core/silc-core.c.
1490
1491 Tue Nov  6 21:31:54 EET 2001  Pekka Riikonen <priikone@silcnet.org>
1492
1493         * Added silc_hash_babbleprint to create a Bubble Babble
1494           Encoded fingerprint.  The encoding is developed by Antti
1495           Huima (draft-huima-babble-01.txt), and it creates human
1496           readable strings out of binary data.  Affected file
1497           lib/silccrypt/silchash.[ch].
1498
1499         * Print the babble print now in addition of fingerprint as well
1500           in Irssi SILC client.  Affected files are
1501           irssi/src/fe-common/silc/module-formats.[ch],
1502           irssi/src/fe-common/silc/core/client_ops.c.
1503
1504 Sun Nov  4 23:37:28 EET 2001  Pekka Riikonen <priikone@silcnet.org>
1505
1506         * Fixed a security problem found in SKE.  The initiator's
1507           public key too is now added to the HASH hash value creation
1508           which is signed by the responder to create the SIGN value.
1509           This will prevent anyone in the middle to lie to the responder
1510           about the initiator's public key.  If this is done now, the
1511           man in the middle will get caught.  Updated the protocol
1512           specification.
1513
1514 Sun Nov  4 11:43:53 EET 2001  Pekka Riikonen <priikone@silcnet.org>
1515
1516         * Better installation directory handling.  Configure module
1517           paths and other paths automatically to example_silc* files
1518           in doc/.  A patch by toma.
1519
1520         * Fixed compiler warning from MPI library, and from SILC RNG.
1521           A patch by johnny.
1522
1523         * Added SILC_SERVER_PID_FILE to define the pid file for server.
1524           It can be configured with ./configure.  A patch by toma.
1525
1526 Sat Nov  3 23:48:23 EET 2001  Pekka Riikonen <priikone@silcnet.org>
1527
1528         * Find correct make to use in prepare-clean.  A patch by
1529           toma.  Affected file prepare-clean.
1530
1531 Sat Nov  3 22:04:00 PST 2001  Brian Costello <bc@mksecure.com>
1532
1533         * Added irssi variables use_auto_addr, auto_bind_ip,
1534           auto_bind_port and auto_public_ip.
1535
1536         * Changed the interface for silc_client_send_key_agreement
1537           in lib/silcclient/silcapi.h
1538
1539         Affected files:
1540
1541          irssi/src/silc/core/silc-core.c
1542          irssi/config
1543          lib/silcclient/silcapi.h
1544          irssi/src/silc/core/silc-channels.c
1545          lib/silcclient/client_keyagr.c
1546          irssi/docs/help/key
1547
1548 Sat Nov  3 17:48:55 EET 2001  Pekka Riikonen <priikone@silcnet.org>
1549
1550         * Added silc_pkcs_public_key_compare to compare two 
1551           public keys.  Affected file lib/silccrypt/silcpkcs.[ch].
1552
1553         * Check that the client who set the founder mode on the
1554           channel is the same client that is giving the founder
1555           mode to itself.  It is done by comparing the saved public
1556           key (it is saved even in the authentication is passphrase).
1557           Affected file silcd/command.c.
1558
1559 Fri Nov  2 18:52:08 EST 2001  Pekka Riikonen <priikone@silcnet.org>
1560
1561         * Do not process packet for disconnected socket connection.
1562           Affected file lib/silccore/silcpacket.c.
1563
1564         * Process the DISCONNECT packet through scheduler in the
1565           client library.  Affected file lib/silcclient/client.c.
1566
1567         * Fixed the silc_client_packet_parse to not to increase
1568           the packet sequence number if the conn->sock and the 
1569           current socket connection is not same.  This can happen
1570           for example during key agreement when the conn includes
1571           multiple socket connections (listeners).  Affected file
1572           lib/silcclient/client.c.
1573
1574         * The sender of the file transfer request now provides also
1575           the pointer (listener) for the key exchange protocol.  If
1576           the listener cannot be created then it sends empty key
1577           agreement and lets the receiver provide the listener.
1578
1579           Added `local_ip' and `local_port' arguments to the
1580           silc_client_file_send.  If they are provided they are used,
1581           if not then it will attempt to find local IP address, if
1582           not found or bind fails then the remote client will provide
1583           the listener.
1584
1585           Affected files are lib/silcclient/client_ftp.c and
1586           lib/silcclient/silcapi.h.
1587
1588         * Extended the FILE SEND command to support defining the
1589           local IP and port for key exchange listener.  They are
1590           optional.  Affected file irssi/src/silc/core/silc-servers.c.
1591
1592 Thu Nov  1 22:10:07 EST 2001  Pekka Riikonen <priikone@silcnet.org>
1593
1594         * Defined to WHOIS command reply the sending of fingerprint
1595           of the client's public key (if the proof of posession of the
1596           corresponding private key is verified by the server).
1597           Updated to the protocol specification.
1598
1599         * Added support of receiving the client's public key's 
1600           fingerprint in command reply in client library.  Affected
1601           file is lib/silcclient/command_reply.c, and
1602           lib/silcclient/idlist.[ch].
1603
1604 Thu Nov  1 18:06:12 EST 2001  Pekka Riikonen <priikone@silcnet.org>
1605
1606         * Do not send over 128 chars long nickname to the server
1607           in NICK command.  Affected file lib/silcclient/command.c.
1608
1609         * Do not send over 256 chars long channel names to the server
1610           in JOIN command.  Affected file lib/silcclient/command.c.
1611
1612 Tue Oct 30 22:48:59 EST 2001  Pekka Riikonen <priikone@silcnet.org>
1613
1614         * Assure that silc_server_close_connection cannot be called
1615           twice for same socket context.  Affected file is
1616           silcd/server.c.
1617
1618 Tue Oct 30 16:58:14 EST 2001  Pekka Riikonen <priikone@silcnet.org>
1619
1620         * Send error message to application if opening file for
1621           writing during file transfer fails.  Affected file is
1622           lib/silcclient/client_ftp.c.
1623
1624           Remove all file transfer sessions for a client that we're
1625           removing from ID cache.
1626
1627           Affected file is lib/silcclient/client_ftp.c.
1628
1629         * Fixed silc_net_addr2bin to return correct address.  Affected
1630           file lib/silcutil/[unix/win32]/silc[unix/win32]net.c.
1631
1632         * Fixed file transfer session removing on signoff notify.
1633           Affected file irssi/src/silc/core/silc-servers.c.
1634
1635         * Added the SilcClientFileError to be returned in the monitor
1636           callback.  Added NO_SUCH_FILE and PERMISSION_DENIED errors.
1637           Affected file lib/silcclient/silcapi.h.
1638
1639 Mon Oct 29 17:43:04 EST 2001  Pekka Riikonen <priikone@silcnet.org>
1640
1641         * Fixed a crash in silc_client_ftp_free_sessions and
1642           silc_client_ftp_session_free_client.  Affected file
1643           lib/silcclient/client_ftp.c.
1644
1645         * Added `disabled' field in the SilcChannelEntry in the server
1646           to indicate if the server entry is disabled.  Affected file
1647           silcd/idlist.h, silcd/command[_reply].c.
1648
1649         * SILC server adds now /var/run/silcd.pid everytime it is
1650           started.  Affected file silcd/silcd.c.
1651
1652         * Added silc_server_packet_send_clients to send a packet to
1653           the provided table of client entries.  Affected file
1654           silcd/packet_send.[ch].
1655
1656         * Fixed a crash in client resolving in client_prvmsg.c in 
1657           client library.  Affected file lib/silcclient/client_prvmsg.c.
1658
1659         * Do not actually remove the client directly from ID cache
1660           during SERVER_SIGNOFF, but invalidate it.  This way we
1661           preserve the WHOWAS info for the client.  Affected file
1662           silcd/server_util.c.
1663
1664         * Fixed SERVER_SIGNOFF notify handling in the server.  The
1665           server is now able to process incoming SERVER_SIGNOFF notify
1666           for a server that it doesn't even know about.  It will remove
1667           the clients provided in the notify.  Affected file
1668           silcd/packet_receive.c.
1669
1670         * Check for partial packet in data queue after every packet that
1671           was found from the queue.  Return and wait for more data if 
1672           there is partial data in queue.  Affected file is
1673           lib/silccore/silcpacket.c.
1674
1675 Sun Oct 28 18:46:27 EST 2001  Pekka Riikonen <priikone@silcnet.org>
1676
1677         * Added SilcClietFileError enum to indicate error in
1678           file transfer.  Added SILC_CLIENT_FILE_MONITOR_KEY_AGREEMENT
1679           and SILC_CLIENT_FILE_MONITOR_ERROR new monitor statuses.
1680           Affected files lib/silcclient/silcapi.h and
1681           lib/silcclient/client_ftp.c.
1682
1683         * Check that newsize in silc_buffer_realloc is larger than
1684           the old buffer's size.  Affected file lib/silcutil/silcbufutil.h.
1685
1686         * Added better monitor of file transfers.  It now monitors
1687           key agreement protocol during the file transfer too.  Added
1688           error reporting too.  Affected files
1689           irssi/src/silc/core/silc-servers.c,
1690           irssi/src/fe-common/silc/module-formats.[ch].
1691
1692         * Wrote a help file for FILE command.
1693
1694         * Added silc_rng_global_get_byte_fast to get not-so-secure
1695           random data as fast as possible.  Random data is read from
1696           /dev/urandom if available and from the SILC RNG if not
1697           available.  It is used in padding generation.  Affected file
1698           lib/silccrypt/silcrng.[ch].
1699
1700         * All packets in client library are now processed synchronously.
1701           Optimized packet processing a lot.  Affected file
1702           lib/silcclient/client.c.
1703
1704         * All server connection packets are processing synchronously
1705           now in server, to optimize packet processing.  Affected file
1706           silcd/server.c.
1707
1708         * Include files are installed now only in Toolkit distribution
1709           if make install is given.  Affected files: all Makefile.am's.
1710
1711 Thu Oct 25 22:44:06 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
1712
1713         * Assure that silc_client_notify_by_server_resolve does not
1714           resolve the client information multiple times.  If it cannot
1715           be found by the first it cannot be found at all.  Affected
1716           file lib/silcclient/client_notify.c.
1717
1718         * Fixed WHOWAS command reply calling.  Affected file
1719           lib/silcclient/command_reply.c.
1720
1721         * Removed all references to silc_idlist_get_client from the
1722           Irssi SILC client since that call is internal call used by
1723           the library.  The Irssi SILC client will use now client
1724           retrieval functions found in silcapi.h.
1725
1726         * Fixed a bug in resolving nickname info before sending
1727           private message.  It used freed memory.  Affected file
1728           irssi/src/silc/core/silc-servers.c.
1729
1730 Thu Oct 25 19:04:49 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
1731
1732         * Assure my_channels statistics cannot go negative in server.
1733           Affected files silcd/server.c, silcd/server_util.c.
1734
1735 Wed Oct 24 19:53:05 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
1736
1737         * Upgraded dotconf 1.0.2 to 1.0.6 in lib/dotconf.
1738
1739 Tue Oct 23 13:51:19 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
1740
1741         * Win32 Toolkit changes.  Affected files
1742           win32/silc.dsw, win32/libsilc/libsilc.def,
1743           win32/libsilcclient/libsilc.def,
1744           lib/silcutil/silcutil.c, and
1745           lib/sftp/sftp_fs_memory.c.
1746
1747 Mon Oct 22 16:35:05 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
1748
1749         * Added silc_net_localip to return local host's IP address.
1750           Affected file lib/silcutil/silcnet.[ch].
1751
1752         * If key exchange or rekey protocol is active for a connection
1753           parse all packets syncronously since there might be packets
1754           in packet queue that we are not able to process without first
1755           processing packets before them.  Affected file silcd/server,
1756           lib/silcclient/client.c.
1757
1758         * SilcPacketParserCallback now returns TRUE or FALSE to indicate
1759           whether library should continue processing the packet. 
1760           Affected file lib/silccore/silcpacket.h.
1761
1762         * Added SilcSFTPMonitor callback, SilcSFTPMonitors and
1763           SilcSFTPMonitorData to SFTP server to monitor various
1764           SFTP client requests.  Affected file lib/silcsftp/silcsftp.h,
1765           lib/silcsftp/sftp_server.c.
1766
1767         * Added silc_file_size to return file size.  Affected file
1768           lib/silcutil/silcutil.[ch].
1769
1770         * Implemented the file transfer support for the client library.
1771           Added preliminary support for simple client to client one-file
1772           transmission.  Affected file lib/silcclient/client_ftp.c,
1773           lib/silccilent/client.[ch].
1774
1775         * Added new local command FILE to the Irssi SILC Client.
1776           It is used to perform the file transfer.  It has subcommands
1777           SEND, RECEIVE, SHOW and CLOSE.  Affected files
1778           irssi/src/silc/core/client_ops.c, 
1779           irssi/src/silc/core/silc-server.[ch].
1780
1781 Mon Oct 22 12:50:08 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
1782
1783         * Relay the SILC_PACKET_FTP in the server.  Affected files
1784           silcd/server.c and silcd/packet_receive.c.
1785
1786 Sun Oct 21 20:21:02 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
1787
1788         * Renamed silc_file_read and silc_file_write to functions
1789           silc_file_readfile and silc_file_writefile.  Added function
1790           silc_file_open and silc_file_close.  Affected files 
1791           lib/silcutil/silcutil.[ch].
1792
1793 Thu Oct 18 20:58:13 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
1794
1795         * Resolve the client info when received private message or
1796           channel message for a client which nickname we don't know.
1797           Affected files lib/silcclient/client_prvmsg.c and
1798           lib/silcclient/client_channel.c.
1799
1800         * Do not crash in /KEY if client is not connected.  Affected
1801           file irssi/src/silc/core/silc-channels.c.
1802
1803         * Added SilcClientStatus field to the SilcClientEntry in the
1804           lib/silcclient/idlist.h.
1805
1806           Added SILC_CLIENT_STATUS_RESOLVING to mark that the entry
1807           is incomplete and is being resolved, it won't be resolved
1808           twice.
1809
1810           Make sure also that USERS command reply does not resolve
1811           twice information.  Affected file is
1812           lib/silcclient/command_reply.c.
1813
1814           Make sure that silc_client_get_clients_by_list does not
1815           resolve twice same information.
1816
1817         * Check for valid client->id in the silc_server_free_client_data.
1818           Affected file silcd/server.c.
1819
1820         * Fixed /GETKEY nick@server not to crash if the server entry
1821           is not found.  Affected file lib/silcclient/command.c.
1822
1823         * Fixed the silc_server_check_cmode_rights to check the
1824           requested modes correctly.  Affected file silcd/command.c.
1825
1826 Thu Oct 18 12:10:22 CEST 2001  Pekka Riikonen <priikone@silcnet.org>
1827
1828         * Better checks for non-printable chars in nick added.
1829           Affected file silcd/command.c.
1830
1831 Thu Oct 18 09:18:58 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
1832
1833         * Call the silc_server_udpate_servers_by_server in the
1834           primary router that comes back online in the backup resuming
1835           protocol.  Otherwise it routes packets wrong.  Affected file
1836           silcd/server_util.[ch], silcd/server_backup.c.
1837
1838 Wed Oct 17 16:51:18 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
1839
1840         * Added SILC_STR_UI8_[N]STRING[_ALLOC] formats to the
1841           lib/silcutil/silcbuffmt.[ch].
1842
1843         * Redefined the SILC packet header to include the padding
1844           length.  Affected file lib/silccore/silcpacket.[ch].
1845
1846         * Added SILC_PACKET_PADLEN_MAX macro to return the padding
1847           length for maximum padding up to 128 bytes).  Affected
1848           file lib/silccore/silcpacket.h.
1849
1850         * Removed all backwards support for old 0.5.x MAC thingies.
1851           The SILC packet header change makes it impossible to be
1852           backwards compatible.
1853
1854         * Send the ENDING packet with timeout in the backup resuming
1855           protocol.  This is to assure that all routers has connected
1856           to the primary router.  Affected file silcd/server_backup.c.
1857
1858         * Changed the RNG to take the first IV from random data.  It
1859           used to take it from zero actually.  Changed the RNG also
1860           to use /dev/urandom during session.  /dev/random is used
1861           in initialization.  Affected file lib/silccrypt/silcrng.[ch].
1862
1863 Tue Oct 16 20:45:49 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
1864
1865         * Changed the SILC packet header to have the first two bytes
1866           (the packet length) encrypted.  Affected files aroung the
1867           code tree, lib/silccore/silcpacket.[ch].  Removed the
1868           SilcPacketCheckDecrypt callback.  It is not needed anymore
1869           since the silc_packet_receive_process will determine now
1870           whether the packet is normal or special.
1871
1872         * Implemented the unidirectional MAC keys.  Affected files
1873           lib/silcske/silcske.c, silcd/protocol.c and
1874           lib/silcclient/protocol.c.
1875
1876         * Implemented the packet sequence number to the MAC computation.
1877           Affected files lib/silccore/silcpacket.c, silcd/protocol.c,
1878           silcd/packet_send.c, silcd/server.c, lib/silcclient/client.c,
1879           lib/silcclient/protocol.c.
1880
1881 Mon Oct 15 17:42:55 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
1882
1883         * Allow backup router to announce servers.  All servers
1884           announced by backup router are added to the global list
1885           automatically.  Update hte server's socket to our primary
1886           router also when backup router announces a server.
1887           Affected file silcd/packet_receive.c.
1888
1889         * Do not update the client->router in the function
1890           silc_server_udpate_clients_by_server if the client is on
1891           global list.  We might fail to find any specific server
1892           for locally connected clients and local cell clients.  They
1893           should still use the `from' and not `to' as client->router.
1894           This fixes backup router resuming protocol.  Affected file
1895           silcd/server_util.c.
1896
1897         * Decrease channel statistics count only if the channel
1898           deletion worked.  Affected files are silcd/server.c and
1899           silcd/server_util.c.
1900
1901         * Added silc_server_update_servers_by_server to update origin
1902           of all server entries.  Used during backup router protocol.
1903           Affected files silcd/server_util.[ch], silcd/server.c. and
1904           silcd/backup_router.c.
1905
1906         * ROBODoc documented the lib/silccrypt/silchmac.h.  Added new
1907           function silc_hmac_init, silc_hmac_update, silc_hmac_final,
1908           silc_hmac_get_hash and silc_hmac_get_name.  Affected file
1909           lib/silccrypt/silchmac.c.
1910
1911 Sun Oct 14 18:28:22 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
1912
1913         * Assure that router cannot reroute the same channel message
1914           to the sender.  Affected file silcd/packet_receive.c.
1915
1916 Sat Oct 13 12:46:18 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
1917
1918         * Made better checks that the channel message is not sent
1919           to the router it came from.  Affected file is
1920           silcd/packet_send.c.  Fixed memory leak too.
1921
1922         * Announce informations for incoming router connection, but
1923           only after checking if it is replaced by backup router.
1924           Affected file silcd/packet_receive.c.
1925
1926 Fri Oct 12 18:37:24 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
1927
1928         * Fixed the backup resuming protocol to work in multiple
1929           router environment.  Affected file silcd/server_backup.c.
1930
1931         * Route packet only to one router in the function
1932           silc_server_packet_send_to_channel.  Affected file is
1933           silcd/packet_send.c.
1934
1935         * Fixed silc_server_send_notify_dest to set the broadcast
1936           flag.  Fixed the silc_server_send_notify_topic to actually
1937           send the TOPIC_CHANGE notify and not SERVER_SIGNOFF notify.
1938           Affected file silcd/packet_send.c.
1939
1940         * Changed the SFTP Filesystem interface.  Changed the
1941           SilcSFTPFilesystemStruct to SilcSFTPFilesystemOps to include
1942           the filesystem operation function.  The SilcSFTPFilesystem
1943           is now a context that is allocated by all filesystem allocation
1944           functions and it already includes the operations structure
1945           and filesystem specific context.  It is given as argument
1946           now to the silc_sftp_server_start.  This made the interface
1947           a bit cleaner.  Affected file lib/silcsftp/silcsftp[_fs].h,
1948           lib/silcsftp/sftp_fs_memory.c and sftp_server.c.
1949
1950 Thu Oct 11 22:19:26 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
1951
1952         * Changed the backup router adding and getting interfaces
1953           in the server.  The router that will be replaced by the
1954           specified backup router is now sent as argument.  Affected
1955           files silcd/serverconfig.[ch], silcd/backup_router.[ch], and
1956           silcd/server.c.
1957
1958         * Added silc_net_addr2bin_ne to return the binary form of
1959           the IP address in network byte order.  Affected files
1960           lib/silcutil/[unix/win32].silc[unix/win32]net.[ch].
1961
1962 Thu Oct 11 12:14:19 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
1963
1964         * Check for existing server ID in silc_server_new_server
1965           and in silc_server_connect_to_router_final and remove the
1966           old entry if it exists.  Affected file silcd/packet_receive.c,
1967           silcd/server.c.
1968
1969         * Send the channel message always to only one router, either
1970           in upstream or downstream.  Affected file is
1971           silcd/packet_send.c.
1972
1973 Tue Oct  9 17:45:43 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
1974
1975         * Wrote the definition of the backup resuming protocol to the
1976           protocol specification.
1977
1978         * Removed one redundant channel key generation from normal
1979           server during joining procedure.  Removed one redundant
1980           channel key sending from server to router during joining
1981           procedure.  Affected file silcd/command.c.
1982
1983         * Made minor bugfixes to the backup router resuming protocol.
1984           Affected file silcd/server_backup.c, server.c.
1985
1986 Mon Oct  8 16:47:42 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
1987
1988         * Added --disable-asm configuration option.  Affected files
1989           configure.in.pre, lib/silcmath/mpi/configure.in.  A patch
1990           by salo.
1991
1992         * Implemented the backup resuming protocol that is used to
1993           resume the primary router position in the cell after the
1994           primary router comes back online.  Affected files
1995           silcd/server_backup.[ch], silcd/server, silcd/packet_receive.c,
1996           and silcd/server_util.[ch].
1997
1998 Sun Oct  7 12:29:25 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
1999
2000         * Sleep two (2) seconds after sending QUIT command to server.
2001           Affected file lib/silcclient/command.c.
2002
2003         * Assure that if outgoing data buffer is pending do not force
2004           send any data.  Affected file silcd/packet_send.c.
2005
2006         * Assure that if outgoing data buffer is pending do not force
2007           send any data.  Affected file lib/silcclient/client.c.
2008
2009         * Implemented the backup router support when the primary router
2010           goes down.  The servers and routers can now use the backup
2011           router as new primary router without loosing connectivity.
2012
2013 Sat Oct  6 21:18:54 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
2014
2015         * Added new SILC_IDLIST_STATUS_DISABLED flag for entries
2016           in the server to indicate disabled entry.  All data read
2017           from the connection will be ignored and no data is sent
2018           for entry that is disabled.  Affected files are
2019           silcd/idlist.h, silcd/server.c.
2020
2021 Fri Oct  5 00:03:29 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
2022
2023         * Created SFTP client and server test programs in the
2024           lib/silcsftp/tests directory.
2025
2026 Wed Oct  3 23:31:42 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
2027
2028         * Implemented memory filesystem (virtual filesystem) for
2029           SFTP server.  Affected file lib/silcsftp/silcsftp_fs.h,
2030           sftp_fs_memory.c.
2031
2032 Sun Sep 30 22:10:57 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2033
2034         * Implemented the SFTP (SSH File Transfer Protocol) to the
2035           lib/silcsftp.  It includes SFTP client and SFTP server
2036           implementations.
2037
2038 Sun Sep 30 10:35:44 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2039
2040         * Moved lib/silccore/silcprotocol.[ch] to the
2041           lib/silcutil library.
2042
2043         * Added silc_buffer_format_vp and silc_buffer_unformat_vp to
2044           take variable argument list pointer as argument.  Affected
2045           file lib/silcutil/silcbuffmt.[ch].
2046
2047         * Added silc_buffer_set function that is used to set data
2048           to a SilcBuffer that is not allocated at all (SilcBufferStruct).
2049           Affected file lib/silcutil/silcbuffer.h.
2050
2051         * Changed various routines in the core library to use the new
2052           silc_buffer_set instead of allocating new buffer only for
2053           temporary purposes.
2054
2055         * Added 64-bit value formatting and unformatting support to the
2056           silc_buffer_[un]format routines.  Affected file is
2057           lib/silcutil/silcbuffmt.[ch].
2058
2059           Added also 64-bit macros: SILC_GET64_MSB and SILC_PUT64_MSB,
2060           to includes/bitmove.h.
2061
2062 Fri Sep 28 21:30:10 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2063
2064         * Fixed channel user mode saving in client library.  Affected
2065           file lib/silcclient/command[_reply].c.
2066
2067 Thu Sep 27 22:52:30 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2068
2069         * Defined the file transfer to the SILC Protocol.  Added
2070           new packet type SILC_PACKET_FTP and defined File Transfer
2071           Payload.  The mandatory file transfer protocol is SFTP
2072           (SSH File Transfer Protocol).  Affected file in addition
2073           of the internet draft is lib/silccore/silcpacket.h.
2074
2075         * Deprecated the SILC_PACKET_CELL_ROUTERS and defined new 
2076           packet SILC_PACKET_RESUME_ROUTER instead.  The new packet
2077           is used as part of backup router protocol when the primary
2078           router of the cell is back online and wishes to resume
2079           the position as primary router.
2080
2081         * Redefined the MAC generation keys in the protocol.  The
2082           same key is not used anymore in both direction.  Both
2083           direction will now use different keys for sending and
2084           receiving.  This fixes a potential security flaw.  This
2085           change causes incompatibilities in the protocol.
2086
2087         * Redefined also the MAC computation from the packet.
2088           An packet sequence number is now added to the MAC 
2089           computation.  This prevents possible replay attacks against
2090           the protocol.  This change too causes incompatibilities
2091           in the protocol.
2092
2093           Added `sequence' field to the SilcPacketContext to hold
2094           the current sequence number for the packet.
2095
2096 Wed Sep 26 20:15:22 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2097
2098         * Added `created' field to the SilcIDListData in the file
2099           silcd/idlist.h to indicate the time when the entry was
2100           created.
2101
2102         * Added `created' field to the SilcChannelEntry too.  Affected
2103           file silcd/idlist.h.
2104
2105         * Added `creation_time' aguments to all the announcement functions
2106           in the server.  If it is provided then only the entries that
2107           was created after the provided time frame are actually
2108           announced.  Affected file silcd/server.[ch].
2109
2110         * The protocol says that the Channel ID's IP address must be
2111           based on the router's IP address.  Added check for this in
2112           the silc_server_new_channel when processing incoming New Channel
2113           Payload.  Affected file silcd/packet_receive.c.
2114
2115         * Print out the correct version with --version in SILC client.
2116           Affected file irssi/src/silc/core/silc-core.c.
2117
2118 Mon Sep 24 17:19:00 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2119
2120         * Fixed WHOWAS command to check for completnes of the client
2121           entry always, not just when the command is coming from client.
2122           Affected file silcd/command.c.
2123
2124         * Added new function silc_server_packet_queue_purge to purge the
2125           outgoing data queue to the network.  After the function returns
2126           it is guaranteed that the outgoing packet queue is empty.
2127           Affected file silcd/packet_send.[ch].
2128
2129         * Purge the outgoing packet queue in the rekey protocol's final
2130           callback to assure that all rekey packets go to the network
2131           before quitting the protocol.  Affected file silcd/server.c.
2132
2133         * Added silc_client_packet_queue_parse as similar function as
2134           in server to the client library.  The affected file is
2135           lib/silcclient/client.c.
2136
2137 Sun Sep 23 15:15:53 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2138
2139         * Splitted silcd/server.c and created silcd/server_util.[ch]
2140           for utility functions.
2141
2142         * Added new socket flag SILC_SF_DISABLED to indicate that the
2143           connection is open but nothing can be sent to or received from
2144           the connection.  Affected file lib/silcutil/silsockconn.[ch].
2145           The checking for disabled socket is checked in the low level
2146           silc_socket_write and silc_socket_read functions.
2147
2148 Thu Sep 20 23:11:28 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2149
2150         * Allow only nicknames and channel names that fits into the
2151           7-bit unsigned char ASCII set.  Affected file silcd/command.c.
2152
2153 Thu Sep 20 18:04:12 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2154
2155         * When processing JOIN command reply in server check that if
2156           the channel exists in our global list we'll move it the local
2157           list.  Affected file silcd/command_reply.c.
2158
2159         * Fixed the check whether client is joined on the channel already
2160           in JOIN command.  Affected file lib/silcclient/command.c.
2161
2162         * Fixed the JOIN command reply to check whether the channel
2163           already exists.  Affected file lib/silcclient/command_reply.c.
2164
2165 Wed Sep 19 22:58:32 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2166
2167         * Added silc_ske_status_string to map the SKE error numbers
2168           to readable strings.  The affected files are
2169           lib/silcske/silcske[_status].[ch].
2170
2171 Tue Sep 18 22:50:41 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2172
2173         * Do not show the private channels on the WHOIS channel list
2174           as it is not allowed by the protocol.  The affected file is
2175           silcd/server.c.
2176
2177 Sun Sep 16 12:32:58 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2178
2179         * Assure that the packet length digged from the actual packet
2180           is something sensible in the silc_packet_decrypt_rest_special
2181           in lib/silccrypt/silcpacket.c.
2182
2183         * Free and NULL the allocated pointer in silc_hmac_alloc if
2184           the HMAC allocation fails.  The affected file is
2185           lib/silccrypt/silchmac.c.
2186
2187         * Print the selected security properties to the log files in
2188           the server.  Affected file silcd/protocol.c.
2189
2190         * Add SKE's reference counter even if calling the completion
2191           callback manually.  Otherwise it goes negative, although it
2192           does not cause any problems.  The affected file is
2193           lib/silcske/silcske.c.
2194
2195         * Remove the client entry with short timeout after giving the
2196           KILL command.  Affected file lib/silcclient/command.c.
2197
2198         * Fixed to send error reply in WHOIS and IDENTIFY commands in
2199           case all found clients are already disconnected (WHOWAS would
2200           found them) in the server.  Affected file silcd/command.c.
2201
2202         * Update the last_receive (time of last data received) to be 
2203           updated only when received private or channel message so that
2204           the idle time showed in WHOIS makes more sense.
2205
2206         * Added boolean field `valid' in to the SilcClientEntry in the
2207           client library to indicate whether the entry is valid or not.
2208           This fixes the nickname change bug on channel when changing
2209           the nickname to be same than the old (like nick to Nick) the
2210           nickname formatter doesn't set the new nick anymore to Nick@host.
2211           Affected file lib/silcclient/idlist.[ch].
2212
2213         * Now actually fixed the nickname changing on disconnection.
2214           Added new function silc_change_nick to the Irssi SILC Client.
2215           Affected file irssi/src/silc/core/client_ops.c,
2216           irssi/src/silc/core/silc-nicklist.[ch].
2217
2218 Sat Sep 15 13:29:17 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2219
2220         * Check that the public key exists in the GETKEY command before
2221           trying to encode it.  Affected file silcd/command.c.
2222
2223         * Print some notifications on received public keys with GETKEY
2224           command in the Irssi SILC Client.  Affected files are
2225           irssi/src/fe-common/silc/module-formats.[ch],
2226           irssi/src/silc/core/client_ops.c.
2227
2228         * Use IDENTIFY command to resolve the server information in the
2229           GETKEY command instead of INFO command.  Affected file
2230           lib/silcclient/command.c.
2231
2232         * All command reply functions in the client library now calls
2233           the pending command reply callbacks even if an error has
2234           occurred.  The server has done this a long time and now it was
2235           time to move the client library to this as well.  Now all
2236           errors can be delivered back to the pending command reply
2237           callbacks if necessary.  Affected files are
2238           lib/silcclient/command[_reply].[ch].
2239
2240         * Change the nickname on disconnection back to the username
2241           because in reconnect the server will enforce it to it anyway.
2242           Affected file irssi/src/silc/core/silc-servers.c.
2243
2244         * Fixed a config file parsing bug in the Irssi SILC client.
2245           Affected file irssi/src/silc/core/clientconfig.c.
2246
2247 Thu Sep 13 23:11:18 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2248
2249         * When printing the channel mode on JOIN, verify that the
2250           channel key and channel's HMAC are valid.  Affected file
2251           irssi/src/silc/core/client_ops.c.
2252
2253 Thu Sep 13 20:24:52 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2254
2255         * Added defines SILC_DEFAULT_CIPHER, SILC_DEFAULT_HMAC,
2256           SILC_DEFAULT_HASH and SILC_DEFAULT_PKCS in the file
2257           lib/silccrypt/[silccipher.h|silchmac.h|silchash.h|silcpkcs.h].
2258
2259         * Removed channel key rekey task deleting from the function
2260           silc_server_save_channel_key.  Affected file silcd/server.c.
2261           Added explicit timeout task context instead that is used to   
2262           delete the task if we are registering a new task before the
2263           new task has elapsed.
2264
2265         * When channel key rekey occurs the client library now saves
2266           the old channel key for a short period of time (10 seconds) and
2267           is able to use it in case some is still sending channel
2268           messages encrypted with the old key after the rekey.  Affected
2269           file lib/silcclient/[idlist.h|client_channel.c].
2270
2271 Sun Sep  9 15:49:16 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2272
2273         * Added check to the silc_server_new_id_real to not accept
2274           new ID if it is the sender's own ID.  Affected file is
2275           silcd/packet_receive.c.
2276
2277         * Assure that we do not announce ourself or the one we've
2278           sending our announcements when we're router and are announcing
2279           servers to our primary router.  Affected file silcd/server.c.
2280
2281         * Fixed silc_server_command_identify_check_client to assemble
2282           correct WHOIS packet.  It send corrupted WHOIS packet and
2283           caused problem with router to router connections.  Affected
2284           file silcd/command.c.
2285
2286           Fixed also silc_server_command_whois_check the same way
2287           as for the IDENTIFY command.
2288
2289         * Added new SilcIDListStatus to the server in the SilcIDListData
2290           structure.   The status now includes the current status of
2291           the entry (like registered, resolved etc.).  Affected file
2292           silcd/idlist.[ch].  Defined a bunch of different status types
2293           as well.  This replaced the old boolean registered field as well.
2294
2295           Added resolve_cmd_ident field to the SilcClientEntry structure
2296           too so that if the entry is for example being resolved so 
2297           another command may attach to the same pending command reply
2298           without requiring to resolve the same entry again.  This concept
2299           should optimize the WHOIS and the IDENTIFY resolving under
2300           heavy load by taking away unnecessary resolving for entries
2301           that are being resolved already.
2302
2303           Added support for adding multiple pending commands for one
2304           command idenfier.  Affected file silcd/command[_reply].[ch].
2305
2306         * Fixed WHOIS and IDENTIFY save to remove the cache entry
2307           before deleting the data.  Otherwise the hash table will have
2308           freed data in comparison functions.  Affected file is
2309           silcd/command_reply.c.
2310
2311         * Fixed silc_idlist_replace_client_id to add the new entry to
2312           the cache with NULL nickname.  Otherwise there will be invalid
2313           memory as the nickname after the nickname is freed.  Affected
2314           file silcd/packet_receive.c.
2315
2316         * Fixed the silc_idlist_get_clients_by_hash.  The entries was
2317           saved into wrong slots because the previous number of entries
2318           was not taken into account.  Affected file silcd/idlist.c.
2319           Fixed same thing in silc_idlist_get_clients_by_nickname too.
2320
2321         * If we are router and we receive JOIN notify to a channel that
2322           does not have any users then notified client is marked as the
2323           channel founder, as it is it.  The affected file is
2324           silcd/packet_receive.c
2325
2326         * Added to the extended hash table API's table_del_*ext functions
2327           the destructor as argument too, so that the caller can decide
2328           which destructor to use or whether to use destructor at all.
2329           Affected file lib/silcutil/silchashtable.[ch].
2330
2331         * Fixed ID Cache purging.  It actually deleted the entries from
2332           the hash table after the data was freed.  The hash table ended
2333           up comparing freed memory.  The affected file is
2334           lib/silccore/silcidcache.c.
2335
2336 Sat Sep  8 10:22:10 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2337
2338         * Fixed Irssi SILC client's KILL command's HELP syntax.
2339
2340         * The USERS command now resolves the detailed user information
2341           if the userinfo field is missing.  Affected file is
2342           lib/silcclient/command_reply.c.
2343
2344         * Do not print error in silc_file_read if the read file does
2345           not exist.  Just silently return NULL.  Affected file is
2346           lib/silcutil/silcutil.c.
2347
2348         * Fixed the silc_log_output to not wine about NULL filename
2349           and to not create some bogus " " filename.  Affected file is
2350           lib/silcutil/silclog.c.
2351
2352 Fri Sep  7 22:16:38 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2353
2354         * Fixed various printing bugs on the user interface in the
2355           Irssi SILC Client.  Minor changes that were forgotten from
2356           the release.
2357
2358 Fri Sep  7 17:28:37 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2359
2360         * Fixed the configure.in.pre and the compilation and distribution
2361           environment to support the new autoconf 2.52.  That version is
2362           now required to compile the CVS trunk.
2363
2364 Thu Sep  6 12:47:37 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2365
2366         * Renamed function silc_parse_nickname to silc_parse_userfqdn
2367           to generally parse user@fqdn format strings.  Affected file
2368           lib/silcutil/silcutil.c.
2369
2370         * Added nickname_format and nickname_force_format fields to the
2371           SilcClientParams structure.  The first one defines the format
2372           for the nicknames that the library will enforce if the receives
2373           multiple same nicknames.  The second one is boolean value and
2374           can be used to force the library to always enforce the format
2375           to the nicknames regardles whether there are multiple nicknames
2376           or not.  This configurable formatting was employed to flexibly
2377           support accessing multiple nicknames from the user interface.
2378           The userinterface can now set the nicknames to what ever format
2379           they prefer.  Affected file lib/silcclient/silcapi.h.
2380
2381           Added function silc_client_nickname_format to the file
2382           lib/silcclient/idlist.c.  It performs the nickname formatting.
2383
2384           Added new field `hostname´ to the SilcClientEntry context.
2385           It holds the hostname of the client.  Affected file is
2386           lib/silcclient/idlist.h.
2387
2388         * Irssi SILC Client sets the nicknames in nick@hostn format.
2389           Fe. priikone@otaku, priikone@otaku2 etc.  Affected file
2390           irssi/src/silc/core/silc-core.c.
2391
2392           The WHOIS printing now also shows both the real nickname and
2393           the formatted nickname so that user knows how to access the
2394           user if there are multiple same nicknames cached.  Affected
2395           file irssi/src/silc/core/client_ops.c.  Changed the WHOIS
2396           printing formatting too to take the hostname now as a separate
2397           argument.  The Affected file is
2398           irssi/src/fe-common/silc/modules-formats.[ch].
2399
2400         * Changed the silc_client_get_clients_local to accept the formatted
2401           nickname as argument.  It accepts the real nickname too but the
2402           formatted nickname can be used to find the true entry from 
2403           multiple entries.  Affected file lib/silcclient/silcapi.h and
2404           lib/silcclient/idlist.c.
2405
2406         * Added nickname_format_parse field to the SilcClientParams.
2407           It is a callback function provided by the application to parse
2408           the nickname out of the formatted nickname string. The library
2409           calls it to get the nickname from the formatted string. Since
2410           the application generally knows better the format of the nickname
2411           string it parses it instead of the library, even though library
2412           encodes the formatted string.  If the callback function is not
2413           provided then the library will use the string as is.  The
2414           affected file is lib/silcclient/silcapi.h.
2415
2416         * All the nickname strings passed to the client library in 
2417           commands are now expected to be formatted nickname strings.
2418           If the command does not support the formatted nickname string
2419           it will assume that the sent string is the actual nickname.
2420           Affected file lib/silcclient/command.c.
2421
2422 Tue Sep  4 22:31:28 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2423
2424         * Added public key authentication support to OPER and SILCOPER
2425           commands in the client library.  Affected file is
2426           lib/silcclient/command.c.
2427
2428 Tue Sep  4 12:39:17 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2429
2430         * Changed the get_auth_methdod client operation to be asynchronous.
2431           It can be async if the application resolves the authentication
2432           method from the server during the negotiation.  Added new
2433           SilcGetAuthMeth completion callback that the application will
2434           call after resolving the authentication method.
2435
2436           Added function silc_client_request_authentication_method that
2437           the application can use to resolve the authentication method
2438           from the server.  Added also SilcConnectionAuthRequest callback
2439           that the library will call after the server has replied.  The
2440           application can call this function if it does not know the
2441           current authentication method.
2442
2443           Affected files are lib/silcclient/client.c and 
2444           lib/silcclient/silcapi.h.
2445
2446         * The Irssi SILC client now automatically resolves the authentication
2447           method incase any configuration information is not present (and
2448           currently there never is).  The affected file is
2449           irssi/src/silc/core/client_ops.c.
2450
2451         * Fixed public key authentication from the client library.
2452           Affected file lib/silcclient/protocol.c.  Changed also the
2453           protocol specification about the public key authentication in
2454           the connection authentication protocol.  The actual data to be
2455           signed is now computed with a hash function before signing.
2456
2457         * Fixed the public key authentication from the server as well.
2458           Affected file silcd/protocol.c.
2459
2460         * Removed the mlock()'s from the memory allocation routines.
2461           Affected file lib/silcutil/silcmemory.c.  The ./configure does
2462           not check anymore for the mlock().  Affected file is
2463           configure.in.pre.
2464
2465         * Fixed USERS command in server to allow the execution of the
2466           command for private and secret channels if the client sending
2467           the command is on the channel.  Affected file silcd/command.c.
2468
2469         * Fixed silc_client_get_clients_local to return the clients
2470           count correctly.  It could return wrong value.  Affected file
2471           lib/silcclient/idlist.c.
2472
2473 Mon Sep  3 20:09:59 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2474
2475         * Fixed the lib/silcmath/mpi/mpi.h to always use 32-bit data
2476           types.  The assembler optimizations seemed not to like 64-bit
2477           data types.  The assmebler optimizations thus are now enabled
2478           also for BSD systems as opposed to only enable them for Linux.
2479
2480         * Do not check for threads at all on BSD systems.  Affected
2481           file configure.in.pre.
2482
2483         * Removed -n and -h options from the Irssi SILC Client since
2484           they are not used in silc.
2485
2486         * Fixed the prime generation to assure that the first digit
2487           of the generated random number is not zero since our conversion
2488           routines does not like number strings that starts with zero
2489           digit.  If zero digit is seen the random number is regenerated.
2490           This caused some corrupted RSA keys when the zero first digit
2491           was met.  Affected file lib/silcmath/silcprimegen.c.
2492
2493 Sun Sep  2 17:17:24 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2494
2495         * Fixed WIN32 configuration in the ./configure script.
2496           Fixed to include xti.h on environments that has it.
2497           Patches by Carsten Ilchmann and andrew.
2498
2499 Sat Sep  1 00:29:33 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2500
2501         * Changed the silc_id_create_client_id to be collision
2502           resistant.  It is now assured that there cannot be created
2503           two same client ID's.  I suspect that some weird bugs in 
2504           the server were actually caused by duplicate Client IDs.
2505           Affected file silcd/serverid.[ch].  A router receiving
2506           new ID now also assures and informs the sending server
2507           if the ID caused collision.
2508
2509         * Changed the silc_id_create_channel_id to also assure that
2510           there are no collisions.
2511
2512 Wed Aug 29 17:55:01 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2513
2514         * Statement about ignoring the Mutual Authentication flag when
2515           performing rekey with PFS was a bit misleading.  It is ignored
2516           if it was set in the initial negotiation, it cannot be even
2517           set in the rekey.  Fixed in the ke-auth draft.  Started the
2518           new versions of the protocol drafts in the doc/.
2519
2520 Sun Aug 26 14:59:15 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2521
2522         * Fixed a bug in silc_client_command_identify_save when saving
2523           new channel information.  The channel name was no duplicated
2524           and caused crash on exit.  Affected file is
2525           lib/silcclient/command_reply.c.
2526
2527 Fri Aug 17 23:07:45 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2528
2529         * Fixed the getkey command handling in the server.  Send just
2530           empty OK reply to the sender if the key could not be fetched
2531           (but everything else was ok, like the key just was not available).
2532           Changed the public key parameter to optional in the protocol
2533           specs so that empty OK reply can be sent.  Affected file
2534           silcd/command.c.
2535
2536           Added a message to Irssi SILC client to tell to user if the
2537           server did not return a public key.
2538
2539 Tue Aug 14 07:29:27 CEST 2001  Pekka Riikonen <priikone@silcnet.org>
2540
2541         * Fixed a channel key regeneration bug.  It registered new
2542           timeout tasks exponentially until all system resources were
2543           used.  Affected file silcd/server.c.
2544
2545 Sun Aug 12 20:48:14 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2546
2547         * Added the SILC Document generator to the scripts/silcdoc.
2548           It can be used to generate the Toolkit Reference Manual out
2549           of the source tree.  Internally it will also use the RoboDoc
2550           generator now imported in util/robodoc.
2551
2552 Sun Aug 12 12:28:17 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2553
2554         * Added couple of return's in rekey protocol if error orccurred
2555           during the protocol.  The execution must be terminated.
2556           Affected file silcd/protocol.c.  Also, terminate the protocol
2557           always with timeout.
2558
2559 Sat Aug 11 12:36:02 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2560
2561         * The client's Client ID was created initally from the wrong
2562           nickname (it could have been in format nick@host) in the
2563           silc_server_new_client.  Affected file silcd/packet_receive.c
2564
2565 Sat Aug 11 00:29:57 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2566
2567         * Added some SILC_LOG_ERROR's to various error conditions
2568           if client could not be added to ID cache.  Affected files
2569           silcd/packet_receive.c and silcd/server.c.
2570
2571         * When client's sock->user_data is freed, NULL also the 
2572           client->router and client->connection pointers.  Added check
2573           for these pointers being NULL to various places around the
2574           code.  Affected file silcd/server.c.
2575
2576         * Added client->data.registered == TRUE checks to various
2577           places around the code to assure that unregistered client's
2578           are not handled when it is not allowed.  Affected file
2579           silcd/server.c.
2580
2581         * Added `bool registered' fields to all 
2582           silc_idlist_[server|client]_get_* routines to indicate whether
2583           the fetched client needs to be registered or not.  Affected
2584           file silcd/idlist.[ch].
2585
2586         * Add your own entry as registered to the ID cache in the
2587           server.  Affected file server.c.
2588
2589         * Fixed a bug in silc_server_new_server.  The SilcServer was
2590           set as the new server's context instead of SilcServerEntry.
2591           This naturally caused some weird bugs.
2592
2593 Thu Aug  9 18:28:37 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2594
2595         * Do not delete the channel rekey task when adding it
2596           for in silc_server_create_channel_key.
2597
2598         * Changed the silc_server_create_channel_key to return
2599           TRUE or FALSE to indicate the success of the channel key
2600           creation.
2601
2602 Thu Jul 26 11:32:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2603
2604         * Fixed MSVC++ project files and added missing files to
2605           Makefiles under win32/.
2606
2607 Wed Jul 25 18:43:54 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2608
2609         * Do not add TCP_NODELAY flag if the operating system
2610           does not have it defined.  Affected files are
2611           lib/silcutil/[unix/win32]/silc[unix/win32]net.c.
2612
2613         * Fixed buffer overflow from Irssi SILC Client.  Affected
2614           file irssi/src/fe-common/core/themes.c.
2615
2616         * Fixed double free in client library in the file
2617           lib/silcclient/client.c when disconnecting from server.
2618
2619         * Applied double free patch from cras to Irssi SILC client.
2620           Affected files irssi/src/core/[modules/expandos].c
2621
2622         * Fixed the disconnection handling to Irssi SILC Client.
2623           The application must call silc_client_close_connection
2624           in ops->connect client operation in case of failure of
2625           the connection.  Affected file is
2626           irssi/src/silc/core/client_ops.c.
2627
2628         * Do not set sock->protocol to NULL in the function
2629           silc_client_close_connection after executing the protocol's
2630           final callback since the sock might not be valid anymore.
2631           Affected file lib/silcclient/client.c.
2632
2633 Wed Jul 25 16:04:35 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2634
2635         * Do not enable SILC_THREADS if the linking with libpthread
2636           did not happen.  Affected file configure.in.pre.
2637
2638         * Added notion to protocol specification that server must
2639           verify the sent authentication payload with CMODE when
2640           setting the channel founder key.  Implemented it to the
2641           server.  Affected file silcd/command.c.
2642
2643 Mon Jul 23 18:31:43 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2644
2645         * Added _EXTRA_DIST SILC distribution variable to the
2646           distributions file.  It is used to conditionally add extra
2647           files or directories to the specific distribution.  Affected
2648           files ./prepare, Makefile.am.pre and distributions.
2649
2650           Removed the `_' from the start of the distribution names.
2651           It is redundant.
2652
2653         * Added README.WIN32 for instructions to compile the Toolkit
2654           under WIN32.
2655
2656 Mon Jul 23 10:12:37 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2657
2658         * Fixed a double free in disconnection in the server.  Affected
2659           file is silcd/server.c.
2660
2661         * Fixed the lib/silcske/groups.c to work now also with GMP
2662           MP library.  The string conversion did not work when using
2663           specific base and the base is indicated in the string as well.
2664
2665         * Created win32/ directory which now includes MSVC++ specific
2666           stuff so that toolkit (DLLs) may be compiled with MSVC++.
2667           It will appear only in the toolkit distribution
2668
2669 Sun Jul 22 19:40:30 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2670
2671         * Changed the key material distribution function in case when
2672           the hash output is too short.  The data is now concatenated
2673           a bit differently than it used to.  Made the change to the
2674           SKE protocol specification.
2675
2676         * Added better GMP detection to configure.in.pre.  A patch
2677           by salo.
2678
2679 Fri Jul 20 13:16:00 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2680
2681         * Fixed a minor bug in SKE that might cause some problem on
2682           some platforms.  Affected file lib/silcske/silcske.c.
2683
2684         * Added the cookie checking for initiator in the SKE.  It checks
2685           that the responder returns the sent cookie unmodified.  The
2686           affected file is lib/silcske/silcske.c.  Added new SKE
2687           error type INVALID_COOKIE that can be sent during the
2688           negotiation.  Fixed some memory leaks as well.
2689
2690         * Added the "invalid cookie" error message to Irssi SILC client's
2691           message formats.
2692
2693 Thu Jul 19 21:44:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2694
2695         * Added `task_max' field to the SilcClientParams to indicate
2696           the maximum tasks the scheduler can handle.  If set to zero,
2697           default values are used.  Affected file lib/silcclient/silcapi.h.
2698
2699         * Fixed memory leaks in silc_client_close_connection.  Affected
2700           file lib/silcclient/client.c.
2701
2702         * Added silc_client_del_client_entry to client library to free
2703           all memory of given client entry.  Affected file is
2704           lib/silcclient/idlist.[ch].
2705
2706         * Added new functions silc_client_del_channel and
2707           silc_client_del_server to delete channel and server entries.
2708           Affected file lib/silcclient/[silcapi.h/idlist.c].
2709
2710         * Removed silc_client_del_client_by_id from silcapi.h.
2711
2712         * Fixed the INFO command to return the server's own info
2713           correctly when querying by Server ID.  Affected file is
2714           silcd/command.c.
2715
2716 Thu Jul 19 14:47:30 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2717
2718         * Removed the non-blocking settings in WIN32 code in the
2719           silc_sock_[read/write] and added SleepEx instead.  Affected
2720           file lib/silcutil/win32/silcwin32sockconn.c.  The availability
2721           of input data is now checked with FIONREAD and ioctlsocket.
2722
2723 Wed Jul 18 18:34:01 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2724
2725         * Call silc_schedule_task_del_by_context in the 
2726           silc_protocol_cancel instead of silc_schedule_task_del_by_callback.
2727           Affected file lib/silccore/silcprotocol.c.
2728
2729         * Call silc_protocol_cancel for active protocols in the
2730           silc_server_close_connection if the funtion
2731           silc_server_free_sock_user_data has not been called.
2732           Affected file silcd/server.c.
2733
2734         * Generic tasks cannot be deleted using the del_by_fd
2735           task deleting function since generic tasks does not match
2736           any specific fd.  Affected file lib/silcutil/silcschedule.[ch].
2737
2738         * Added a notion to SILCOPER help file that the SILCOPER works
2739           only on router server, not on normal server.
2740
2741 Wed Jul 18 09:40:04 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2742
2743         * Added for WIN32 support for the new scheduler as well.
2744           Affected file lib/silcutil/win32/silcwin32schedule.c.
2745
2746         * Fixed the SHA1 implementation to work on various platforms.
2747
2748 Tue Jul 17 23:04:10 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2749
2750         * Rewrote the SILC Scheduler entirely.  Removed the old SILC Task
2751           API.  It is part of the scheduler now.  Everything else is
2752           as previously but some functions has changed their names.
2753           Checkout the lib/silcutil/silcschedule.h for the interface.
2754           Updated all applications to use the new interface.  Affected
2755           files are lib/silcutil/silcschedule.[ch].
2756
2757 Tue Jul 17 16:53:30 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2758
2759         * Found a bug in the SKE implementation.  The HASH value,
2760           specified by the protocol, was not computed correctly.  The
2761           public key of the responder was not added to the computation
2762           even though it is mandatory.  Affected file lib/silcske/silcske.c.
2763           This unfortunately causes incompatibilities with older
2764           clients and servers.
2765
2766         * Added WIN32 specific network init and uninit functions:
2767           silc_net_win32_init and silc_net_win32_uninit to init and uninit
2768           the Winsock2.  Affected file lib/silcutil/silcnet.h and
2769           lib/silcutil/win32/silcwin32net.c.
2770
2771         * Set the socket always to nonblocking mode on WIN32 after
2772           reading data or writing data.  Affected file is
2773           lib/silcutil/win32/silcwin32sockconn.c.
2774
2775 Mon Jul 16 22:55:26 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2776
2777         * Fixed various compilation problems under WIN32.  Affected
2778           files lib/silcutil/win32/silcwin32thread.c and
2779           lib/silcutil/win32/silcwin32schedule.c.
2780
2781         * Removed all _internal.h #includes from public header
2782           files.  Internal headers must never be included from
2783           public headers.
2784
2785           Removed also the lib/silcske/payload_internal.h file.
2786
2787         * All include files that may be needed (public and some others
2788           included by the public headers) by application developers are
2789           now copied to the ./includes directory.  It does not copy any
2790           internal headers.  Affected file Makefile.defines.pre and all
2791           Makefile.am's under lib/ and subdirs.
2792
2793 Thu Jul 12 17:49:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2794
2795         * Do not change the ~/.silc directory's permissions automatically.
2796           Affected file irssi/src/silc/core/clientutil.c.
2797
2798 Thu Jul 12 10:18:40 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2799
2800         * Do not cancel the protocol in silc_server_close_connection
2801           it might cause recursion.  Now cancelled in the function
2802           silc_server_free_sock_user_data.  Affected file silcd/server.c.
2803
2804         * Fixed the silc_server_remove_clients_by_server to regenerate
2805           the channel keys correctly finally.  Added also new function
2806           silc_server_remove_clients_channels to actually do it.
2807           Affected file silcd/server.c.
2808
2809         * Fixed the silc_server_new_channel to not crash by giving
2810           wrong router to the new channel.  Affected file is
2811           silcd/packet_receive.c.
2812
2813 Wed Jul 11 18:31:57 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2814
2815         * Added SilcClientParams structure to the lib/silcclient/silcapi.h
2816           which is given as argument to the silc_client_alloc now.
2817           It can be used to configure the client and set various parameters
2818           that affect the function of the client.
2819
2820         * The USERS command in server did not check whether the channel
2821           is private or secret.  Affected file silcd/command.c.
2822
2823         * Added new argument to the USERS command in protocol specification.
2824           The USERS command now can take the channel name as argument
2825           as well.  Added support for this in client and server and
2826           updated the protocol specs.
2827
2828         * Completed the GETKEY command in client. It can be now used
2829           to fetch also servers public key not only some clients. 
2830           Affected files lib/silcclient/command[_reply].c.
2831
2832         * Added silc_client_get_server to return server entry by the
2833           server name.  Affected files lib/silcclient/silcapi.h and
2834           idlist.c.
2835
2836         * Redefined the IDENTIFY command in protocol specification to be
2837           more generic.  It now can be used to query information about
2838           any entity in the SILC Network, including clients, servers and
2839           channels.  The query may be based either the entity's name
2840           or the ID.  Added support for this in both client and server.
2841
2842           Affected files silcd/command.c and lib/silcclient/command.c
2843           and command_reply.c.
2844
2845         * Optimized the WHOIS and WHOWAS commands in the server. Removed
2846           the _from_client and _from_server functions.  Affected file
2847           silcd/command.c.
2848
2849         * Added silc_client_get_channel_by_id_resolve to the file
2850           lib/silcclient/silcapi.h to resolve channel information by
2851           its ID.  Added also silc_client_get_channel_by_id that
2852           does not resolve it from the server.
2853
2854 Tue Jul 10 18:05:38 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2855
2856         * Added SilcServerEntry context into the client library
2857           to represent one server.  The INFO command now allocates
2858           these to save the resolved server info.  For now on the
2859           client library will also keep information about servers,
2860           connected and resolved with INFO.
2861
2862           The INFO command now allocates the SilcServerEntry context
2863           and saves the server info there.  The COMMAND_REPLY in
2864           the INFO now returns the parameters to application in 
2865           same order as defined in the protocol specification.
2866
2867           The entries are cached in the client->server_cache.
2868
2869         * The INFO command is now issued after received the Client ID
2870           from the server.  Affected file lib/silcclient/client.c.
2871
2872         * The CMODE_CHANGE notify may now return also an SilcServerEntry
2873           to the application as the mode changer might be server.
2874           It is guaranteed that NULL is not returned anymore to the
2875           application.  Affected file lib/silcclient/client_notify.c.
2876
2877           The ID Type is now also passed to the application so that
2878           it can check whether the returned entry is SilcClientEntry
2879           or SilcServerEntry.
2880
2881           Added new function silc_client_get_server_by_id to return
2882           the server entry by ID.  Affected files are the
2883           lib/silcclient/silcapi.h and lib/silcclient/idlist.c.
2884
2885         * Do not create the channel in the Irssi SILC Client when issuing
2886           the JOIN command but when received the sucessful JOIN command
2887           reply.  Otherwise the channel might get created even though we
2888           could not join it.  The Affected file is
2889           irssi/src/silc/core/[silc-channels.c/client_ops.c].
2890
2891         * Fixed a channel joining bug in router.  The router must also
2892           check the channel modes, invite and ban lists etc. when serving
2893           the JOIN command sent by normal server.  Affected file is
2894           silcd/command.c.  The router now resolves the client's 
2895           information from the server who sent the JOIN command if it
2896           does not know it, and processes the JOIN command only after
2897           that.
2898
2899         * Changed the SilcCommandCb to take new argument; void *context2.
2900           Affected file lib/silccore/silccommand.h
2901
2902           The second argument in the command callbacks in the server now
2903           includes the SilcServerCommandReplyContext if the command was
2904           called as pending command callback from the command reply.
2905           Otherwise it is NULL. When called as pending the status of the
2906           command reply will be checked and if it was erronous the
2907           error will be sent to the original sender of the command.
2908           This way the client always receives the error messages even
2909           though the server was actually the one who received the error
2910           when it resent the command to router, for example.  Affected
2911           files silcd/command[_reply].[ch].
2912
2913         * Fixed sending WHOWAS command's error message to client if
2914           the requested client could not be found.  It was missing.
2915           silcd/command.c.
2916
2917         * Changed the CMODE and CUMODE commands reply arguments in the
2918           protocol specification.  The Channel ID is now sent in both
2919           of the commands to identify the channel.  Implemented this
2920           new feature to the client and server.  Affected files
2921           lib/silcclient/command_reply.c and silcd/command.c.
2922
2923         * Made better checks for invite and ban lists in the JOIN
2924           command in server.  Affected file silcd/command.c.
2925
2926 Mon Jul  9 18:28:34 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2927
2928         * The server now performs the incoming host IP/DNS lookup
2929           using the silc_socket_host_lookup and thus does not block
2930           the server anymore.  Affected file silcd/server.c.
2931
2932         * Completed the multi-thread support for SILC Scheduler in
2933           the lib/silcutil/silcschedule.c.
2934
2935         * Fixed the configure.in.pre to detect the pthread correctly
2936           on various systems.
2937
2938         * Fixed a deadlock in silc_task_queue_wakeup in the file
2939           lib/silcutil/silctask.c.
2940
2941 Mon Jul  9 13:40:03 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2942
2943         * Added new function silc_schedule_wakeup that is used in
2944           multi-threaded environment to wakeup the main thread's
2945           schduler. It needs to be used when a thread adds a new task
2946           or removes a task from task queues. After waking up, the
2947           scheduler will detect the task queue changes. If threads
2948           support is not compiled in this function has no effect.
2949           Implemented the wakeup mechanism to both Unix and WIN32
2950           systems.  Affected files are lib/silcutil/silcschedule.[ch],
2951           lib/silcutil/unix/silcunixschedule.c and the
2952           lib/silcutil/win32/silcwin32schedule.c.
2953
2954         * Added new function silc_task_queue_wakeup to wakeup the
2955           scheduler by the specified task queue.  Affected file
2956           lib/silcutil/silctask.[ch].
2957
2958         * The silc_socket_host_lookup_start now wakes up the scheduler
2959           after adding the timeout task.  Affected file is
2960           lib/silcutil/silcsockconn.c.
2961
2962         * The silc_socket_host_lookup is synchronous now if the threads
2963           support is not compiled in.  However, the callback is still
2964           called asyncronously through the scheduler, anyway.  Affected
2965           file lib/silcutil/silcsockconn.c.
2966
2967 Mon Jul  9 00:24:45 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2968
2969         * Added new function silc_socket_host_lookup to perform
2970           asynchronous IP and FQDN lookups for the socket connection.
2971           Affected files lib/silcutil/silcsockconn.[ch].
2972
2973 Sun Jul  8 18:44:53 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2974
2975         * Added SILC_MUTEX_DEFINE to define the mutex on environments
2976           that may or may not compile the mutex support in.
2977         
2978           Changed the silc_mutex_alloc interface. It allocates the
2979           mutex now to the sent pointer and returns TRUE or FALSE.
2980
2981           Affected file lib/silcutil/silcmutex.h.
2982
2983         * Wrote the SILC Task Queue interface to support multi-threads.
2984           Affected file lib/silcutil/silctask.[ch].
2985
2986         * Wrote the SILC Scheduler to support multi-threads.  Affected
2987           file lib/silcutil/silcschedule.c.
2988
2989 Sun Jul  8 11:16:01 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2990
2991         * Implemented the SILC Mutex API and SILC Thread API for WIN32
2992           in lib/silcutil/win32/.
2993
2994 Sun Jul  8 00:18:15 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
2995
2996         * Defined SILC Mutex API and SILC Thread API and implemented
2997           them for Unix.  Affected files are
2998           lib/silcutil/silcmutex.h, lib/silcutil/silcthread.h,
2999           lib/silcutil/unix/silcunixmutex.c and
3000           lib/silcutil/unix/silcunixthread.c.
3001
3002 Sat Jul  7 14:40:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
3003
3004         * Fixed the silc_server_remove_clients_by_server's channel
3005           key re-generation.  The hash table handling was incorrect
3006           and would not work with many channels.  Affected file is
3007           silcd/server.c.
3008
3009         * Fixed some memory leaks around the server code.
3010
3011         * Rewrote the silc_server_get_users_on_channel to support IPv6
3012           based Client ID's.  Affected file silcd/server.c.
3013
3014         * Defined the SILC_MESSAGE_FLAG_SIGNED to the protocol
3015           specification.  However, a separate document must be written
3016           to define the detailed signing procedure and the payload
3017           associated with the flag.  Defined the flag to the
3018           lib/silccore/silcchannel.h as well.
3019
3020 Fri Jul  6 18:26:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
3021
3022         * Changed the dynamic tables to static size tables in the
3023           lib/silccrypt/silchmac.c.
3024
3025         * Removed GCC dependencies from the code.  A patch by cras.
3026
3027 Fri Jul  6 09:39:35 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
3028
3029         * Do not show the error "Error receiving packet bla bla"
3030           in server if it really was not an error (-2 means that reading
3031           is pending).  Affected file silcd/server.c.
3032
3033 Thu Jul  5 21:22:32 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
3034
3035         * Fixed a possible crash in silc_server_remove_clients_by_server
3036           in silcd/server.c.  Fixed there also some memory leaks.
3037
3038         * Fixed the silc_idlist_replace_client_id.  It could replace
3039           wrong key in the hash table.  Affected file silcd/idlist.c.
3040
3041         * Do not check whether there are global users on the channel
3042           if the channel->global_users is FALSE.  Affected functions
3043           silc_server_remove_from_one_channel and
3044           silc_server_remove_from_channels in silcd/server.c.  Also,
3045           do not check if the removed client is local as we can be
3046           sure that global client was not removed from the channel
3047           and checking for global users is not needed.
3048
3049         * The silc_server_remove_clients_by_server now re-generates
3050           the channel keys correctly for those channels that had
3051           clients removed from them.  Affected file silcd/server.c.
3052
3053 Tue Jul  3 11:39:20 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
3054
3055         * Found the reason of random crashes in the server.  We weren't
3056           ignoring the SIGPIPE signal (which can be sent in write())
3057           and it crashed the server.  Affected file silcd/silcd.c.
3058
3059 Fri Jun 29 20:05:25 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
3060
3061         * Assure that sock->user_data is not NULL in the function
3062           silc_server_packet_send in silcd/packet_send.c.
3063
3064         * Disconnect the remote connection if it could not be added
3065           to any ID lists in the server.  The affected file is
3066           silcd/server.c.
3067
3068         * Check in silc_server_packet_send[_real/dest] that the
3069           socket is not disconnecting and ignore the data if it is.
3070           Affected file silcd/packet_send.c.
3071
3072         * Define inline to __inline on native WIN32 compilation.
3073           Affected file includes/silcwin32.h.
3074
3075         * Added some explicit type casts for inline code since MSVC
3076           require them.  Affected files lib/silcutil/silcbuffer.h,
3077           lib/trq/silcdlist.h and lib/trq/silclist.h.
3078
3079         * Print warning in log files from now on if the packet
3080           decryption fails.  Affected file silcd/server.c.
3081
3082 Thu Jun 28 21:30:39 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
3083
3084         * Changed the `say' client operation's interface to accept
3085           new `type' argument to indicate the type of the message sent
3086           by the library.  The application may filter the library's
3087           messages according the type.  The affected file is the
3088           lib/silcclient/silcapi.h.
3089
3090         * Added two new functions to lib/silcclient/silcapi.h:
3091           silc_client_del_client and silc_client_del_client_by_id.
3092           Affected file lib/silcclient/idlist.c.
3093
3094         * Moved the clientincludes.h from includes/ to silc/ and
3095           serverincludes.h from includes/ to silcd/.
3096
3097         * The modes for the CMODE and CUMODE are now passed as
3098           uint32 for application with COMMAND_REPLY.  The affected
3099           file is lib/silcclient/command_reply.c.
3100
3101 Wed Jun 27 22:24:47 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
3102
3103         * /WHOIS without arguments shows client's own information.
3104           Affected file lib/silcclient/command.c.
3105
3106         * Changed PING to not accept any arguments.  The specs
3107           says that client can ping only the connected server so
3108           requiring an argument is not needed.  Affected file is
3109           lib/silcclient/command.c.
3110
3111 Wed Jun 27 00:10:33 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
3112
3113         * Fixed a fatal bug in private message sending and reception
3114           encryption and decryption when using private message keys.
3115           The implementation was incorrect and did not follow the
3116           specification.  It causd that some of the message were
3117           lost since it did not use the sending and receiving keys
3118           as the protocol suggests.  This has been fixed and will cause
3119           incompatibilities with older clients when sending private
3120           message encrypted with private message keys.  Affected files
3121           lib/silcclient/client_prvmsg.c, lib/silcclient/client_keyagr.c
3122           and various other in Irssi SILC Client.
3123
3124           Added `responder' boolean argument to the functions
3125           silc_client_add_private_message_key[_ske] to indicate when
3126           the key is added as responder or initiator of the key
3127           negotiation.
3128
3129 Tue Jun 26 19:23:07 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
3130
3131         * Removed the silc_ske_check_version function and created
3132           a SilcSKECheckVersion callback.  Added also a function
3133           silc_ske_set_callbacks that is now used to set all SKE
3134           callbacks.  The callback functions are not given to
3135           the SKE functions anymore, but this function is used to
3136           set the callbacks.
3137
3138         * Fixed the WIN32 DLL generation in lib/Makefile.am.pre.
3139
3140         * Added `silc_version' argument to the silc_client_alloc
3141           to define the version of the application for the library.
3142           The library will use the version string to compare it
3143           against the remote host's (usually a server) version
3144           string.  Affected file lib/silcclient/silcapi.h
3145
3146         * Added the KE protocol context to Key Agreement context
3147           in client library so that we can abort the SKE if it
3148           is in process when we get timeout.  Affected file is
3149           lib/silcclient/client_keyagr.c.
3150
3151         * Do not resolve the client ID forever if it returns in the
3152           first time that such client does not exist.  This was done
3153           for example with private message.  Affected file is
3154           lib/silcclient/client_prvmsg.c.
3155
3156 Mon Jun 25 21:42:51 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
3157
3158         * Do not add regex.h for WIN32.  The affected file
3159           includes/silcincludes.h.
3160
3161         * Added WIN32 DLL generation to lib/Makefile.am.pre.  It might
3162           not work yet 100%.  It generates the DLL's automatically
3163           when compiling with --with-win32 under cygwin.
3164
3165 Sun Jun 24 19:49:23 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
3166
3167         * lib/contrib/regex.c is not compiled on WIN32.
3168
3169         * Added silc_net_get_socket_opt function to the
3170           lib/silcutil/silcnet.h.
3171
3172         * Added includes/silcwin32.h for WIN32 specific includes
3173           and definitions.
3174
3175         * Do not use ptime structure or any of the posix process
3176           functions on WIN32 in lib/silccrypt/silrng.c.
3177
3178         * Added silc_gettimeofday to provide generic function
3179           for struct timeval on all platforms.  Added the function
3180           to lib/silcutil/silcutil.h.
3181
3182 Sun Jun 24 12:19:52 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
3183
3184         * Moved the lib/silccore/silcsockconn.[ch] to the utility
3185           library as they clearly belong there.  As a plus side we
3186           can make the actual socket connection routines platform
3187           specific.
3188
3189           Added also new generic function silc_socket_read and
3190           silc_socket_write (that used to be silc_packet_[read/write].
3191           The implementation of these are platform specific.
3192
3193         * Added WIN32 specific routines of silc_socket_[read/write]
3194           to lib/silcutil/win32/silcwin32sockconn.c.
3195
3196 Sat Jun 23 16:01:00 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
3197
3198         * Added preliminary support for native WIN32 compilation under
3199           cygwin (using the -mno-cygwin option for GCC) to the
3200           ./configure.in.pre.  The --with-win32 now prepares the
3201           compilation for native WIN32.
3202
3203         * Rewrote the SILC Scheduler interface in the file
3204           lib/silcutil/silcschedule.h.  The scheduler is now context
3205           based and does not have anymore any global static scheduler.
3206           Moved the Unix scheduler to the lib/silcutil/unix/ directory
3207           and created lib/silcutil/win32 directory for WIN32 based
3208           scheduler.
3209
3210         * Added Unix specific network routines to the
3211           lib/silcutil/unix/silcunixnet.c and the old
3212           lib/silcutil/silcnet.c includes now only generic routines.
3213
3214           Added WIN32 specific network routines to the
3215           lib/silcutil/win32/silcwin32net.c.
3216
3217         * Added Unix specific utility functions from the
3218           lib/silcutil/silcutil.c to lib/silcutil/unix/silcunixutil.c.
3219
3220         * Added WIN32 SILC Scheduler to the file
3221           lib/silcutil/win32/silcwin32schedule.c. The code is of course
3222           untested.
3223
3224 Fri Jun 22 10:44:14 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
3225
3226         * Do not handle JOIN notify in the server if the target client
3227           is not registered (idata->registered == FALSE).  The affected
3228           file is silcd/packet_receive.c.
3229
3230         * Update the nickrec->founder in event_cumode in the Irssi SILC
3231           client.  Affected file irssi/src/silc/core/silc-channels.c.
3232
3233         * Fixed the CUMODE_CHANGE notify handling in the server when
3234           server and router are announcing their clients on channels.
3235           Now the mode changes are saved and notified correctly.  The
3236           affected file is /silcd/packet_receive.c.
3237
3238         * Fixed silc_idlit_replace_[server/client/channel]_id functions.
3239           They really did not replace the cache entry in the ID Cache.
3240           Now they do that.  Affected file silcd/idlist.c.
3241
3242         * Fixed the KICK notify handling in the Irssi SILC client to
3243           update the channel records so that the kicked client does not
3244           appear to be on the channel.  The affected file is 
3245           irssi/src/silc/core/silc-channels.c.
3246
3247         * Always update the conn->current_channel when executing command
3248           on a channel.  Affected file irssi/src/silc/core/silc-servers.c.
3249
3250         * Fixed the KILL notify handling in Irssi SILC client to remove
3251           the killed client on all channels.
3252
3253 Thu Jun 21 17:10:08 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3254
3255         * Fixed the silc_parse_command_line to remove extra spaces
3256           from the start and end of the arguments.  Affected file is
3257           lib/silcutil/silcutil.c.
3258
3259         * Cancel and free any active protocol in the function
3260           silc_server_close_connection.  Affected file silcd/server.c.
3261
3262         * Cancel and free any active protocol in the function
3263           silc_client_close_connction.  Affected file is
3264           lib/silcclient/client.c.
3265
3266         * Do not execute the KILL command for clients that are in
3267           history (ie. they are not in the network).  Affected file is
3268           silcd/command.c.
3269
3270         * Fixed KILL notify handling, client does not crash anymore.
3271           Affected file irssi/src/silc/core/silc-channels.c.
3272
3273         * Reduced the default packet buffer size from 2048 to 1024 in   
3274           lib/silccore/silcpacket.c.
3275
3276         * Added SILC_SKE_STATUS_FREED SKE status type and a reference
3277           counter to the SKE context that is incresed when the SKE library
3278           performs async operation outside the library.  If the outside
3279           process frees the SKE context and FREED status will be set 
3280           and the library will detect after the sync operation that the
3281           libary is freed.  The affected files are
3282           lib/silcske/silcske[_status].[ch].
3283
3284         * Resolve the client entry information in the function
3285           silc_client_channel_message to assure that NULL pointer is not
3286           passed as client entry to the application. */
3287
3288         * Fixed the task timeout calculation to assure that there is
3289           never negative timeouts.  The affected file is 
3290           lib/silcutil/silcschedule.c.
3291
3292         * Fixed the channel user mode notification sending in server.
3293           It was sent point-to-point to the router (or to server by router)
3294           but it needs to be destined to a channel.  The routines now
3295           supports sending the channel user mode notifys to the channels
3296           when announcing clients and channels.  Affected files are
3297           silcd/server.c and silcd/packet_receive.c.
3298
3299         * Fixed the CHANNEL_CHANGE notify handling in the client libary.
3300           It did not actually replace the old channel entry in the cache.
3301           Affected file lib/silcclient/client_notify.c.
3302
3303 Tue Jun 19 22:10:36 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3304
3305         * Fixed a possible crash in silc_packet_send_prepare.  It now
3306           assures always that there is enough space in the buffer and
3307           at the tail area of the buffer (for MAC). 
3308
3309           Fixed the inbound buffer reallocation in silc_packet_read.
3310           It was old code and did not handle the reallocation correctly.
3311           Affected
3312
3313           The affected file is lib/silccore/silcpacket.c.
3314
3315         * Fixed buffer overflow in silc_parse_nickname in the file
3316           lib/silcutil/silcutil.c.
3317
3318 Tue Jun 19 13:40:09 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3319
3320         * make install generates new server keys only if there is not
3321           keys already.
3322
3323 Mon Jun 18 18:49:07 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3324
3325         * Set SILC_MESSAGE_FLAG_NOREPLY when sending the away message.
3326           Added check that if the NOREPLY is set then we will not send
3327           the away message.  This avoids infinite loop of away messages
3328           if both clients are away.  The affected file is
3329           lib/silcclient/client_prvmsg.c.
3330
3331         * Fixed client crash if /NICK was given without arguments.
3332           Affected file lib/silcclient/command.c.
3333
3334         * Server does not send the invite list in INVITE command back
3335           to the client if the list was not altered.  Added this notion
3336           to the protocol spec as well.  Affected file silcd/command.c.
3337
3338           Fixed possible crash in INVITE command by checking the
3339           value of silc_server_get_client_route command.
3340
3341         * Fixed the INVITE notify type handling.  The arguments are now
3342           taken in correct order and client does not crash.  The affected
3343           file is irssi/src/silc/core/silc-channels.c.
3344
3345           Removed the "Inviting xxx to channel" message from the
3346           client library away and let the application handle it.
3347           Affected file lib/silcclient/command.c.  Added that message
3348           to Irssi SILC client's message formats.
3349
3350         * Fixed CMODE command crash in client.  It now checks the
3351           amount of arguments correctly and does not crash.  The affected
3352           file is lib/silcclient/command.c.
3353
3354         * Do not create new channel automatically in silc_channels_join
3355           but check whether the channel by that name already exists.
3356           Affected file irssi/silc/core/silc-channels.c.
3357
3358         * Do not send the SERVER_SIGNOFF to router if the disconnected
3359           entity was the router.  Affected file silcd/server.c.
3360
3361         * Added the handling of the SERVER_SIGNOFF notify to the Irssi
3362           SILC client as it was missing from there.
3363
3364           Added the handling of the KICK notify to the Irssi SILC client
3365           as it was missing.  Added "you have been kicked" message to
3366           Irssi SILC client's message modules formats.
3367
3368           Added the handing of the KILL notify to the Irssi SILC client
3369           as it was missing.  Added the kill message module formats 
3370           as well.
3371
3372           The affected file is irssi/src/silc/core/silc-channels.c.
3373
3374         * The router did not save the channel mode the server announced.
3375           Affected file silcd/packet_receive.c.
3376
3377         * Fixed a possible crash in INFO command in server.  If the
3378           server did not provide the server info it crashed.  Affected
3379           file silcd/command.c.
3380
3381 Sun Jun 17 15:26:05 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3382
3383         * Fixed the GETKEY command in the server to check also the
3384           global list.  Otherwise the GETKEY would not work correctly
3385           in normal SILC server.  Affected file silcd/command.c.
3386
3387 Sat Jun 16 18:00:00 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3388
3389         * Fixed GETKEY crash, it crashed if the command did not succseed.
3390
3391 Tue Jun 12 21:36:18 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3392
3393         * Redefined the SILC MP API in lib/silcmath/silcmp.h. The API
3394           is now real and not just an macro interface to GMP.
3395
3396           Removed the entire GMP from the source tree and imported new
3397           NSS MPI library instead.  Reason for removing GMP is that it is
3398           extremely large and compiles extremely slow.  The NSS MPI
3399           is only a few files and compiles in less than 10 seconds.
3400           The speed is also about the same as GMP.  The MPI is imported
3401           to lib/silcmath/mpi.
3402
3403           If the system has GMP installed we will still use the GMP.
3404           If it is not then the NSS MPI will be compiled.
3405
3406 Mon Jun 11 18:07:24 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3407
3408         * Merged a long nickname (127 characters long) crash bugfix from
3409           Irssi CVS tree.  Affected file irssi/src/core/misc.c.
3410
3411         * Merged a freed memory reference bugfix from Irssi CVS tree.
3412           Affected file irssi/src/core/commands.c.
3413
3414 Sun Jun 10 16:08:35 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3415
3416         * Added the server's public key sving and verification to the
3417           server when performing the SKE.  This was missing and the
3418           remote server's (or router's) public key was accepted without
3419           checking whether we have it previously or trust it at all.
3420           Affected file silcd/protocol.c.
3421
3422 Sat Jun  9 20:17:30 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3423
3424         * Check in the silc_server_timeout_remote if protocol is active
3425           and make sure that the protocol's final callback is called so
3426           that all memory if freed.  Affected file silcd/server.c.
3427
3428 Sat Jun  9 12:51:27 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3429
3430         * silc_server_whois_send_reply crashed the server if the nickname
3431           was 127 characters long.  Affected file silcd/command.c.
3432
3433 Thu Jun  7 16:29:56 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3434
3435         * Added sanity check to the silc_server_new_client. If the hostname
3436           is provided inside username then check that the provided hostname
3437           really is the same as the resolved one.  If the hostname was not
3438           resolved then check it from the public key.  Affected file is
3439           silcd/packet_receive.c.
3440
3441         * Fixed a fatal bug in Irssi SILC client. Do not send QUIT command
3442           if the server disconnected us and the connection is not valid
3443           anymore.  Affected file irssi/src/silc/core/silc-channels.c.
3444
3445         * Moved the silc_client_[chmode|chumode|chumode_char] away from
3446           the library to the lib/silcutil/silcutil.[ch].
3447
3448 Thu Jun  7 08:57:16 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3449
3450         * Close log file after open.  Affected file 
3451           lib/silcutil/silclog.c.
3452
3453         * Check whether sock == NULL in silc_client_send_packet and return
3454           if it is.  Affected file lib/silcclient/silcclient.c.
3455
3456         * Check rec->entry == NULL in the Irssi SILC Client before
3457           sending the channel message.  Affecte file is
3458           irssi/src/silc/core/silc-servers.c.
3459
3460 Tue Jun  5 08:08:21 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3461
3462         * Merged a splitted window bugfix from Irssi CVS tree.  The 
3463           affected file is irssi/src/fe-text/textbuffer-view.c.
3464
3465         * Fixed the ME, ACTION and NOTICE printing in Irssi Client.
3466           It did not print nickname.
3467
3468         * Improved the distributions system a bit.
3469
3470 Mon Jun  4 17:57:16 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3471
3472         * Merged /WINDOW bugfix from irssi CVS tree. Affected file is
3473           irssi/src/fe-text/gui-window.c.
3474
3475         * Fixed a fatal bug in Irssi SILC client. Crashed if sent message
3476           to in-active server.  The affected file is
3477           irssi/src/silc/core/client_ops.c.
3478
3479         * Resolve the client in USERS command reply if the entry does
3480           not have username resolved.  The affected file is
3481           lib/silcclient/command_reply.c.  Also, changed the IDENTIFY
3482           command to WHOIS command to really resolve stuff.  The USERS
3483           is not used any more in any critical section so WHOIS can
3484           be used even though it might be slower than IDENTIFY.
3485
3486         * Changed the lib/silcutil/silchashtable.h header to ROBODoc
3487           format.
3488
3489 Sun Jun  3 14:21:32 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3490
3491         * Changed the protocol API a bit more consistent in the
3492           lib/silccore/silcprotocol.[ch].
3493
3494         * Changed the following headers to ROBODoc format:
3495
3496                 lib/silccore/silcpayload.h
3497                 lib/silccore/silcprotocol.h
3498                 lib/silccore/silcsockconn.h
3499
3500           All core library headers are now formatted.
3501
3502 Sat Jun  2 10:45:09 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3503
3504         * Fixed a bug in Irssi SILC client; do not show that you are
3505           server/router operator if you really are not.  Affected file is
3506           irssi/src/silc/core/client_ops.c.
3507
3508         * Renamed silc_command_free_payload to silc_command_payload_free.
3509           Affected file lib/silccore/silccommand.h
3510
3511         * Added silcmath.h to include the prototoypes of various routines
3512           in the lib/silcmath.  Removed the old modinv.h, mpbin.h and
3513           silcprimegen.h.
3514
3515         * Changed the following headers to ROBODoc format:
3516
3517                 lib/silccore/silcchannel.h
3518                 lib/silccore/silccommand.h
3519                 lib/silccore/silcid.h
3520                 lib/silccore/silcidcache.h
3521                 lib/silccore/silcmode.h
3522                 lib/silccore/silcnotify.h
3523                 lib/silccore/silcpacket.h
3524                 lib/silcmath/silcmath.h
3525
3526 Fri Jun  1 22:19:37 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3527
3528         * Added checking to the server code not to start the server if
3529           ciphers and stuff are not configured properly.  Affected files
3530           silcd/serverconfig.[h] and silcd/server.c.
3531
3532         * Changed the layout of the header files of the public interfaces
3533           in the SILC libraries.  The new layout supports ROBODoc 
3534           documentation tool (and some others) so that it is easy to create
3535           a library reference manual.  All the other headers and source
3536           code must still follow the CodingStyle document.  Also source
3537           code must not include these ROBODoc stuffs, only the headers.
3538           Furthermore, all public interface headers must now be named
3539           by using `silc' prefix, example: silcapi.h, silccipher.h.
3540           Some files were renamed due to this.  All the other headers
3541           must not be used as public interfaces.  I will update the
3542           CodingStyle document later.  Changed following headers, so far:
3543
3544                 lib/silcclient/silcapi.h
3545                 lib/silccore/silcauth.h
3546                 lib/silccore/silcprivate.h
3547                 lib/silccrypt/silcdh.h
3548
3549 Fri Jun  1 10:28:09 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3550
3551         * Updated TODO.
3552
3553         * Removed silc_client_packet_send_flush from the client library
3554           as it is not needed.  Affected file lib/silcclient/client.[ch].
3555
3556         * Added printing of message of unresolved authentication method
3557           to the Irssi SILC client.  Added it to the module formats.
3558           Removed the same message from the client library.
3559
3560 Thu May 31 13:57:33 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3561
3562         * Added new distribution feature, DISTLABEL.  Every distribution
3563           can define own preprocessor label that can be used in the
3564           source code.  For example: #ifdef SILC_DIST_CLIENT.  Affected
3565           file distributions, acconfig.h.pre and prepare.
3566
3567 Tue May 29 22:16:40 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3568
3569         * Added Makefile.defines_int to include the actual definitions
3570           for Makefile.defines.in.  Tested the new distribution system,
3571           created distributions and tested installation.
3572
3573         * Added AWAY message printing to the Irssi SILC client.  Added
3574           the messages to the irssi/src/fe-common/silc/module-formats.[ch].
3575
3576         * Added SCONNECT command to call the SILC's CONNECT command.
3577           Cannot use CONNECT directly since Irssi uses that internally.
3578           Affected file irssi/src/silc/core/silc-servers.c.
3579
3580           Added ACTION local command.  It is same as ME command but takes
3581           the channel as mandatory argument.
3582
3583           Rewrote some of the Irssi's help files to suite for SILC
3584           protocol.
3585
3586 Mon May 28 19:05:22 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3587
3588         * Added Makefile.defines[.in] that should for now on be included
3589           in all Makefile.am file in the source tree.  That file includes
3590           all common compilation definitions for SILC source tree.
3591
3592 Mon May 28 10:30:51 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3593
3594         * Minor changes to the ./prepare script to change the package
3595           name according the distribution name to the configure.in.
3596
3597 Sun May 27 22:24:57 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3598
3599         * Created new distribution system.  Added file `distributions'
3600           that defines all the distributions that can be created out of
3601           the SILC source tree.  The ./prepare script now reads that
3602           file to determine how to prepare the distributions.  The
3603           first argument to the ./prepare is the name of the distribution
3604           and second is the version of the distribution.  If given
3605           without arguments it creates the default (toolkit) distribution
3606           with the default version (defined in ./prepare).
3607
3608           All Makefile.am files that are subject to the distributions
3609           are now named as Makefile.am.pre.  These are ./Makefile.am
3610           and lib/Makefile.am.  Others may be changed later.
3611
3612 Sun May 27 15:57:17 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3613
3614         * Added invite list, ban list, some key management and connection
3615           error message printing to module formats in the Irssi SILC client.
3616
3617         * Added new silc_client_set_away_message to set the away message
3618           that is back to the person who sent private message.  The 
3619           affected file lib/silcclient/silcapi.h and the
3620           lib/silcclient/client_prvmsg.c.
3621
3622 Sun May 27 12:39:48 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3623
3624         * Fixed the private message sending in the Irssi SILC client,
3625           added local command KEY to the Irssi SILC client.
3626
3627           Added key management and key agreement message formats to the
3628           irssi/src/fe-common/silc/module-formats.[ch].
3629
3630           Added USERS (alias WHO) printing, server/router operator
3631           indication and LIST command printing to the module formats.
3632
3633 Sat May 26 17:43:42 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3634
3635         * Fixed channel joining notify handling, cumode notify handling
3636           from Irssi SILC client.
3637
3638         * Added SILC specific module-formats to the Irssi SILC client so
3639           that SILC specific message hilighting, colors etc is possible.
3640           Affected file irssi/src/fe-common/silc/module-formats.[ch].
3641
3642           Added channel mode, channel user mode, actions, notices,
3643           whois and whowas printing to the the module-formats.c.
3644
3645         * Fixed a bug in channel deletion in the server.  The channel
3646           is not left to the cache even if the channel founder auth mode
3647           is set when there are no users anymore on the channel.  Affected
3648           file silcd/server.c.
3649
3650         * The silc_net_localhost now resolves the entire hostname including
3651           the domain name.  Affected file lib/silcutil/silcnet.c.
3652
3653 Sat May 26 12:13:37 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3654
3655         * Changed the ask_passphrase client operation to be ascynchronous.
3656           It has now a completion callback and a context that the 
3657           application must call after it has got the passphrase from
3658           the user.  Affected files lib/silcclient/silcapi.h,
3659           lib/silcclient/protocol.c, lib/silcclient/command.c and
3660           silc/client_ops.c.
3661
3662           Added SilcAskPassphrase callback that the application calls
3663           to deliver the passphrase to the library.
3664
3665         * Changed the SKE protocol's SilcSKEVerifyCb to be asynchronous.
3666           The public key verification and especially a certificate
3667           verification is asynchronous procedure.
3668
3669           Added new SILC_SKE_STATUS_PENDING status to indicate the
3670           request is pending and a callback will be called to finalize
3671           the request.
3672
3673           Added also SILC_SKE_STATUS_PUBLIC_KEY_NOT_PROVIDED status to
3674           indicate that remote end did not send its public key (or
3675           certificate), even though we require it.  Added check for this
3676           condition in the SKE.  This was a security bug, now fixed.
3677
3678           Defined new SilcSKEVerifyCbCompletion callback that is called
3679           when the verification process is completed.
3680
3681           The affected files lib/silcske/silcske_status.h and
3682           lib/silcske/silcske.[ch].
3683
3684         * Changed the verify_public_key client operation to be async
3685           as well.  Defined SilcVerifyPublicKey callback that is used to
3686           indicate the success of the public key verification process.
3687
3688           Changed the server and client to use the new async client 
3689           operations.
3690
3691         * Changed the Irssi SILC client's internal scheduler to be called
3692           twice as many times as it used to be.  As a result the client
3693           should be a bit faster now.  Affected file is
3694           irssi/src/silc/core/silc-core.c.
3695
3696         * Added support to Irssi SILC client of asynchronous public key
3697           verification and passphrase inquiry.  Affected file is
3698           irssi/src/silc/core/silc-core.c.
3699
3700 Fri May 25 14:38:38 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3701
3702         * Do not say "You have left channel %s" in client library.
3703           Moved it to the application.  Affected files are
3704           lib/silcclient/command.c and silc/client_ops.c.
3705
3706         * Fixed silc_client_get_clients.  Command context was not
3707           duplicated and was freed memory in the callback.  Affected
3708           file lib/silcclient/idlist.c.
3709
3710         * Do not say "you are now talking..." on JOIN command in the
3711           client library.  The appliation must handle it.
3712
3713         * Do not say ".. changed topic to" in command reply in the
3714           client libary.  The application must handle it.
3715
3716         * Fixed TOPIC command sending in the client library.
3717
3718         * Fixed a memory leak in silc_client_command_free in the file
3719           lib/silcclient/command.c.
3720
3721 Thu May 24 19:08:55 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3722
3723         * Imported a modified version of Irssi client to the source tree.
3724           The Irssi will be used to create a new client called
3725           Irssi SILC.  Imported to irssi/.
3726
3727           Added silc_core_init_finish function to the Irssi.  Affected
3728           file irssi/configure.in.
3729
3730           A lot changes in the Makefile.ams around the irssi tree.
3731
3732 Tue May 22 22:23:49 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3733
3734         * Do not rehash if the new size is same as the old size of the
3735           hash table, in the silc_hash_table_rehash*.  The affected file
3736           lib/silcutil/silchashtable.c.
3737
3738         * Replaced hash_table_del_by_context calls from the server
3739           (when channel->user_list and client->channels) to the
3740           hash_table_del as it is sufficient and faster.
3741
3742 Tue May 22 17:27:16 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3743
3744         * Added silc_hash_table_list, silc_hash_table_get and the
3745           SilcHashTableList structure to provide an alternative way to
3746           traverse the hash table.  The affected files are
3747           lib/silcutil/silchashtable.[ch].
3748
3749         * Changed the server's idlist routines to use the hash table
3750           routines to optimize the code.
3751
3752 Mon May 21 21:46:20 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3753
3754         * Replaced the client entry's `channel' list and channel entry's
3755           `user_list' list to hash tables for optimized lookup.  Changed
3756           the code to use the hash table interface around the code. 
3757           Affected file lib/silcd/idlist.[ch].
3758
3759         * Added `auto_rehash' boolean argument to the function
3760           silc_hash_table_alloc to indicate whether the hash table should
3761           auto-rehash when it thinks is appropriate time.  It will
3762           increase the hash table size if the there is twice as much
3763           entries in the table than the size of the table, and will
3764           decrease the size if there are twice as less entries than
3765           the size of the table.
3766
3767 Mon May 21 09:51:11 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3768
3769         * Fixed silc_xxx_get_supported to not crash at some circumstances.
3770
3771 Sun May 20 13:45:58 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3772
3773         * silc_idcache_purge_by_context deletes the entry now by context
3774           as it is supposed to do.  Affected file lib/silccore/idcache.c.
3775
3776         * Send the ERR_NO_SUCH_NICK in the WHOIS command reply if the
3777           client is not anymore valid (WHOWAS givens the info) and not
3778           the ERR_NO_SUCH_CLIENT_ID if the nickname still exists.
3779
3780 Sat May 19 16:30:03 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3781
3782         * Removed the `data' and `data_len' arguments from the ID Cache
3783           interfaces and added `name' argument.  ID Cache does not handle
3784           anymore the binary data only a names associated with given ID.
3785
3786         * When hashing a Client ID with silc_hash_id the entire ID is
3787           not hashed anymore, instead only the hash of the Client ID is
3788           hashed.  This way we can access the Client ID from the cache
3789           with Client ID but with the hash of the ID (which is a hash of
3790           the nickname) as well without any difference in performance.
3791
3792           Added also silc_idcache_find_by_id_one_ext to do one on one 
3793           searching when we have the actual ID.  Added also function
3794           silc_hash_client_id_compare.  The affected files are
3795           lib/silccore/idcache.[ch] and lib/silcutil/silcutil.[ch].
3796
3797         * When hashing the name associated with a ID it is always done
3798           in lowercase.  This way we can access the cache without worrying
3799           about case-sensitivity, even though, for example nicknames are
3800           case sensitive.
3801
3802         * Fixed a bug in server with channel message sending.  It put
3803           wrong ID type as destination ID.  The affected file 
3804           silcd/packet_send.c.
3805
3806         * silc_idcache_del_by_context now deletes from all hash tables
3807           by context.  Affected file lib/silccore/idcache.c.
3808
3809 Fri May 18 17:42:00 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3810
3811         * Changed the client library to use the new ID Cache interface.
3812           Changes around the source tree.
3813
3814         * Added silc_hash_table_rehash_ext to rehash with specific
3815           hash function.  Affected file lib/silcutil/silchashtable.[ch].
3816
3817         * Added silc_hash_string_compare to compare two strings in the
3818           hash table.  Affected file lib/silcutil/silcutil.[ch].
3819
3820 Fri May 18 11:18:45 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3821
3822         * Added new function silc_idcache_del_by_context into the
3823           lib/silccore/idcache.[ch].
3824
3825         * Changed the server's ID list routines to use the new ID Cache
3826           interface.  Changes around the source tree.
3827
3828 Fri May 18 08:35:31 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3829
3830         * Added silc_hash_table_del[_by_context]_ext functions in to the
3831           lib/silcutil/silchashtable.[ch].
3832
3833           Removed silc_hash_table_find_all* routines and added new
3834           silc_hash_table_find_foreach to replace them.
3835
3836           Added silc_hash_table_replace_ext function as extended
3837           replacing function.  Separated the simple hash table interface
3838           from the extended hash table interface in the file
3839           lib/silcutil/silchashtable.h.
3840
3841         * Fixed minor bugs and changed it to use some of the new
3842           hash table functions in lib/silccore/idcache.c
3843
3844 Thu May 17 18:15:12 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3845
3846         * Added new function silc_hash_table_find_all to return all keys
3847           in the hash table by the specified key.  As the hash table is
3848           collision resistant it also makes it possible to have several
3849           duplicate keys in the hash table.  This function may be used to
3850           find all of the keys from the hash.
3851
3852           Added user_context arguments to the SilcHashFunction,
3853           SilcHashCompare and SilcHashDestructor to deliver user specified
3854           context.
3855
3856           Added new fuctions silc_hash_table_find[_all]_ext to do
3857           extended lookup with specified hash and compare functions and
3858           specified user contexts.
3859
3860           Added new function silc_hash_table_add_ext to add the key
3861           with specified hash function and user context.
3862
3863           Added new function silc_hash_table_foreach to traverse all
3864           entrys in the hash table.  Added SilcHashForeach callback
3865           function.
3866
3867           Added new function silc_hash_table_del_by_context to delete
3868           the entry only if the context associated with the key matches.
3869
3870           Affected files are lib/silcutil/silchashtable.[ch].
3871
3872         * Removed silc_hash_[server/client/channel]_id and added just
3873           silc_hash_id to the lib/silcutil/silcutil.[ch].  Added also
3874           silc_hash_id_compare to compare two ID's using as the hash table
3875           comparison function.  Added also silc_hash_data to hash
3876           binary data and silc_hash_data_compare to compare it.
3877
3878         * Removed silc_idlist_find_client_by_hash as it is not needed
3879           anymore.  Affected file silcd/idlist.[ch].
3880
3881         * Rewrote the entire ID Cache system (in lib/silccore/idcache.[ch])
3882           to use internally the SilcHashTable.  The new ID Cache is a lot
3883           faster than the old one.  Some of the ID Cache interface was also
3884           rewritten and obsolete and stupid functions were removed.
3885
3886 Wed May 16 23:03:30 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3887
3888         * Added entry_count field to the SilcHashTable to keep the number
3889           of the entries in the table.  Implemented the function
3890           silc_hash_table_rehash.  Added new function
3891           silc_hash_table_count.  Affected file lib/silcutil/silchashtable.c.
3892
3893           Fixed a minor bug in silc_hash_table_free.
3894
3895         * Added silc_hash_string, silc_hash_uint, silc_hash_ptr,
3896           silc_hash_client_id, silc_hash_server_id and silc_hash_channel_id
3897           into the lib/silcutil/silcutil.[ch].
3898
3899 Wed May 16 20:02:47 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3900
3901         * Implemented a collision resistant hash table into the
3902           lib/silcutil/silchashtable[ch].  See the header and the source
3903           for the SilcHashTable API.
3904
3905 Tue May 15 22:05:46 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3906
3907         * Merged dotconf version 1.0.2 into lib/dotconf.
3908
3909 Sun May 13 19:32:09 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3910
3911         * Do not compile anything in lib/silcsim/* if the SIM support
3912           is not enabled.  The tree should now compile without problems
3913           under cygwin.
3914
3915 Thu May 10 22:49:51 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3916
3917         * Compiled the SILC under cygwin.  Compiled and tested briefly
3918           without problems.  More tests needed.  The SIMs didn't compile
3919           though.
3920
3921         * Added various #ifdef HAVE_* stuff to lib/silccrypt/silrng.c.
3922
3923         * Fixed possible crash in silc_get_username in the
3924           lib/silcutil/silcutil.c.
3925
3926 Tue May  8 09:04:03 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3927
3928         * Fixed a va_arg in silc/client_ops.c.
3929
3930         * Oops, RC5 routines were named AES and caused some problems
3931           when not using SIM's.  Affected file lib/silccrypt/rc5.c.
3932
3933 Sun May  6 13:59:48 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3934
3935         * Added new SilcIDIP structure into the lib/silccore/id.h and
3936           replaced the old `ip' fields from all SILC ID's to that type.
3937           This is a step towards IPv6 support.
3938
3939           The silc_id_get_len takes now the ID as an extra argument.
3940           The silc_id_id2str, silc_id_str2id and silc_id_dup now supports
3941           both IPv4 and IPv6 based ID's.
3942
3943           The affected files are lib/silccore/id.[ch] and other files
3944           around the tree using these routines.
3945
3946         * Removed the ID length arguments in server from various 
3947           silc_server_send_notify_* routines -> they are not needed 
3948           anymore.
3949
3950 Sat May  5 13:56:33 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3951
3952         * Fixed memory leak in silc_encode_pem_file in the file
3953           lib/silcutil/silcutil.c.
3954
3955 Thu May  3 21:23:50 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3956
3957         * Check minor version as well in the SKE.  Affected files are
3958           silcd/protocol.c and lib/silcclient/protocol.c.
3959
3960         * Added --identifier option to the server so that an identifier
3961           can be when creating the public key for the server.  Affected
3962           file is silcd/silcd.c.
3963
3964         * Fixed minor decoding bug in silc_pkcs_decode_identifier in
3965           lib/silccrypt/silcpkcs.c.
3966
3967 Wed May  2 20:50:49 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3968
3969         * Register default ciphers and stuff when using -C option with
3970           the server.  Affected file sildc/silcd.c.
3971
3972         * Put back the servers public key filename format, it is better
3973           than the new one.  For now, the client keys are saved with the
3974           new filename format.  The affected file silc/client_ops.c.
3975
3976         * Implemented the Cipher API for the rest of the ciphers that
3977           did not implement it or implemented it the wrong way.
3978
3979 Wed May  2 13:31:26 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3980
3981         * Register default ciphers and stuff when using the -S option
3982           in the client.  Affected file silc/silc.c.  Same also when
3983           creating new key pair with -C option.
3984
3985 Tue May  1 14:18:13 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
3986
3987         * Fixed the silc_verify_public_key client operation function to
3988           save the public keys differently.  The fingerprint is now 
3989           used as filename and not the hostname.  This way also the
3990           client keys are saved uniquely and not with hostnames.  The
3991           affected file is silc/client_ops.c.
3992
3993         * Trimmed the silc_hash_fingerprint function to remove extra
3994           whitespaces from the end of the fingerprint.  The affected
3995           file is lib/silccrypt/silchash.c.
3996
3997         * Updated TODO.
3998
3999         * Added silc_cipher_register_default function to register all
4000           default ciphers.  It can be used when configuration files
4001           does not exist and the application does not want any specific
4002           ciphers in any specific order.
4003
4004           The SilcDList is now used as silc_cipher_list dynamically
4005           allocated cipher list.  Removed the static list all together
4006           and now all ciphers must be allocated to the dynamic list.
4007           The silc_cipher_alloc routine was changed to check only the
4008           dynamic list.
4009
4010           All silc_cipher_* routines that used to return int returns
4011           now bool.
4012
4013           The affected files lib/silccrypt/silccrypt.[ch].
4014
4015         * The same thing was done to silc_hash_* as for silc_cipher_*
4016           routines.  Affected files lib/silccrypt/silchash.[ch].
4017
4018         * The same thing was done to silc_pkcs_* as for silc_cipher_*
4019           routines.  Affected files lib/silccrypt/silcpkcs.[ch].
4020           Added also silc_pkcs_[un]register[_default] functions.
4021           Removed the data_context from the PKCS API.
4022
4023         * Added silc_hmac_register_default function to register default
4024           hmacs.  Affected files lib/silccrypt/silchmac.[ch].  Added also
4025           SILC_ALL_HMACS macro that can be used with silc_hmac_unregister
4026           to unregister all hmacs at once.
4027
4028         * Register the default ciphers, hash functions, PKCSs and HMACs
4029           if client's configuration file does not exist.  The affected
4030           file silc/silc.c.
4031
4032         * The client did not load the hash functions from the SIM
4033           modules at all.  Added support for this.  Affected file is
4034           silc/clientconfig.c.
4035
4036         * When decoding public key with silc_pkcs_public_key_decode, check
4037           the supported algorithm only if PKCS are registered.  Affected
4038           file lib/silccrypt/silcpkcs.c.  The same was done with the
4039           silc_pkcs_private_key_decode.
4040
4041         * Fixed the SILC List routines to keep the list always in order.
4042           It used to change the list's order when traversing the list but
4043           not it preserves the order.  Affected file lib/trq/silclist.h.
4044
4045 Mon Apr 30 17:29:03 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4046
4047         * Added the client library to use the SilcSocketConnection's
4048           reference counter (by silc_socket_dup) to prevent the bug that
4049           the socket object may be freed underneath async operation.
4050
4051         * The name resolv library checking fixes in the configure.in.pre.
4052           The patch by salo.
4053
4054         * Created new version of the protocol drafts for future
4055           development. The -03 drafts are the ones that will be changed
4056           in the trunk now and the -02 will remain as they are.
4057
4058         * Send list of CUMODE notifys to the router when announcing
4059           the channel users to the router.  Affected file silcd/server.c.
4060           If the router receiving channel founder CUMODE for a channel
4061           that already has channel founder it will send CUMODE notify
4062           to the sender to remove the channel founder rights from the
4063           announced client.  Affected file silcd/packet_receive.c.
4064
4065         * The CUMODE notify may now use Server ID as well as the entity
4066           who changes the mode.  Updated protocool specs.
4067
4068         * Updated INSTALL and README files.
4069
4070 Sun Apr 29 23:17:50 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4071
4072         * New web pages in the http://silc.pspt.fi.  The pages was
4073           designed by salo.
4074
4075         * Updated CREDITS.
4076
4077 Sun Apr 29 13:33:41 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4078
4079         * Implemented the [DenyConnectin] config section in the server.
4080           Added silc_server_config_denied_conn to check whether incoming
4081           connection is denied.  Affected file silcd/serverconfig.[ch].
4082
4083         * Do not check the ports when checking the incoming configuration
4084           data if the port is 0, meaning any.  Affected file is
4085           silcd/serverconfig.c.
4086
4087 Fri Apr 20 18:58:43 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4088
4089         * Fixed buffer overflow in silc_string_compare in the file
4090           lib/silcutil/silcutil.c.
4091
4092         * Fixed double free in silc_server_command_leave in the file
4093           silcd/command.c.
4094
4095 Fri Apr 20 14:00:11 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4096
4097         * Fixed the version checking in the server.  Affected file is
4098           silcd/protocol.c.
4099
4100 Thu Apr 19 19:52:46 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4101
4102         * Fixed the configuration data fetching when accepting new
4103           connections in the server.  Affected file silcd/server.c.
4104
4105 Thu Apr 19 11:40:20 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4106
4107         * Added `sender_entry' argument to the function
4108           silc_server_packet_relay_to_channel so that we can check
4109           whether some destination actually belongs to the same route
4110           the sender belongs (ie, we must not resend the packet to the
4111           sender).  Affected file silcd/packet_send.[ch].
4112
4113         * Added `servername' field to the SilcClientEntry in the server
4114           to hold the name of the server where client is from.  Affected
4115           file is silcd/idlist.h.
4116
4117 Wed Apr 18 22:19:03 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4118
4119         * Moved the channel message encrypting in the router betwen
4120           router connections from silc_server_channel_message to the
4121           silc_server_packet_relay_to_channel since we want to check
4122           whether we have anybody channel before encrypting anything.
4123           Affected files silcd/packet_[receive/send].c.
4124
4125 Tue Apr 17 21:18:19 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4126
4127         * Fixed the [AdminConnection] server config section to support
4128           multiple entries.  Affected file silcd/serverconfig.c.
4129
4130         * Added support into the server to check the validity of the
4131           incoming connection before executing any KE or authentication
4132           protocols.
4133
4134         * The connection configuration is now saved to the KE and 
4135           connection auth protocol contexts and not fetched anymore in 
4136           the protocol.  Affected files silcd/server.c, silcd/protocol.[ch].
4137
4138         * The local hosts listenning address and port is also resolved
4139           now when starting the server.  We want to have the socket object
4140           to include the real address and port for the listener.  Added
4141           new function silc_net_check_local_by_sock into the files
4142           lib/silcutil/silcnet.[ch].
4143
4144         * Fixed a broadcast bug in server -> do not broadcast if we
4145           are standalone.
4146
4147         * Fixed a routing bug.  Do not route broadcast packets ever.
4148           Broadcast packets must be processed always and not routed since
4149           they may be destined to some other host than yourself and thus
4150           would get routed without no good reason.  Affected file is
4151           silcd/server.c.
4152
4153         * Added function silc_server_config_is_primary_route to check
4154           whether primary router connection has been configured (a router
4155           configuration that we are initiating).  If there is not, we 
4156           will assume that there is only two routers in the SILC network
4157           and we will use the incoming router connection as our primary
4158           route.  Affected files silcd/serverconfig.[ch], silcd/server.c.
4159
4160         * Changed the order of the broadcasting.  Broadcast _after_ the
4161           packet has been processed not before.  Affected file is
4162           silcd/server.c.
4163
4164         * Fixed a [ClientConnection] parsing bug.  The port was never
4165           parsed correctly thus resulting to port 0.  Affected file
4166           silcd/serverconfig.c.
4167
4168         * Fixed silc_server_send_notify_args -> it ignored the `broadcast'
4169           argument and did not set the broadcast packet flag.  Affected
4170           file silcd/packet_send.c.  Fixed same bug in the function
4171           silc_server_send_notify as well.
4172
4173         * If we receive NEW_ID packet for our own ID in the server, ignore
4174           the packet.
4175
4176 Mon Apr 16 12:10:33 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4177
4178         * Updated TODO.
4179
4180         * Removed the nickname from the Private Message Payload.
4181           Updated the code and the protocol specs.
4182
4183         * Updated protocol specs for submitting to the IETF.
4184
4185         * Tweaked the Random Number Generator a bit.  Affected file
4186           lib/silccrypt/silcrng.c.  Exported a new function
4187           silc_rng_[global]_add_noise which can be used to add more
4188           noise to the RNG.
4189
4190 Sat Apr 14 16:21:32 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4191
4192         * Do not parse packets with different timeout when protocol
4193           is active -> may cause problem with rekey.  Affected file
4194           silcd/server.c.
4195
4196         * When server receives signoff notify it must not create
4197           new channel key if the client is on any channels since the
4198           sender of the signoff notify will create it.
4199
4200 Fri Apr 13 17:12:46 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4201
4202         * Added printing of error messages during SKE protocol from the
4203           failure packet sent by server during SKE.  Affected file
4204           silc/client_ops.c.
4205
4206         * Removed the client's failure_callback handling with timeout
4207           and handle it immediately when received.
4208
4209         * The SKE library returned wrong type in SUCCESS and FAILURE 
4210           packets.  They must be 32 bit MSB not 16 bit MSB.
4211
4212 Fri Apr 13 00:09:08 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4213
4214         * Ok, rewrote the logic of the re-key and now it seems to work.
4215           I tested it on high traffic with frequent re-keys without
4216           problems.  Added hmac_receive (and renamed hmac to hmac_send)
4217           in SilcClientConnection in lib/silcclient/client.h and
4218           in SilcIDListData in silcd/idlist.h.  Also, removed the
4219           SilcPacketParserContext's cipher and hmac fields as they are
4220           not needed anymore and actually caused some problems when
4221           the ciphers and hmac's changed underneath the packet parser.
4222
4223 Thu Apr 12 14:42:51 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4224
4225         * If re-key protocol is active then process the incoming packets
4226           synchronously since we must assure that icoming packets encrypted
4227           with the old key is processed before the new keys is set to
4228           use.  This is true other packets than for REKEY packets.
4229           Affected file silcd/server.c.  The same was done to client library
4230           as well, affected file lib/silcclient/client.c.
4231
4232 Thu Apr 12 12:01:52 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4233
4234         * Fixed bug in client and server to accept the force send if
4235           the packet is send from silc_[server/client]_packet_process
4236           function.  Otherwise the packets are never delivered, oops.
4237
4238 Wed Apr 11 22:10:15 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4239
4240         * Disable force sending of packets when REKEY protocol is active.
4241           We must assure that no packet is sent directly when rekey is
4242           performed.  All packets must be sent through packet queue.
4243           Added macro SILC_SERVER_IS_REKEY to silcd/server.h and
4244           SILC_CLIENT_IS_REKEY to lib/silcclient/client.h.  Affected
4245           function is silc_[server/client]_packet_send_real to check
4246           the situation.
4247
4248         * Replaced the SIM paths from example config files to 
4249           /usr/local/modules.  Also, make install creates now
4250           /usr/local/silc/logs directory to hold all the SILC server
4251           logs.
4252
4253 Wed Apr 11 16:59:59 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4254
4255         * Made the configure.in.pre work on Solaris.  Patch by salo.
4256
4257         * Made all ciphers compatible with non-x86 machines.  Defined
4258           CBC mode macros into lib/silccrypt/ciphers_def.h.
4259
4260 Tue Apr 10 20:32:44 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4261
4262         * Fixed the make install.
4263
4264 Tue Apr 10 16:20:34 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4265
4266         * When MAC computation fails the silc_packet_decrypt returned 0
4267           even though it was supposed to return -1.  Fixed this.  The
4268           affected file is lib/silccore/silcpacket.c.
4269
4270         * Do not replace the config files in /etc/silc (in make install)
4271           if they already exist.  Affected file ./Makefile.am.
4272
4273         * Do not send re-key packets immediately but through packet queue.
4274           Affected file silcd/protocol.c and lib/silcclient/protocol.c.
4275
4276         * Changed silc_net_check_host_by_sock to return FALSE if the
4277           IP/DNS could not be resolved.  Though, it returns the IP address
4278           now even if it could not resolve it (but returns also FALSE).
4279           Affected file lib/silcutil/silcnet.[ch].
4280
4281 Mon Apr  9 21:54:44 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4282
4283         * Added silc_pkcs_decode_identifier to decode the public key's
4284           identifier.  Affected file lib/silccrypt/silpkcs.[ch].
4285           Added also silc_pkcs_free_identifier.  Added also new context
4286           SilcPublicKeyIdentifier.
4287
4288         * Added -S option to the silc client.  It is used to dump the
4289           contents of the specified public key file.
4290
4291         * Changed the PKCS api to return the public key length when
4292           setting the public key.
4293
4294         * Fixed a fatal bug in the public and private key file loading.
4295           Affected file lib/silccrypt/silcpkcs.c.
4296
4297         * Execute the packet parsing for client with zero (0) timeout
4298           if the protocol is active.  Affected file silcd/server.c.
4299
4300 Sun Apr  8 19:30:56 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4301
4302         * Made the key generation options to the silcd program.  Added
4303           -C option, equivalent to client's option.
4304
4305         * Added new [ServerKeys] config section to the server.  It
4306           configures the server's public and private key.
4307
4308         * Defined generic Public Key Payload into the protocol
4309           specification to send specific type of public keys and
4310           certificates.
4311
4312         * Defined new command SILC_COMMAND_GETKEY to fetch a client's
4313           public key or certificate.
4314
4315         * Implemented the GETKEY command to the server and to the
4316           client library and on user interface.
4317
4318 Sun Apr  8 01:37:21 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4319
4320         * Made preliminary `make install' work.
4321
4322 Thu Apr  5 17:42:30 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4323
4324         * Added SilcServerRekey context into silcd/idlist.h.
4325
4326         * Added the PFS support as defined in the specification to the
4327           SKE protocol.  Affected files lib/silcske/*.c.
4328
4329         * Added `ske_group' field to the SilcServerRekey context to hold
4330           the number of the SKE group that is used with PFS in re-key.
4331           Affected file silcd/idlist.h.
4332
4333         * Added PFS re-key support to the server.  Affected file is
4334           silcd/protocol.c.
4335
4336         * Added silc_protocol_cancel to cancel execution of the next
4337           state of the protocol.  Affected file is
4338           lib/silccore/silcprotocol.[ch].
4339
4340         * Added the re-key support with and without PFS to the client
4341           library.  Re-key is performed once in an hour, by default.
4342
4343           Added new protocol type SILC_PROTOCOL_CLIENT_REKEY.
4344           Added silc_client_rekey_callback and silc_client_rekey_final.
4345           Affected files are lib/silcclient/protocol.[ch] and
4346           lib/silcclient/client.[ch].
4347
4348         * Removed the `hmac_key' and `hmac_key_len' fields from the
4349           SilcClientConnection structure; not needed.  Affected file is
4350           lib/silcclient/client.h.
4351
4352         * Updated TODO.
4353
4354 Wed Apr  4 16:32:31 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4355
4356         * Do not ask whether user wants to use the negotiated private key
4357           for private messages, just use it.  Affected file is 
4358           silc/local_command.c.
4359
4360         * Added `send_enc_key' and `enc_key_len' fields to the 
4361           SilcIDListData structure since they are needed in the re-key
4362           phase.  Affected file is silcd/idlist.[ch].
4363
4364         * Implemented the simple re-key protocol into the server.
4365           Affected files silcd/server.c and silcd/protocol.[ch].  The
4366           re-key will be performed once in an hour, by default.
4367
4368           Added new protocol type SILC_PROTOCOL_SERVER_REKEY.
4369           Added silc_server_rekey, silc_server_rekey_callback and
4370           silc_server_rekey_final.
4371
4372         * Removed Tunneled flag from the protocol.  Updated the code
4373           and the specifications.
4374
4375         * Adde `pfs' field to the SilcIDListData to indicate whether
4376           the PFS is to be performed in the re-key.  Affected file is
4377           silcd/idlist.h.
4378
4379 Tue Apr  3 21:52:42 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4380
4381         * Defined uint8, int8, uint16, int16, uint32, int32, uint64 and
4382           int64 of at least the xintXX size.  If void * is less that 4
4383           bytes uint32 * will be used.  Defined bool as boolean.
4384
4385         * Changed _ALL_ unsigned long and unsigned int to uint32, 
4386           unsgined short to uint16 in the source tree.
4387
4388         * Fixed a fatal bug in silc_server_remove_clients_by_server.  Do
4389           not handle clients that has entry->data.registered == FALSE.
4390           They are not in the network anymore.  Affected file is
4391           silcd/server.c.
4392
4393 Tue Apr  3 16:39:19 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4394
4395         * Implemented the sending of the SERVER_SIGNOFF notify in the
4396           server.  Affected file is silcd/server.c.
4397
4398         * Added silc_server_send_notify_args into silcd/packet_send.[ch].
4399           Added also silc_notify_payload_encode_args into the
4400           lib/silccore/silcnotify.[ch].
4401
4402         * Implemented ther SERVER_SIGNOFF notify handling in the server.
4403           Affected file silcd/packet_receive.c.
4404
4405         * Implemented the SERVER_SIGNOFF notify handling in the client
4406           library.  Affected file lib/silcclient/client_notify.c.  Also,
4407           implemnted the printing of the SERVER_SIGNOFF info to the
4408           application.  Affected file silc/client_ops.c.
4409
4410         * The silc_idlist_del_server now returns TRUE or FALSE to indicate
4411           if the deleting was successful.  Affected file silcd/idlist.[ch].
4412
4413         * Added support for public key authentication in the connection
4414           authentication protocol in the client library.  Affected file
4415           lib/silcclient/protocol.c.
4416
4417         * Changed the server's silc_idlist_get_clients_by_* interface
4418           to support already allocated array so that new entries may be
4419           added to pre-allocated array.  Affected file silcd/idlist.[ch].
4420           This fixes some bugs with WHOIS, WHOWAS and IDENTIFY commands
4421           and command replies.
4422
4423         * All command reply functions in the server now calls the 
4424           pending command callback even if error occured.  This way the
4425           error will be delivered to the client as well.  Affected files
4426           silcd/command.c and silcd/command_reply.c.
4427
4428         * Fixed INFO command to return local server's info if no server
4429           was provided.  Affected file lib/silcclient/command.c.
4430
4431         * Removed RESTART command for good.  Updated the code and the
4432           protocol specs.
4433
4434         * Rewrote parts of the task system.  It is a bit simpler now.
4435           Removed unsued task priorities. The affected files are
4436           lib/silcutil/silctask.[ch].
4437
4438 Mon Apr  2 20:02:33 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4439
4440         * Moved the USERS printing from the library to the application.
4441           Affected files lib/silcclient/command.c and silc/client_ops.c.
4442
4443 Mon Apr  2 13:13:23 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4444
4445         * Updated TODO.
4446
4447         * Added channel key re-key support.  The re-key is perfomed
4448           only by the router and is done once in an hour.  Added `rekey'
4449           field to the SilcChannelEntry in the server.  Affected files
4450           silcd/server.c and silcd/idlist.h.
4451
4452         * Added silc_task_unregister_by_context into the file
4453           lib/silcutil/silctask.[ch].
4454
4455 Sun Apr  1 19:49:34 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4456
4457         * Added SILC_UMODE_GONE mode to indicate when the client is not
4458           present in the SILC network.  Added also support to the local
4459           command AWAY that will set this mode.  Added support of showing
4460           "xxx is gone" in WHOIS command.  The USERS command shows the
4461           gone status as well.
4462
4463         * Fixed setting server and router operator privileges in the
4464           server's UMODE command.  Affected file silcd/command.c.
4465
4466         * Merged the SKE KE1 and KE2 payloads into one payload.  The
4467           new KE payload is equivalent to the old KE2 payload.
4468
4469           Cleaned up the SKE Start Payload parsing.  It now uses the
4470           simple buffer unformatting to do the parsing.  A lot faster
4471           now.
4472
4473           Added new Mutual Authentication flag (SILC_SKE_SP_FLAG_MUTUAL)
4474           to the SKE that is used to indicate whether both of the SKE
4475           parties should perform authentication.  By default only the
4476           responder performs authentication.  By setting this flag also
4477           the initiator must do authentication.  By default it is unset
4478           since in normal SKE case, client to server connection, only
4479           the responder should do authentication.  When doing SKE between
4480           two clients both should perform authentication.  Updated the
4481           code and the protocol specs.
4482
4483         * A little fix to IDENTIFY command in the server.  Search the
4484           client first by hash not nickname.  Affected file is 
4485           silcd/command.c.
4486
4487         * Fixed the silc_client_close_connection to support closing
4488           the client to client connections wihtout deleting too much
4489           data.  Affected file lib/silcclient/client.c.
4490
4491         * Fixed a fatal bug in server and client; if KE1 or KE2 packets
4492           are received if protocol used to be active but is not anymore
4493           the application would crash due to NULL pointer dereference.
4494           Affected files silcd/server.c and lib/silcclient/client.c.
4495
4496         * Added `hash' field to the SilcClientConnection to include
4497           the hash function negotiated in the SKE protocol.
4498
4499         * Added new channel mode SILC_CMODE_FOUNDER_AUTH that is used
4500           to set the channel founder authentication data.  A client can
4501           claim the founder rights later by providing the authentication
4502           data to the CUMODE command using SILC_CUMODE_FOUNDER mode.
4503           This way the channel founder can regain the channel founder
4504           privileges even it is left the channel.  This works only on
4505           local server and the client must be connected to the same
4506           server to be able to regain the founder rights.  Updated the
4507           protocol specs accordingly.
4508
4509           Added support to the CMODE command in the client to set the
4510           founder auth data.  Read the README to see how to set it.
4511
4512           Added support to the CUMODE command to claim the founder
4513           rights.  Read the README to see how to do it.
4514
4515           Added support for the founder authentication to the Channel
4516           Entry in the server.  Affected file silcd/idlist.h.
4517
4518           Added support for the SILC_CMODE_FOUNDER_AUTH mode in the
4519           server's CMODE command.  Affected file silcd/command.c.
4520
4521         * Added the following new functions into lib/silccore/silcauth.[ch]:
4522           silc_auth_get_method and silc_auth_get_data.    
4523
4524         * The server now saves the remote hosts public key to the
4525           SilcIDListData pointer.  Affected file silcd/protocol.c.
4526
4527         * The normal server now does not remove the channel entry from
4528           the cache if the founder authentication data is set.  It used
4529           to remove it if the founder was the last one on the channel on 
4530           the server and left the channel.  The auth data is saved and
4531           if the channel is re-joined later the old entry is used with
4532           the old auth data.  Affected files silcd/command_reply.c and
4533           silcd/server.c.
4534
4535         * Removed the `pkcs' field from the SilcIDListData structure
4536           in the server; it is not used.  Affected file silcd/idlist.h.
4537
4538 Sat Mar 31 15:38:36 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4539
4540         * Fixed packet processing on slow links.  Partial packets were
4541           never re-processed because the incoming data buffer was cleared
4542           by the application.  Application must not directly clear the
4543           sock->inbuf, the packet processing routines handle it.  Fixed
4544           this in client library and in server.
4545
4546 Fri Mar 30 16:35:27 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4547
4548         * Fixed the WHOIS and IDENTIFY send reply function to really
4549           check whether to send list or just one entry.  Affected file
4550           silcd/command.c.
4551
4552         * Cleaned up the LEAVE command's channel key distribution.  The
4553           affected file silcd/command.c.
4554
4555         * Changed CMODE_CHANGE's <Client ID> to <ID Payload> as server
4556           can enforce the channel mode as well.  In that case the ID
4557           includes the ID of the server.  The code now enforces the
4558           mode change if the router have different mode than the server.
4559
4560         * The notify client operation with CMODE_CHANGE notify can now
4561           return NULL client_entry pointer if the CMODE was not changed
4562           by client.  Application must check for this.
4563
4564         * Added <Server ID> argument to INFO command to support server
4565           info fetching by Server ID.
4566
4567         * Added silc_server_announce_get_channel_users to get assembled
4568           packets of channel users of the specified channel.  Affected
4569           file silcd/server.[ch].
4570
4571         * Fixed bug in CHANNEL_CHANGE notify in the server.  The new ID
4572           was freed underneath the ID Cache.
4573
4574         * Re-announce clients when the server received CHANNEL_CHANGE
4575           notify from the router.  Affected file silcd/packet_send.c.
4576
4577 Thu Mar 29 19:10:28 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4578
4579         * Fixed a fatal bug when client does /join 1 2 3 4 5 6 the server
4580           crashed since it did not handle the fact that there is no cipher
4581           called "3" and didn't check the error condition.  Now fixed.
4582
4583         * Added SILC_MESSAGE_FLAG_REQUEST message flag as generic request
4584           flag.  It can be used to send message requests.
4585
4586 Thu Mar 29 12:26:25 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4587
4588         * Implemented the RESTART command in the client.
4589
4590         * Added SILC_MESSAGE_FLAG_NOTICE message flag for informational
4591           notice type messages.  Added notice printing to the user
4592           interface.
4593
4594         * The channel keys are not re-generated if the channel's mode
4595           is PRIVKEY, ie private key on the channel exists.  Affected
4596           files silcd/server.c and silcd/command.c.
4597
4598         * Fixed a little bug in channel message delivery when channel
4599           private keys are set in the server.  Affected file is
4600           silcd/packet_send.c.
4601
4602         * Changed the setting on channel->on_channel = TRUE from the
4603           silc_client_save_channel_key to the JOIN command reply.  The
4604           key payload is not received if the private channel key is set.
4605           Affected file lib/silcclient/command_reply.c and the
4606           lib/silcclient/client_channel.c.
4607
4608         * When the CMODE_CHANGE notify is sent and the channel private
4609           key mode is removed the channel key must be re-generated in
4610           other cells as well.  Added this support for the router in the
4611           silcd/packet_receive.c.
4612
4613         * Added new local command NOTICE to send notice message on
4614           channel.  Affected file silc/local_command.[ch].
4615
4616 Wed Mar 28 23:55:54 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4617
4618         * Added new local command ME to the client.  It is used to send
4619           message to a channel with SILC_MESSAGE_FLAG_ACTION to indicate
4620           some action.  Affected file silc/local_command.[ch].
4621
4622         * Changed channel_message and private_message client operations 
4623           to deliver the message flags to the application.  Added also
4624           the `flags' arguments to the silc_client_send_channel_message
4625           and silc_client_send_private_message functions.  Affected file
4626           silcapi.h.
4627
4628 Wed Mar 28 20:50:47 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4629
4630         * Redefined the Private Message Payload to support private message
4631           keys and to support the new private message flags.  Updated
4632           the protocol specs.  Flags makes it possible to have for example
4633           CTCP style messages.
4634
4635         * Added new type SilcPrivateMessagePayload and defined an API
4636           for it in the lib/silcclient/silcprivate.[ch].
4637
4638         * Tested private message private keys successfully.  Tested the
4639           private message key set, unset and list commands with the new
4640           KEY command.
4641
4642         * Redefined the Channel Message Payload to include the channel
4643           message flags (equal with private message flags) to support
4644           for example CTCP style messages.
4645
4646         * Defined some of the message (for channel and private message)
4647           flags.  Updated the protocol specs and added the flags to the
4648           lib/silccore/silcchannel.h.  The type is SilcMessageFlags.
4649
4650 Wed Mar 28 15:52:36 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4651
4652         * Added SilcKeyAgreementStatus type to the key agreement routines
4653           to indicate the current status and error if one occured.
4654           The status types are defined in the lib/silcclient/silcapi.h.
4655
4656         * Added new local command KEY that is used to set and unset private
4657           keys for channels, set and unset private keys for private messages
4658           with remote clients and to send key agreement requests and
4659           negotiate the key agreement protocol with remote client.  The
4660           key agreement is supported only to negotiate private message keys,
4661           it currently cannot be used to negotiate private keys for channels,
4662           as it is not convenient for that purpose.
4663
4664         * Fixed a minor pending callback setting bug in the function
4665           silc_client_get_client_by_id_resolve, now the function works.
4666           Affected file lib/silcclient/idlist.c.
4667
4668         * Added function silc_net_get_local_port to get local bound
4669           port by socket.  Added to lib/silcutil/silcnet.[ch].
4670
4671         * Added `sockets' and `sockets_count' fields to the SilcClient
4672           object.  They hold the sockets of the listenning sockets in
4673           the client.  Listenning sockets may be for example the key 
4674           agreement server.  Affected file lib/silcclient/client.[ch].
4675           Added functions the silc_client_add_socket and the
4676           silc_client_del_socket.  They are exported to the application
4677           as well.
4678
4679         * Added ~./silc/clientkeys to support other client's public keys.
4680
4681         * Renamed verify_server_key client operation to verify_public_key
4682           and added one argument to indicate the type of the connection
4683           (server, client etc.).
4684
4685 Tue Mar 27 22:22:38 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4686
4687         * Added silc_server_connection_auth_request to handle the
4688           incoming CONNECTION_AUTH_REQUEST packet.  Affected file is
4689           silcd/packet_receive.[ch].
4690
4691         * Added silc_server_send_connection_auth_request into the
4692           silcd/packet_send.c to send the connection auth request packet.
4693
4694         * Cleaned up the silcd/protocol.c a bit and fixed some memory
4695           leaks.
4696
4697         * Fixed the public key authentication in responder side in the
4698           server.  The `auth_data' pointer includes the SilcPublicKey
4699           not the path to the public key.  Affected file silcd/protocol.c.
4700
4701         * Implemented the public key authentication in the initiator side
4702           in the server.  Affected file silcd/protocol.c.
4703
4704         * Removed the [RedirectClient] config section from the server
4705           configuration.  Is not needed and I don't want to implement it.
4706
4707 Tue Mar 27 12:49:56 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4708
4709         * Cleaned up the CMODE command in the server.  It now works
4710           correctly and supports all the modes defined in the protocol.
4711           Affected file is silcd/command.c.
4712
4713         * Added `hmac_name' field to the SilcChannelEntry in the server
4714           to hold the default HMAC of the channel.  It can be set when
4715           creating the channel (with JOIN command).  Affected files
4716           silcd/idlist.[ch].
4717
4718         * Added <cipher> and <hmac> argument to the CMODE_CHANGE notify
4719           type to indicate the change of the current cipher and hmac
4720           on the channel.  Client can safely ignore the <cipher> argument
4721           (if it chooses to do so) since the CHANNEL_KEY packet will 
4722           force the channel key change anyway.  The <hmac> argument is
4723           important since the client is responsible of setting the new
4724           HMAC and the hmac key into use.
4725
4726         * Fixed the CMODE command in the client library as well.
4727
4728         * Tested CMODE command in router environment successfully.
4729
4730 Mon Mar 26 14:39:48 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4731
4732         * Show the version of the remote client (or server) when connecting
4733           to the server.  It is logged to the log file.  Affected file
4734           is silcd/protocol.c.
4735
4736         * Fixed the KILLED notify handling in the client library.  The
4737           client must be removed from all channels when receiving the
4738           KILLED notify.
4739
4740           Also, do not remove the client entry when giving the KILL 
4741           command but when the KILLED notify is received.
4742
4743         * Removed silc_idlist_find_client_by_nickname from the server.
4744           Not needed anymore.  Affected files silcd/idlist.[ch].
4745
4746         * Implemented the CHANNEL_CHANGE notify type handling to the
4747           server.  Affected file silcd/server.c.
4748
4749         * Updated TODO.
4750
4751 Mon Mar 26 12:11:14 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4752
4753         * Added silc_server_send_notify_invite to send the INVITE
4754           notify between routers.
4755
4756         * Implemented the INVITE command correctly to the server.
4757
4758         * Implemented the INVITE notify type handling in the server.
4759
4760         * Implemented the INVITE command to the client library and on the
4761           user interface.
4762
4763 Sun Mar 25 20:27:09 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4764
4765         * Added function silc_server_get_client_resolve to find the
4766           client entry by ID from all ID lists and then resolve it
4767           (using WHOIS) if it cannot be found.  Affected file is
4768           silcd/server.[ch].
4769
4770 Sun Mar 25 13:52:51 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4771
4772         * Implemented the BAN command to the client library.
4773
4774         * The JOIN command in the server now checks the invite list
4775           and the ban list.
4776
4777         * Changed the silc_command_reply_payload_encode_va and the
4778           silc_command_payload_encode_va to support that if argument is
4779           NULL it ignores and checks the next argument.  Affected file
4780           lib/silccore/silccommand.c.
4781
4782         * Added silc_server_send_notify_ban to send the BAN notify
4783           type between routers.
4784
4785         * Chaned the silc_notify_payload_encode to support that if 
4786           argument is NULL it ignores and checks the next argument.
4787           Affected file lib/silccore/silcnotify.c.
4788
4789         * Tested ban lists in router environment successfully.
4790
4791 Sat Mar 24 14:47:25 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4792
4793         * Implemented BAN command to the server, in silcd/command.[ch].
4794
4795         * Removed the BAN and INVITE_LIST modes from the CMODE command
4796           in the server code.
4797
4798         * Added function silc_string_match to regex match two strings.
4799           Affected files lib/silcutil/silcutil.[ch].
4800
4801 Fri Mar 23 22:02:40 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4802
4803         * Redefined parts of the SilcChannelEntry in the server to support
4804           the new ban and invite lists.
4805
4806 Fri Mar 23 16:25:11 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4807
4808         * Redefined the INVITE command.  The same command can be used to
4809           invite individuals to the channel but also to manage the invite
4810           list of the channel (to add to and remove from the invite list).
4811           Updated the protocol specs.
4812
4813         * Added new command SILC_COMMAND_BAN that can be used to manage
4814           the ban list of the channel.  Updated the protocol specs.
4815
4816         * Removed the channel modes: the SILC_CMODE_BAN and the 
4817           SILC_CMODE_INVITE_LIST as they were a bit kludge to be included
4818           in the CMODE command.  The equivalent features are now available
4819           using INVITE and BAN commands.  Updated the protocol specs.
4820
4821         * Added new SILC_NOTIFY_TYPE_BAN notify type to notify routers
4822           in the network about change in the current ban list.  The notify
4823           type is not used by the client.
4824
4825         * Redefined parts of the SILC_NOTIFY_TYPE_INVITE command to 
4826           support the invite lists.
4827
4828 Thu Mar 22 22:52:23 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4829
4830         * Added new function silc_string_regexify that converts string
4831           including wildcard characters into regex string that can
4832           be used by the GNU regex library.  Added into the file
4833           lib/silcutil/silcutil.[ch].
4834
4835           Added silc_string_regex_combine to combine to regex strings
4836           into one so that they can be used as one regex string by
4837           the GNU regex library.  Added into the file
4838           lib/silcutil/silcutil.[ch].
4839
4840           Added silc_string_regex_match to match two strings.  It returns
4841           TRUE if the strings match.  Added into lib/silcutil/silcutil.[ch].
4842
4843 Thu Mar 22 15:29:42 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4844
4845         * Imported GNU regex to the soruce tree into lib/contrib.
4846           Fixed some compiler warning from the regex.c.
4847
4848 Wed Mar 21 15:27:58 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4849
4850         * Fixed MOTD command in the server to work in router environment.
4851
4852         * Fixed the MOTD command in the client library to support
4853           the server argument in the command.
4854
4855         * Added `nickname_len' argument to the silc_idlist_add_client
4856           in the server, as the `nickname' argument may be binary data
4857           (it may be hash).
4858
4859         * Added silc_idlist_get_channels to return all channels from
4860           the ID list.
4861
4862         * Implemented LIST command to the server.  Affected file is
4863           silcd/command.c.
4864
4865         * Implemented the LIST command to the client library and on the
4866           user interface.
4867
4868         * Added [<user count>] argument to the LIST command reply.
4869           With private channels the user count is not shown.
4870
4871         * Updated TODO and README.
4872
4873 Tue Mar 20 21:05:57 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4874
4875         * The client entry's data.registered must be TRUE even with
4876           global client entry on global client list.  The data.registered
4877           is used to check whether the client is anymore in the network,
4878           for example with WHOWAS command so it must be valid.
4879
4880         * Fixed the WHOWAS command in the server.  It now actually works
4881           in router environment.  Added function into silcd/command_reply.c
4882           silc_server_command_reply_whowas_save.
4883
4884         * Added silc_idlist_purge function to the silcd/idlist.c
4885           to periodically purge the ID Cache.
4886
4887         * Fixed INFO command in the server.  It works now in router
4888           environment.  Added <server name> argument to the INFO command
4889           reply.  Updated the protocol specs.
4890
4891         * Fixed minor bug in silc_idcache_purge to not purge if the
4892           expire value is zero.
4893
4894         * Fixed various bugs in WHOIS and IDENTIFY command handling as
4895           they were buggy because of the WHOWAS information.
4896
4897         * Fixed local command MSG to handle the async resolving of 
4898           the remote client properly.  It used to fail the first MSG.
4899           Affected file silc/local_command.c.
4900
4901         * Added `data_len' field to SilcIDCache context.
4902
4903 Tue Mar 20 16:29:00 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4904
4905         * Update TODO.  Todo in commands in the server.
4906
4907 Tue Mar 20 15:45:14 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4908
4909         * Added new notify type SILC_NOTIFY_TYPE_UMODE_CHANGE that is
4910           used by routers as broadcast packet to inform other routers
4911           about the changed user mode.
4912
4913           Implemented the notify handling in the server.  Affected file is
4914           silcd/packet_receive.c.  Added the function 
4915           silc_server_send_notify_umode to the silcd/packet_send.[ch].
4916
4917         * Added new generic Channel Payload and deprecated the New Channel
4918           Payload.  The New Channel Payload is now the generic Channel
4919           Payload.
4920
4921         * Added new argument `mode' to the silc_server_send_new_channel
4922           as it is required in the Channel Payload now.
4923
4924         * Renamed the SilcChannelPayload to SilcChannelMessagePayload
4925           and created a new and real SilChannelPayload to represent the
4926           new generic Channel Payload.  Implemented the encode/decode
4927           for Channel Payload.  Affected file lib/silccore/silcchannel.[ch].
4928
4929         * Added silc_server_get_client_channel_list to return the list
4930           of channels the client has joined for WHOIS command reply.
4931           Affected file silcd/server.[ch].
4932
4933         * Implemented the channel list sending in the WHOIS command reply
4934           in server and in the client.
4935
4936           Implemented the channel list displaying on the user interface
4937           as well.  Affected file silc/client_ops.c.
4938
4939         * Added silc_channel_payload_parse_list to parse list of Channel
4940           Payloads.  It returns SilcDList list of SilcChannelPayloads.
4941           Client for example can use this function to parse the list of
4942           channels it receives in the WHOIS command reply.  The caller
4943           must free the list by calling silc_channel_payload_list_free.
4944           Affected files lib/silccore/silcchannel.[ch].
4945
4946 Mon Mar 19 21:39:15 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4947
4948         * Added one new argument <user mode> to the WHOIS command reply
4949           to return the mode of the user in SILC.  Updated the protocol
4950           specs.
4951
4952           Implemented it to the server and client.
4953
4954 Mon Mar 19 18:43:06 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4955
4956         * Fixed the mode printing on the user interface on joining.
4957           Affected file silc/client_ops.c.
4958
4959         * Implemented the UMODE command and user modes in general to the
4960           client library and to the user interface.
4961
4962         * Implemented the UMODE command to the server.
4963
4964         * The server now sends UNKNOWN_COMMAND error status if client sends
4965           unknown command.  Affected file silcd/command.c.
4966
4967         * All server commands now handle the command identifier the right
4968           way when sending the command reply to the client.  The client can
4969           use to identify the command replies with the identifier.
4970
4971 Mon Mar 19 16:13:07 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
4972
4973         * Added silc_server_get_client_route to resolve the route to
4974           the client indicated by the client ID.  Affected file is
4975           silcd/server.[ch].
4976
4977         * Added silc_server_relay_packet as general function to relay
4978           packet to arbitrary destination.  This deprecates functions
4979           like _send_private_message_key, _relay_notify etc.  Affected
4980           file is silcd/packet_send.[ch].
4981
4982           Removed silc_server_send_key_agreement, 
4983           silc_server_send_private_message_key and
4984           silc_server_packet_relay_notify functions from the file
4985           silcd/packet_send.[ch].
4986
4987         * Updated TODO.
4988
4989         * Implemented the SILC_NOTIFY_TYPE_KILLED notify handling in the
4990           server.  Affected file silcd/packet_receive.[ch].
4991
4992         * Implemented the KILL command to the client.  Implemented the
4993           SILC_NOTIFY_TYPE_KILLED notify handling in the client library.
4994           Affected files lib/silcclient/command[_reply].c and
4995           lib/silcclient/client_notify.c.  Implemented the KILL notify
4996           printing in the user inteface.
4997
4998         * Fixed a lot silc_parse_nick memory leaks from the client
4999           library in the file lib/silcclient/command.c.
5000
5001         * Changed the silc_server_send_notify_on_channels's `sender'
5002           argument from SilcSocketConnection to SilcClientEntry to 
5003           check the sender as entry and not as connection object and not
5004           to send to the client provided as argument.  The affected file
5005           is silcd/packet_send.[ch].
5006
5007         * The notify packets that are destined directly to the client used
5008           to not to be processed by the server.  Now changed that and the
5009           server processes all notify packets.  After relaying the packet
5010           to the client the notify packet is processed in the server.
5011
5012         * The silc_server_free_client_data now checks whether there is
5013           pending outgoing traffic for the client and purges the data to
5014           the network before removing the client entry.
5015
5016 Sun Mar 18 21:02:47 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5017
5018         * Added SILC_NOTIFY_TYPE_KILLED notify type.  It is sent when
5019           an client is killed from the SILC Network.  Updated the protocol
5020           specs accordingly.
5021
5022           Added new function silc_server_send_notify_killed to the
5023           silcd/packet_send.[ch].
5024
5025         * Added function silc_server_packet_relay_notify to relay notify
5026           packets that are destined directly to a client.  In this case
5027           the server does not process the notify packets but merely relays
5028           it to the client.  Affected file silcd/packet_send.[ch].
5029
5030           Added also silc_server_packet_process_relay_notify to check
5031           whereto relay the notify.  Affected file is 
5032           silcd/packet_receive.[ch].
5033
5034         * Implemented the KILL command to the server.
5035
5036         * Updated TODO.
5037
5038         * Added the backup schema desgined last fall to the protocol
5039           specs for everyone to see.  The specification is in the
5040           *-spec-xx.txt draft and the packet type definitions for the
5041           backup routers is in *-pp-xx.txt draft.  Thusly, added also
5042           new packet type SILC_PACKET_CELL_ROUTERS.
5043
5044         * A big security problem in the implementation discovered.  The
5045           signoff of an client did not cause new channel key generation
5046           which it of course should've done.  The channel keys must be
5047           always re-generated when client leaves (or signoffs) the channel.
5048           The silc_server_remove_from_channels funtion now handles
5049           the channel key re-generation.
5050
5051         * Added `sender' argument to the silc_server_send_notify_on_channels
5052           to not to send the client provided as argument.  Affected file
5053           silcd/packet_send.[ch].
5054
5055 Fri Mar 16 15:52:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5056
5057         * Implemented OPER and SILCOPER commands into the server and
5058           the client library.
5059
5060         * Added silc_auth_verify and silc_auth_verify_data to verify
5061           the authentication directly from the authentication payload.
5062           It supports verifying both passphrase and public key based
5063           authentication.  Affected file lib/silccore/silcauth.[ch].
5064
5065         * Added `hash' field to the SilcIDListData structure.  It is the
5066           hash negotiated in the SKE protocol.  Affected file is
5067           silcd/idlist.[ch].
5068
5069         * Slight redesigning of the SilcAuthPayload handling routines.
5070           Do not send SilcPKCS but SilcPublicKey as argument.
5071
5072         * Implemented the public key authentication support to the
5073           serverconfig.  The public key is loaded from the provided path
5074           and saved as authentication data to void * pointer.  Thus,
5075           changed the unsigned char *auth_data to void *auth_data;
5076
5077         * Fixed SHUTDOWN command to send the reply before the server
5078           is shutdown. :)  Affected file silcd/command.c.
5079
5080         * Fixed fatal bug in CONNECT command.  The hostname was invalid
5081           memory and server crashed.  Affected file silcd/command.c.
5082
5083         * Fixed fatal bug in CLOSE command.  The server_entry became
5084           invalid but was referenced later in the command.  Affected file
5085           silcd/command.c.
5086
5087 Thu Mar 15 12:46:58 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5088
5089         * Fixed fatal bug in failure packet handling.  Server ignored
5090           the failure and thus crashed when it came.
5091
5092         * Updated TODO.
5093
5094 Wed Mar 14 20:37:35 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5095
5096         * Added new SILC_CF_LAG_STRICT command flag that strictly forces
5097           that the command may be executed only once in (about) 2 seconds.
5098           The old SILC_CF_LAG flag is same but allows command bursts up
5099           to five before limiting.
5100
5101           Added the support for CF_LAG and CF_LAG_STRICT flags to the
5102           server code.  Various commands now includes the CF_LAG_STRICT
5103           flag to disallow any kind of miss-use of the command.
5104
5105         * Fixed the silc_buffer_unformat to not to allocate any data
5106           if the length of the data is zero.  It used to allocate the
5107           length + 1.  Affected file lib/silcutil/silcbuffmt.c.
5108
5109 Wed Mar 14 16:10:30 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5110
5111         * Changed the format of AdminConnection configuration section
5112           in the server.  Added username of the admin to the format.
5113           Affected files silcd/serverconfig.[ch].
5114
5115           Added silc_server_config_find_admin into silcd/serverconfig.[ch]
5116           to return admin configuration data by host, username and/or
5117           nickname.
5118
5119 Wed Mar 14 13:18:16 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5120
5121         * Implemented WHOWAS command to the server.  Added the functions:
5122
5123           silc_server_command_whowas_parse,
5124           silc_server_command_whowas_send_reply,
5125           silc_server_command_whowas_from_client and
5126           silc_server_command_whowas_from_server
5127
5128         * Added <Client ID> argument to the WHOWAS command reply.  Updated
5129           the protocol specs accordingly.
5130
5131         * Implemented WHOWAS command and command_reply to the client
5132           library.
5133
5134           Implemented the WHOWAS printing on the user interface.
5135
5136 Tue Mar 13 22:17:34 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5137
5138         * Added new argument to the WHOWAS command reply, the real name.
5139           It is an optional argument.  Updated the protocol specs.
5140
5141         * Added SilcIDCacheDestructor callback that is registered when
5142           the SilcIDCache is allocated.  The callback is called when
5143           an cache entry in the ID Cache expires, or is purged from the
5144           cache.  Added into lib/silccore/idcache.[ch].
5145
5146           Added silc_idlist_client_destructor to the silcd/idlist.[ch]
5147           to destruct the client entries when the cache entry expires.
5148           Other ID Cache's in server and in the client library ignores
5149           the destructor.
5150
5151         * If the ID Cache entry's `expire' field is zero then the entry
5152           never expires.  Added boolean `expire' argument to the
5153           silc_idcache_add function in the lib/silccore/idcache.[ch].
5154           If it is TRUE the default expiry value is used.
5155
5156         * Added silc_server_free_client_data_timeout that is registered
5157           when client disconnects.  By default for 5 minutes we preserve
5158           the client entry for history - for WHOWAS command.
5159
5160 Tue Mar 13 13:26:18 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5161
5162         * Added support to the server to enforce that commands are not
5163           executed more than once in 2 seconds.  If server receives 
5164           commands from client more frequently, timeout is registered
5165           to process the commands.  Affected file silcd/command.c.
5166           Added new function silc_server_command_process_timeout.
5167
5168         * Changed NICK_NOTIFY handling in client library to check that
5169           if the client's nickname was changed, so there is no need to
5170           resolve anything from the server.
5171
5172         * Removed error printing from the WHOIS and IDENTIFY commands.
5173           If error occurs then it is ignored silently in the client library.
5174           The application, however, may map the received error to 
5175           human readable error string.  The application currently maps
5176           the NO_SUCH_NICKNAME error to string.
5177
5178         * Made the command status message public to the application.  Moved
5179           them from lib/silcclient/command_reply.c to 
5180           lib/silcclient/command_reply.h.  The application can map the
5181           received command status to the string with the
5182           silc_client_command_status_message function.
5183
5184         * Added check to the server to check that client's ID is same
5185           as the Source ID in the packet the client sent.  They must
5186           match.
5187
5188 Tue Mar 13 12:49:21 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5189
5190         * Added dist-bzip hook to the Makefile.am to make bzip2
5191           compressed distributions.
5192
5193 Mon Mar 12 18:43:38 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5194
5195         * Server now enforces the maximum length for the nickname and
5196           the channel as protocol specification dictates.  128 bytes for
5197           nickname and 256 bytes for channel name.
5198
5199         * Moved the WHOIS printing to the application.  The client libary
5200           does not print out the WHOIS information anymore, the application
5201           must do it.  Renamed silc_client_command_reply_whois_print to
5202           the silc_client_command_reply_whois_save.
5203
5204           The client's idle time is also sent to the application now, and
5205           the idle is shown on screen.
5206
5207         * Added silc_client_command_reply_identify_save to save the
5208           received IDENTIFY entries.
5209
5210         * Do not check for channel private keys in message sending and
5211           reception if the channel does not have the PRIVKEY mode set.
5212           Affected file lib/silclient/client_channel.c.
5213
5214 Sun Mar 11 20:25:06 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5215
5216         * Fixed a minor bug if WHOIS and IDENTIFY command parsing that
5217           just surfaced after chaning the JOIN procedure.
5218
5219 Sun Mar 11 14:59:05 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5220
5221         * Added silc_client_get_clients_by_list to get client entries
5222           from Client ID list, that is returned for example by JOIN
5223           and USERS command replies.  The application should use this
5224           function for example when JOIN command reply is received to
5225           resolve the clients already on the channel (library does not
5226           do that anymore as USERS command reply is not used in the JOIN
5227           procedure anymore).  Affected files lib/silcclient/silcapi.h and
5228           lib/silcclient/idlist.c.
5229
5230         * JOIN command reply and USERS command reply returns now SilcBuffer
5231           pointers instead of unsigned char pointers when returning
5232           the client list and mode list.
5233
5234         * Added <Client ID> argument to the JOIN command reply, mainly
5235           for the server to identify for which client the command was
5236           originally sent.  Updated protocol specs accordingly.
5237
5238         * Added SilcDlist private_key pointer to the SilcChannelEntry
5239           in the client to support the channel private keys.  Affected
5240           file is lib/silcclient/idlist.h.
5241
5242         * Added SilcChannelPrivateKey argument to the function
5243           silc_client_send_channel_message so that application can choose
5244           to use specific private ke if it wants to.  If it is not provided,
5245           the normal channel key is used, unless private keys are set. 
5246           In this case the first (key that was added first) is used 
5247           as the encryption key.
5248
5249         * Implemented the support for channel private key handling.
5250           Implemented the following functions:
5251
5252           silc_client_add_channel_private_key,
5253           silc_client_del_channel_private_keys,
5254           silc_client_del_channel_private_key,
5255           silc_client_list_channel_private_keys and
5256           silc_client_free_channel_private_keys
5257
5258           Affected file lib/silcclient/client_channel.c.
5259
5260         * Added the support for the private keys in the channel message
5261           sending and encryption and in the message reception and
5262           decryption.  Affected funtions are
5263           silc_client_send_channel_message and silc_client_channel_message.
5264
5265 Sat Mar 10 21:36:22 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5266
5267         * Added SKE's key verify callback to the client library's
5268           KE protocol context. Affected files lib/silcclient/protocol.[ch].
5269
5270         * Removed the statement that server (or router) must send USERS
5271           command reply when joining to the channel so that the client
5272           knows who are on the channel.  Instead, the client list and 
5273           client's mode list is now sent in the JOIN command reply to the
5274           client who joined channel.  This is better solution.
5275
5276         * Added function silc_server_get_users_on_channel and function
5277           silc_server_save_users_on_channel to the silcd/server.[ch].
5278
5279         * Removed function silc_server_command_send_users from the
5280           silcd/command.c.
5281
5282         * Do not show topic on the client library anymore.  The topic is
5283           sent in the command reply notify to the application and the
5284           application must show the topic now.
5285
5286 Sat Mar 10 00:07:37 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5287
5288         * Added client searching by nickname hash into the IDENTIFY and
5289           WHOIS commands in the server as they were clearly missing from
5290           them.  Affected file is silcd/command.c.
5291
5292         * Fixed a bug in private message receiving in the client library.
5293           The remote ID was freed and it wasn't supposed, now it is
5294           duplicated.
5295
5296 Fri Mar  9 12:40:42 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5297
5298         * Minor fix to the channel payload; allocate the data area, as it
5299           needs to be of specific length.
5300
5301         * If the key agreement port is zero then the operating
5302           system will define the bound port.  Affected files are
5303           lib/silcclient/silcapi.h and lib/silcclient/client_keyagr.c.
5304
5305         * Added new function silc_channel_payload_decrypt into the file
5306           lib/silccore/silcchannel.[ch].
5307
5308         * Moved the channel message etc, check from silc_packet_decrypt
5309           to applications.  The library calls now a generic 
5310           SilcPacketCheckDecrypt callback which is to return TRUE or FALSE
5311           when the packet is either normal or special.  This was done to
5312           allow more wide range of checking that was not allowed when
5313           the code was in library.  Now applications can do virtually any
5314           checks to the packet and return to the library the decision how
5315           the packet should be processed.  Affected files are
5316           lib/silccore/silcpacket.[ch].
5317
5318           Added silc_server_packet_decrypt_check to the server and
5319           silc_client_packet_decrypt_check to the client library.
5320
5321         * Added silc_server_packet_send_srcdest into silcd/packet_send.[ch]
5322           to send with specified source and destination information.
5323
5324         * Channel message delivery between routers was broken after the
5325           channel key distribution was fixed earlier.  The channel key
5326           was used be to distributed to other routers as well which is not
5327           allowed by the protocol.  Now this is fixed and channel keys
5328           really are cell specific and the channel message delivery between
5329           routers comply with the protocol specification.
5330
5331         * Fixed various commands in server to check also the global list
5332           for the channel entry and not just the local list.  The affected
5333           file silcd/command.c.
5334
5335 Thu Mar  8 21:39:03 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5336
5337         * Added assert()s to buffer formatting and unformatting routines
5338           to assert (if --enable-debug) when error occurs.  Affected
5339           file: lib/silcutil/silcbuffmt.c.
5340
5341         * Changed to auto-reconnect to check whether the remote host is
5342           router and register the re-connect timeout if it is.  It used 
5343           to check that whether we are normal server, but router must do
5344           auto-reconnect with another router as well.  Affected file
5345           silcd/server.c.
5346
5347         * Removed the [<key len>] option from CMODE command as the cipher
5348           name decides the key length, nowadays.  See the defined ciphers
5349           from the protocol specification.
5350
5351         * Added [<hmac>] option to the CMODE command to define the HMAC
5352           for the channel.  Added SILC_CMODE_HMAC channel mode.
5353
5354         * Added [<hmac>] option for the JOIN command so that user can
5355           select which HMAC is used to compute the MACs of the channel
5356           messages.
5357
5358         * Added Hmac field to the Channel Message Payload.  The integrity
5359           of plaintext channel messages are now protected by computing
5360           MAC of the message and attaching the MAC to the payload.  The
5361           MAC is encrypted.  Now, it is clear that this causes some
5362           overhead to the size of the packet but rationale for this is that
5363           now the receiver can verify whether the channel message decrypted
5364           correctly and also when private keys are set for the channel the
5365           receiver can decrypt the packet with several keys and check from
5366           the MAC which key decrypted the message correctly.
5367
5368         * Added silc_cipher_encrypt and silc_cipher_decrypt into the
5369           lib/silccrypt/silccipher.[ch].
5370
5371         * Added silc_hash_len to return the digest length into the
5372           lib/silcrypt/silchash.[ch].
5373
5374         * Rewrote parts of Silc Channel Payload interface in the
5375           lib/silccore/silcchannel.[ch].  The encode function now also
5376           encrypts the packet and parse function decrypts it.
5377
5378 Wed Mar  7 20:58:50 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5379
5380         * Fixed a minor formatting bug in the SKE's key material processing.
5381           It actually might have processed the keys wrong way resulting
5382           into wrong keys.
5383
5384         * Redefined the mandatory HMAC algorithms and added new algorithms.
5385           Added hmac-sha1-96 and hmac-md5-96 which are normal hmac-sha1
5386           and hmac-md5 truncated to 96 bits.  The mandatory is now 
5387           hmac-sha1-96.  Rest are optional (including the one that used
5388           to be mandatory).  Rationale for this is that the truncated HMAC
5389           length is sufficient from security point of view and can actually
5390           make the attack against the HMAC harder.  Also, the truncated
5391           HMAC causes less overhead to the packets.  See the RFC2104 for
5392           more information.
5393
5394         * Added new [hmac] configuration section.  The SKE used to use
5395           the hash names (md5 and sha1) in the SKE proposal as HMCAS which
5396           is of course wrong.  The official names that must be proposed in
5397           the SKE are the ones defined in the protocol specification
5398           (hmac-sha1-96 for example).  The user can configure any hmac
5399           using any hash function configured in the [hash] section.  At
5400           least, the mandatory must be configured.
5401
5402           Rewrote the HMAC interface in lib/silccrypt/silchmac.[ch].
5403
5404         * Added HMAC list to the SKE proposal list.  It has now both
5405           hash algorithm list and HMAC list.  This makes the protocol
5406           incompatible with previous versions.  The SKE now seems to work
5407           the way it is supposed to work, for the first time actually.
5408
5409         * Defined plain Hash algorithms to the protocol specification.
5410           Added sha1 and md5.
5411
5412 Tue Mar  6 15:36:11 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5413
5414         * Implemented support for key agreement packets into the server.
5415           Added functions silc_server_key_agreement and
5416           silc_server_send_key_agreement.  Other than these functions,
5417           server has nothing to do with this packet.
5418
5419         * Added support for private message key packets into the server.
5420           Added functions silc_server_private_message_key and
5421           silc_server_send_private_message_key.
5422
5423         * Updated TODO.
5424
5425         * Changed the silc_[client|server]_protocol_ke_set_keys to be
5426           called in the protocol's final callback instead in the END
5427           protocol state.  This makes a little more sense and in the same
5428           time in client we can use the same protocol routines for normal
5429           key exchange and to key agreement packet handling as well.
5430
5431         * Added to both client's and server's KE protocol context the
5432           SilcSKEKeyMaterial pointer to save the key material.  We will
5433           bring the key material to the protocol's final callback by doing
5434           this.  The final callback must free the key material.
5435
5436         * Added SKE's packet_send callback into client's KE protocol
5437           context so that the caller can choose what packet sending function
5438           is used.  This way we can use different packet sending when
5439           doing normal SKE when doing key agreement packet handling (in
5440           the key agreement packet handling we do not want to encrypt
5441           the packets).
5442
5443         * Implemented the responder side of the key agreement routines
5444           in the client.  The client can now bind to specified port and
5445           accept incoming key negotiation.  The key material is passed
5446           to the application after the protocol is over.
5447
5448         * Implemented the processing of incoming Key Agreement packet
5449           in the client.  Added function silc_client_key_agreement to
5450           process the packet.
5451
5452         * Implemented the intiator side of the key agreement routines
5453           in the client.  The client can now initiate key agreement with
5454           another remote client.  The key material is passed to the
5455           application after the protocol is over.
5456
5457         * Created client_keyagr.c to include all the key agreement 
5458           routines.
5459
5460         * Added macro SILC_TASK_CALLBACK_GLOBAL which is equal to the
5461           SILC_TASK_CALLBACK except that it is not static.
5462
5463         * Created client_notify.c and moved the Notify packet handling
5464           from the client.[ch] into that file.
5465
5466         * Created client_prvmsg.c and moved all private message and
5467           private message key routines from the client.[ch] into that file.
5468
5469         * Create client_channel.c and moved all channel message and
5470           channel private key routines from the client.[ch] into that file.
5471
5472         * Changed silc_client_get_client_by_id_resolve to resolve with
5473           WHOIS command instead of IDENTIFY command, in the file
5474           lib/silclient/idlist.c.
5475
5476 Mon Mar  5 18:39:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5477
5478         * Implemented the SKE's responder side to the Client library.
5479
5480         * When FAILURE is received to the protocol do not trust it
5481           blindly.  Register a timeout to wait whether the remote closes
5482           the connection as it should do it, only after that process the
5483           actual failure.  This was changed to both client and server.
5484
5485         * Added client_internal.h to include some of the structures
5486           there instead of client.h in lib/silcclient/.
5487
5488         * Added function silc_task_unregister_by_callback to unregister
5489           timeouts by the callback function.
5490
5491 Sat Mar  3 19:15:43 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5492
5493         * Some "Incomplete WHOIS info" errors has been appearing on the
5494           log files.  Took away the entry->userinfo check from WHOIS
5495           reply sending.  The entry->userinfo is now " " if client did not
5496           provide one.  I thought this was fixed earlier but something
5497           is wrong still.  Let's see if the error still appears.
5498
5499 Wed Feb 28 20:56:29 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5500
5501         * Fixed a minor bug in the login when the channel key is
5502           re-generated in the server.  It used to generate the key in
5503           wrong order and thus caused problems in the channel traffic.
5504
5505         * Fixed a minor bug in channel key distsribution after
5506           KICK command.  The key was not sent to the router even though
5507           it should've been.
5508
5509 Tue Feb 27 20:24:25 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5510
5511         * Added silc_ske_process_key_material_data as generic routine
5512           to process any key material as the SILC protocol dictates.  The
5513           function is used by the actual SKE library but can be used by
5514           applications as well.  This relates to the private message keys
5515           and the channel private keys since they must be processed the
5516           same way the normal SILC session keys.  The protocol dictates
5517           this.  Affected files: lib/silcske/silcske.[ch].
5518
5519           Added also silc_ske_free_key_material to free the
5520           SilcSKEKeyMaterial structure.
5521
5522         * Defined silc_cipher_set_key function to set the key for
5523           cipher without using the object's method function.  The affected
5524           files: lib/silccrypt/silccipher.[ch].
5525
5526         * Implemented silc silc_client_add_private_message_key,
5527           silc_client_add_private_message_key_ske, 
5528           silc_client_del_private_message_key,
5529           silc_client_list_private_message_keys and
5530           silc_client_free_private_message_keys functions in the
5531           client library.
5532
5533           Added functions silc_client_send_private_message_key to send
5534           the Private Message Key payload and silc_client_private_message_key
5535           to handle incoming Private Message Key payload.
5536
5537         * Added Cipher field to the Private Message Key payload to set
5538           the cipher to be used.  If ignored, the default cipher defined
5539           in the SILC protocol (aes-256-cbc) is used.
5540
5541 Tue Feb 27 13:30:52 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5542
5543         * Removed lib/silcclient/ops.h file.
5544
5545           Redefined parts of the SILC Client Library API. Created new
5546           file silcapi.h that deprecates the ops.h file and defines the
5547           published Client Library API.  Defined also private message key
5548           API and channel private key API into the file.
5549
5550           This is the file that the application must include from the
5551           SILC Client Library.  Other files need not be included by
5552           the application anymore.
5553
5554         * Added new key_agreement client operation callback and also
5555           defined the Key Agreement library API for the application.
5556
5557 Tue Feb 27 11:28:31 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5558
5559         * Added new packet type: SILC_PACKET_KEY_AGREEMENT.  This packet
5560           is used by clients to request key negotiation  between another
5561           client in the SILC network.  If the negotiation is started it
5562           is performed using the SKE protocol.  The result of the
5563           negotiation, the secret key material, can be used for example
5564           as private message key.
5565
5566           Implemented the Key Agreement payload into the files
5567           lib/silccore/silauth.[ch].
5568
5569 Mon Feb 26 12:13:58 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5570
5571         * Redefined ciphers for the SILC protocol.  Added some new ciphers
5572           and defined the key lengths for the algorithms.  Changed the
5573           code accordingly.  The default key length is now 256 bits.
5574
5575         * Fixed SKE key distribution function silc_ske_process_key_material
5576           when the key length is more than 128 bits.  The default key 
5577           length in SILC is now 256 bits.
5578
5579         * Added new command status type: SILC_STATUS_ERR_UNKOWN_ALGORITHM
5580           to indicate unsupported algorithm.
5581
5582         * Renamed rijndael.c to aes.c and all functions as well.
5583
5584         * Fixed a long standing channel key setting bug in client library.
5585           Weird that it has never surfaced before.
5586
5587         * Fixed bug in channel deletion.  If the entire channel is removed
5588           then it must also delete the references of the channel entry
5589           from the client's channel list as the client's channel entry and
5590           the channel's client entry share same memory.
5591
5592 Sun Feb 25 20:47:29 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5593
5594         * Implemented CONNECT and SHUTDOWN commands in the client.
5595
5596         * Implemented CLOSE command to the client.
5597
5598         * Added the function silc_idlist_find_server_by_name into the
5599           files silcd/idlist.[ch].
5600
5601           Added the function silc_idlist_find_server_by_conn into the
5602           files silcd/idlist.[ch].
5603
5604 Sat Feb 24 23:45:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5605
5606         * DIE command was renamed to SHUTDOWN.  Updated the both code
5607           and protocol specs.
5608
5609         * Defined SILC_UMODE_NONE, SILC_UMODE_SERVER_OPERATOR and
5610           SILC_UMODE_ROUTER_OPERATOR modes into lib/silccore/silcmode.h.
5611
5612         * Implemented CONNECT, CLOSE and SHUTDOWN commands to the server
5613           side.
5614
5615         * Added function silc_server_create_connection function to create
5616           connection to remote router.  My server implementation actually
5617           does not allow router to connect to normal server (it expects
5618           that normal server always initiates the connection to the router)
5619           so the CONNECT command is only good for connecting to another
5620           router.
5621
5622 Sat Feb 24 16:03:45 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5623
5624         * Added SILC_NOTIFY_TYPE_KICKED to indicate that the client
5625           or some other client was kicked from the channel.
5626
5627           Implemented the handling of the notify type to both client
5628           and server.
5629
5630           Implemented silc_server_send_notify_kicked to send the KICKED
5631           notify.  It is used to send it to the server's primary router.
5632
5633         * Implemented the KICK command into server and client.
5634
5635         * Added `query' argument to the silc_idlist_get_client function
5636           to indicate whether to query the client from server or not if
5637           it was not found.
5638
5639         * Added new command status type SILC_STATUS_ERR_NO_CHANNEL_FOPRIV
5640           to indicate that the client is not channel founder.
5641
5642         * Updated TODO.
5643
5644 Sat Feb 24 00:00:55 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5645
5646         * Removed the rng context from SilcPacketContext structure and
5647           changed that the packet routine uses the Global RNG API.
5648
5649 Fri Feb 23 11:22:57 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5650
5651         * Added support for quit message that client can "leave" on the
5652           channel when it quits the SILC.  It is ditributed inside the
5653           SILC_NOTIFY_TYPE_SIGNOFF notify type.
5654
5655           Added silc_server_free_client_data that will take the
5656           signoff message as argument.
5657
5658         * Changed SKE routines to use the silc_pkcs_sign/verify routines.
5659
5660 Thu Feb 22 23:05:36 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5661
5662         * Updated parts of the protocol specification to keep it up
5663           to date.
5664
5665 Thu Feb 22 15:08:20 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5666
5667         * Added List flag (SILC_PACKET_FLAG_LIST) to indicate list of
5668           payloads in one packet.
5669
5670         * Deprecated following packet types: NEW_ID_LIST, NEW_CHANNEL_LIST,
5671           NEW_CHANNEL_USER_LIST, SET_MODE and SET_MODE_LIST.  List packets
5672           use now the new List flag.
5673
5674         * Also deprecated the following packet types: REPLACE_ID,
5675           NEW_CHANNEL_USER and REMOVE_CHANNEL_USER packet types.
5676          
5677         * Added list support for Notify packet in server.
5678
5679         * Added silc_server_send_notify_channel_change to send the
5680           CHANNEL_CHANGE notify type to replace channel ID's.  Deprecates
5681           the silc_server_send_replace_id.
5682
5683         * Added silc_server_send_notify_nick_change to send the
5684           NICK_CHANGE notify type.  Deprecates the function
5685           silc_server_send_replace_id.
5686
5687         * Added silc_server_send_notify_join to send the JOIN notify type.
5688           Deprecates the function silc_server_send_new_channel_user.
5689
5690         * Added silc_server_send_notify_leave to send LEAVE notify type.
5691           Deprecates the function silc_server_send_remove_channel_user.
5692
5693         * Added silc_server_send_notify_cmode and 
5694           silc_server_send_notify_cumode to send CMODE and CUMODE notify
5695           types.  Deprecates the silc_server_send_set_mode function.
5696
5697         * Added SERVER_SIGNOFF notify type to indicate that server has
5698           quit.  This means that all clients on the channel from that 
5699           server will drop.  This can be also used when netsplit happens.
5700
5701           Deprecated REMOVE_ID packet type since it is not needed anymore
5702           even from server.
5703
5704           Added silc_server_send_notify_server_signoff to send the
5705           SERVER_SIGNOFF notify type.  Deprecates the function
5706           silc_server_send_remove_id.
5707
5708           Added also silc_server_send_notify_signoff to send the
5709           SIGNOFF notify type.
5710
5711         * Employed the PKCS #1. It is the mandatory way to do RSA in the
5712           SILC protocol from this day on.  Changed the protocol 
5713           specification as well.
5714
5715         * Added silc_server_send_notify_topic_set to send TOPIC_SET
5716           notify type.  It is used between routers to notify about
5717           topic changes on a channel.
5718
5719         * Added silc_id_dup into lib/silccore/id.[ch] to duplicate
5720           ID data.
5721
5722         * Partly updated the protocol specification to comply with the
5723           changes now made.  It is still though a bit outdated.
5724
5725         * The JOIN notify type now takes one extra argument <Channel ID>.
5726           The packet used to be destined to the channel but now the
5727           JOIN type may be sent as list thus it is impossible to 
5728           destine it to any specific channel.  By adding this argument
5729           it is again possible.
5730
5731 Wed Feb 21 22:39:30 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5732
5733         * Added CREDITS file.  The CHANGES and CREDITS file will appear
5734           in the distribution as well.
5735
5736 Wed Feb 21 14:17:04 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5737
5738         * Implemented CMODE_CHANGE, CUMODE_CHANGE and TOPIC_SET notify
5739           types in the server's silcd/packet_receive.c.
5740
5741         * Implemented CMODE and CUMODE to work in router environment.
5742
5743         * Fixed minor encoding and decoding buglet from the
5744           lib/silccore/silcmode.c.
5745
5746         * Fixed buffer overflow from lib/silcclient/command.c in USERS
5747           command parsing.
5748
5749 Wed Feb 21 12:44:00 EET 2001  Mika Boström <bostik@lut.fi>
5750
5751         * Changed all SilcConfigServer* and silc_config_server* to
5752           SilcServerConfig* and silc_server_config*, respectively.
5753           Patch by Bostik.
5754
5755 Wed Feb 21 00:10:00 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5756
5757         * Associated the ID (client or server ID) to the Authentication
5758           Payload to avoid any possibility of forging.  Updated the
5759           protocol specification and the code accordingly.
5760
5761 Tue Feb 20 14:14:14 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5762
5763         * The RSA key length is now save to the RsaKey context in the
5764           key generation process in lib/silccrypt/rsa.c.  The key length
5765           is now used to figure out the maximum size of the block allowed
5766           to be encrypted/signed.
5767
5768         * Added silc_mp_mp2bin_noalloc into lib/silcmath/mpbin.[ch].  It
5769           is equivalent to the silc_mp_mp2bin but does not allocate any
5770           memory.
5771
5772         * Changed silc_mp_mp2bin API to take length argument.  If it is
5773           non-zero then the buffer is allocated that large.  If zero, then
5774           the size is approximated using silc_mp_sizeinbase, which however
5775           is not relieable.
5776
5777         * Created Global RNG API which is global RNG that application can
5778           initialize.  After initializing, any routine anywhere in the
5779           code (including library) can use RNG without allocating a new
5780           RNG object.  This was done to allow this sort of use of the 
5781           RNG in code that has no chance to allocate RNG object.  All
5782           applications currently allocate this and many routines in the
5783           library use this.  Affected file lib/silccrypt/silcrng.[ch].
5784
5785         * Removed the RNG kludge from lib/silcmath/primegen.c and changed
5786           it to use the Global RNG API.
5787
5788         * Defined Authentication Payload into protocol specification that
5789           is used during SILC session to authenticate entities.  It is
5790           used for example by client to authenticate itself to the server
5791           to obtain server operator privileges.
5792
5793           Implemented this payload into the lib/silccore/silcauth.[ch].
5794           Implemented also routines for public key based authentication
5795           as the new protocol specification dictates.
5796
5797           Moved definitions of different authentication methods from
5798           lib/silccore/silcprotocol.h into lib/silccore/silcauth.h.
5799
5800         * Added silc_pkcs_encrypt, silc_pkcs_decrypt, silc_pkcs_sign,
5801           silc_pkcs_verify and silc_pkcs_sign_with_hash and
5802           silc_pkcs_verify_with_hash functions into the file 
5803           lib/silccrypt/silcpkcs.[ch].
5804
5805 Mon Feb 19 19:59:28 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5806
5807         * The client entry's userinfo pointer must be always valid. 
5808           Otherwise the [<unknown>] bug will surface beacuse the WHOIS
5809           will fail since it requires the userinfo.  Now, the userinfo
5810           is allocated as "" if actual userinfo does not exist.  Actually,
5811           it must exist and it is totally Ok to drop client connections
5812           that does not announce the userinfo.  However, we will make
5813           this workaround for now.
5814
5815         * Added silc_net_get_remote_port into lib/silcutil/silcnet.[ch]
5816           to return the remote port by socket.
5817
5818 Mon Feb 19 14:26:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5819
5820         * Changed SILC_SERVER_COMMAND_EXEC_PENDING macro to the name
5821           SILC_SERVER_PENDING_EXEC and added an new macro
5822           SILC_SERVER_PENDING_DESTRUCTOR which is called to free the
5823           data or when error occurs while processing the pending command.
5824
5825           Added new argument `destructor' into silc_server_command_pending
5826           and to the SilcServerCommandPending object.  This destructor is
5827           now called after calling the pending callback or if error occurs
5828           immediately.  If error occurs the actual pending callback won't
5829           be called at all - only the destructor.  The destructor may be
5830           NULL if destructor is not needed.
5831
5832           All this applies for client library code as well.  Similar
5833           changes were made there as well for the pending commands.
5834
5835           In the client, the application must now allocate the 
5836           SilcClientCommandContext with the silc_client_command_alloc
5837           function.
5838
5839         * Added reference counter to the SilcServerCommandContext.  Added
5840           function silc_server_command_alloc and silc_server_command_dup 
5841           functions.
5842
5843           Same type of functions added to the client library for the same
5844           purpose as well.
5845
5846         * Removed the cmd_ident from IDListData away since it is now 
5847           global for all connections.  It is the command identifier used
5848           in command sending and with pending commands.  The affected file
5849           is silcd/idlist.h.
5850
5851         * Added reference counter to the SilcSocketConnection objecet to
5852           indicate the usage count of the object.  The object won't be
5853           freed untill the reference counter hits zero.  Currently only
5854           server uses this, and client ignores it.  The client must be
5855           set to use this too later.  The affected files are
5856           lib/silccore/silcsockconn.[ch].  Added also the function
5857           silc_socket_dup to increase the reference counter.
5858
5859           This was mainly added because it is possible that the socket
5860           is removed underneath of pending command or other async
5861           operation.  Now it won't be free'd and proper DISCONNECTING
5862           flags, etc. can be set to avoid sending data to connection that
5863           is not valid anymore.
5864
5865         * Added SILC_SET_DISCONNECTING to server.c when EOF is read from
5866           the connection.  After that it sets SILC_SET_DISCONNECTED.
5867           It is, however, possible that the socket data is not still freed.
5868           The silc_server_packet_process now checks that data is not
5869           read or written to connection that is DISCONNECTED.  The socket
5870           get's freed when the reference counter hits zero.
5871
5872 Mon Feb 19 00:50:57 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5873
5874         * Changed the client operation API: channel_message operation's
5875           `sender' is now the client entry of the sender, not the nickname
5876           and the `channel' is the channel entry, not the channel name.
5877
5878           In the private_message operation the `sender' is now also the
5879           client entry of the sender not the nickname.
5880
5881           Affected file is lib/silcclient/ops.h and all applications
5882           using the client operations.
5883
5884 Sat Feb 17 22:11:50 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5885
5886         * Moved the calling of ops->connect() from connect_to_server_final
5887           into receive_new_id functin since that is the point when the
5888           client is actually allowed to send traffic to network.  The
5889           affected file is lib/silcclient/client.c.
5890
5891 Sat Feb 17 13:15:35 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5892
5893         * When receiving NEW_CHANNEL_LIST, NEW_CHANNEL_USER_LIST,
5894           NEW_ID_LIST and SET_MODE_LIST packets, broadcast the list packet
5895           (if needs broadcasting) instead of broadcasting the packets one
5896           by one which would make a burst in the network traffic.
5897
5898         * Added `broadcast' argument to the functions in silcd/server.[ch]
5899           silc_server_create_new_channel[_with_id] to indicate whether
5900           to send New Channel packet to primary router.
5901
5902 Sat Feb 17 01:06:44 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5903
5904         * Added new function into the silcd/server.[ch] files:
5905           silc_server_create_new_channel_with_id to create new channel with
5906           already existing Channel ID.
5907
5908         * Added new packet type SILC_PACKET_SET_MODE_LIST into the file
5909           lib/silccore/silcpacket.h.  This packet is used t send list of
5910           Set Mode payloads inside one packet.  Server uses this to set
5911           the modes for the channels and clients on those channels, that it
5912           announced to the router when it connected to it.  The protocol
5913           specification has been updated accordingly.
5914
5915         * The silc_server_new_channel did not handle the packet coming
5916           from normal server as it normally does not send that.  However,
5917           when it announces its channels it does send it.  Implemented
5918           the support for that.
5919
5920         * Added SILC_ID_CHANNEL_COMPARE macro to compare to Channel ID's
5921           into the file lib/silccore/id.h.
5922
5923 Fri Feb 16 23:57:29 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5924
5925         * Fixed memory leaks in the functions silc_idlist_del_client,
5926           silc_idlist_del_channel and silc_idlist_del_server in the file
5927           silcd/idlist.c.  All of those leaked like a sieve.
5928
5929         * Fixed some small memory leaks in the client's function
5930           silc_client_notify_by_server.
5931
5932         * Added functions into silcd/server.c: silc_server_announce_clients,
5933           silc_server_announce_channels and silc_server_announce_server.
5934           These functions are used by normal and router server to announce
5935           to its primary router about clients, channels and servers (when
5936           router) that we own.  This is done after we've connected to the
5937           router.
5938
5939           These functions effectively implements the following packet types:
5940           SILC_PACKET_NEW_CHANNEL_LIST, SILC_PACKET_NEW_CHANNEL_USER_LIST
5941           and SILC_PACKET_NEW_ID_LIST.
5942
5943         * Added new functions into the silcd/packet_receive.[ch]:
5944           silc_server_new_id_list, silc_server_new_channel_list and
5945           silc_server_new_channel_user_list to handle the incoming 
5946           NEW_ID_LIST, NEW_CHANNEL_LIST and NEW_CHANNEL_USER_LIST packets.
5947
5948         * Added support of changing Channel ID in the function
5949           silc_server_replace_id.  If the server that announces a channel
5950           to the router already exists in the router (with same name but
5951           with different Channel ID), router is responsible to send
5952           Replace ID packet to the server and force the server to change
5953           the Channel ID to the one router has.
5954
5955         * Added new notify type SILC_NOTIFY_TYPE_CHANNEL_CHANGE to notify
5956           client that the Channel ID has been changed by the router.  The
5957           normal server sends this to the client.  Client must start using
5958           the new Channel ID as the channel's ID.
5959
5960           Implemented handling of this new type into lib/silcclient/client.c
5961           into the function silc_client_notify_by_server.
5962
5963         * Added new function silc_idlist_replace_channel_id into the files
5964           silcd/idlist.[ch] to replace the Channel ID.
5965
5966 Fri Feb 16 14:14:00 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5967
5968         * Call silc_server_command_identify_check always when processing
5969           the IDENTIFY command in silcd/command.c
5970
5971 Thu Feb 15 20:07:37 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
5972
5973         * Added new packet type SILC_PACKET_HEARTBEAT that is used to
5974           send keepalive packets.  The packet can be sent by clients, 
5975           servers and routers.
5976
5977           Added function silc_socket_set_heartbeat into the file
5978           lib/silccore/silcsockconn.[ch] to set the heartbeat timeout.
5979           If not set, the heartbeat is not performed.  The actual 
5980           heartbeat is implemented in the low level socket connection
5981           library.  However, application is responsible of actually
5982           sending the packet.
5983
5984           Added silc_server_send_heartbeat to send the actual heartbeat
5985           packet into silcd/packet_send.[ch].  Server now performs
5986           keepalive with all connections.
5987
5988         * Added silc_task_get_first function into lib/silcutil/silctask.c
5989           to return the timeout task with shortest timeout.  There was a bug
5990           in task unregistration that caused problems.  TODO has been
5991           updated to include that task system must be rewritten.
5992
5993         * The client library will now resolve the client information when
5994           receiving JOIN notify from server for client that we know but
5995           have incomplete information.
5996
5997         * Rewrote parts of silc_server_remove_from_channels and
5998           silc_server_remove_from_one_channel as they did not remove the
5999           channel in some circumstances even though they should've.
6000
6001         * Encryption problem encountered in server:
6002
6003           The LEAVE command used to send the Channel Key packet to the
6004           router immediately after generating it.  However, the code
6005           had earlier sent Remove Channel user packet but not immediately,
6006           ie. it was put to queue.  The order of packets in the router
6007           was that Channel Key packet was first and Remove Channel User
6008           packet was second, even though they were encrypted in the
6009           reverse order.  For this reason, MAC check failed.  Now, this
6010           is fixed by not sending the Channel Key packet immediately but
6011           putting it to queue.  However, this is more fundamental problem:
6012           packets that are in queue should actually not be encrypted 
6013           because packets that are sent immediately gets encrypted
6014           actually with wrong IV (and thus MAC check fails).  So, packets
6015           that are in queue should be encrypted when they are sent to
6016           the wire and not when they put to the queue.
6017
6018           However, the problem is that the current system has not been
6019           designed to work that way.  Instead, the packet is encrypted
6020           as soon as possible and left to the queue.  The queue is then
6021           just purged into wire.  There won't be any fixes for this
6022           any time soon.  So, the current semantic for packet sending
6023           is as follows:
6024
6025           o If you send packet to remote host and do not force the send
6026           (the packet will be in queue) then all subsequent packets to the
6027           same remote host must also be put to the queue.  Only after the
6028           queue has been purged is it safe again to force the packet
6029           send immediately.
6030
6031           o If you send all packets immediately then it safe to send
6032           any of subsequent packets through the queue, however, after
6033           the first packet is put to queue then any subsequent packets
6034           must also be put to the queue.
6035
6036           Follow these rules and everything works fine.
6037
6038 Thu Feb 15 14:24:32 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
6039
6040         * Added new function silc_server_remove_clients_by_server to
6041           remove all client entries from ID list when the server connection
6042           is lost.  In this case it is also important to invalidate all
6043           client entires as they hold the invalid server entry.  This
6044           fixes fatal bug when server has lost connection and will reconnect
6045           again.
6046
6047 Wed Feb 14 16:03:25 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
6048
6049         * Made some sanity checks to silc_server_daemonise like to check
6050           whether the requested user and group actually exists.
6051
6052         * Added sanity check to SKE's silc_ske_responder_finish to check
6053           that the public and private key actually is valid. 
6054
6055         * Invalidate the client's nickname when receiving Replace ID
6056           packet and the Client ID is being replaced.  This means that the
6057           server will query the nickname if someone needs it (client)
6058           a bit later.
6059
6060         * Sort the ID Cache in client library when the ID Cache data
6061           has changed (needs sorting).
6062
6063         * Do not allow for SILC client to create several connections to
6064           several servers.  The client does not support windows right now
6065           and generating multiple connections causes weird behaviour.
6066
6067           Irssi-silc client does support windows and can handle several
6068           connections without problems, see: www.irssi.org and SILC plugin.
6069
6070         * Fixed some places where client was added to the IDList.  The
6071           rule of thumb is following (in order to get everything right):
6072           If the client is directly connected local client then the 
6073           `connection' argument must be set and `router' argument must be 
6074           NULL to silc_idlist_add_client function.  If the client is not
6075           directly connected client then the `router' argument must
6076           bet set and the `connection' argument must be NULL to the
6077           silc_idlist_add_client function.
6078
6079         * The funtion silc_server_packet_send_local_channel actually did
6080           not check whether the client was locally connected or not.  It
6081           does that now.  Fixed a bug related to LEAVE command.
6082
6083         * Fixed Remove Channel User payload parsing bug in server's
6084           silcd/packet_receive.c.  Fixed a bug related to LEAVE command.
6085
6086         * The server's silc_server_save_channel_key now checks also the
6087           global ID list for the channel as it might not be in the local
6088           list.  Fixed a bug related to LEAVE command.
6089
6090         * Is this the end of the [<unknown>] buglet that has been lurking
6091           around for a long time?  A little for loop fix in server's
6092           silc_server_command_whois_parse that is used by both IDENTIFY
6093           and WHOIS command.  At least, this was a clear bug and a cause
6094           of one type of [<unknown>] buglet.
6095
6096         * WHOIS and IDENTIFY commands call the function
6097           silc_server_command_[whois/identify]_check function even if
6098           we are not router server.
6099
6100 Tue Feb 13 19:55:59 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
6101
6102         * Added --with-gmp configuration option.  If set the GMP
6103           is always compiled in the SILC source tree.  If not set then
6104           it is checked whether the system has the GMP3 installed.  If
6105           it has then the GMP won't be compiled (the system's headers
6106           and library is used), if it doesn't have it then the GMP is
6107           compiled in the SILC source tree.
6108
6109 Mon Feb 12 11:20:32 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
6110
6111         * Changed RSA private exponent generation to what PKCS #1
6112           suggests.  We try to find the smallest possible d by doing
6113           modinv(e, lcm(phi)) instead of modinv(e, phi).  Note: this is
6114           not security fix but optimization.
6115
6116 Sun Feb 11 18:19:51 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
6117
6118         * Added new config entry [Identity] to fork the server and run
6119           it as specific user and group.  A patch from Bostik.
6120
6121         * Imported Dotconf configuration library into lib/dotconf.
6122           This will be used to create the SILC configuration files later.
6123           It will appear in the distsribution after this commit.
6124
6125 Sat Feb 10 21:13:45 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
6126
6127         * A big code auditing weekend happening.  Auditing code for 
6128           obvious mistakes, bugs and errors.  Also, removing any code
6129           that is obsolete.
6130
6131           Removed files for being obsolete:
6132
6133           o lib/silcutil/silcbuffer.c (the buffer interface is entirely in
6134           inline in the file lib/silcutil/silcbuffer.h)
6135
6136           o lib/silcutil/silcbufutil.c (the header has inline versions)
6137
6138           Changed code to fix possible error conditions:
6139
6140           o The buffer formatting routines now check that the destination
6141           buffer really has enough space to add the data.  This applies for
6142           both buffer formatting and unformatting 
6143           (lib/silcutil/silcbuffmt.[ch]).  Also, the entire buffer
6144           unformatting was changed to accomodate following rules: 
6145           XXX_*STRING_ALLOC will allocate space for the data into the pointer
6146           sent to the function while XXX_*STRING will not allocate or copy 
6147           the data into the buffer.  Instead it sets the pointer from the
6148           buffer into the pointer sent as argument (XXX_*STRING used to
6149           require that the pointer must be allocated already).  This change
6150           makes this whole thing a bit more consistent and more optimized
6151           (note that the data returned in the unformatting with XXX_*STRING
6152           must not be freed now).  The routines return now -1 on error.
6153
6154           o Tried to find all code that use buffer_format and buffer_unformat
6155           and added return value checking to prevent formatting and
6156           especially unformatting errors and possible subsequent fatal
6157           errors.
6158
6159           o Changed ske->x and ske->KEY to mallocated pointers in
6160           lib/silcske/silcske.h.  Fixed possible data and memory leak.
6161
6162           o Added return value checking to all *_parse* functions.  Fixed
6163           many memory leaks as well.
6164
6165           o Added length argument to silc_id_str2id in lib/silccore/id.[ch]
6166           so that buffer overflows would not happen.  All code now also
6167           checks the return value as it can fail.
6168
6169 Mon Feb  5 20:08:30 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
6170
6171         * Added reconnection support to server if the normal server looses
6172           its connection to the router (for example if router is rebooted).
6173           The server performs normal reconnection strategy implemented
6174           to the server.  Affected file silcd/server.c.
6175
6176 Sun Feb  4 13:18:32 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
6177
6178         * Added new packet type SILC_PACKET_SET_MODE that is used to
6179           distribute the information about changed modes (for clients,
6180           channels and clients channel modes) to all routers in the
6181           network.  Updated the protocol specification accordingly.
6182
6183           Added functions into silcd/packet_send.c and 
6184           silcd/packet_receive.c: silc_server_send_set_mode, 
6185           silc_server_set_mode.
6186
6187           Added new files silcmode.[ch] into lib/silccore that implements
6188           the encoding and decoding of Set Mode Payload.  Added new type
6189           SilcSetModePayload.  Moved the definitions of different modes
6190           from lib/silccore/silcchannel.h into lib/silccore/silcmode.h.
6191
6192 Sat Feb  3 15:44:54 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
6193
6194         * Oops, a little mistake in server's connection authentication 
6195           protocol.  The protocol is not ended with FAILURE but with
6196           SUCCESS if the authentication is Ok. :)  Affected file is
6197           silcd/protocol.c.
6198
6199         * Implemented NICK_CHANGE notify handling in server in the file
6200           silcd/packet_receive.c  The NICK_CHANGE notify is distributed to
6201           the local clients on the channel.  After the changing nickname
6202           in router environment snhould work and the [<unknown>] nickname
6203           should appear no more.
6204  
6205           The silc_server_replace_id function that receives the Replace ID
6206           payload now sends the NICK_CHANGE notify type also in the file
6207           silcd/packet_receive.c
6208
6209         * Changed WHOIS and IDENTIFY command to support the maximum amount
6210           of arguments defined in protocol specs (3328 arguments).  This 
6211           fixed a bug that caused problems when there were more than three
6212           users on a channel.
6213
6214 Fri Feb  2 11:42:56 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
6215
6216         * Added extra parameter, command identifier, to the
6217           silc_client_send_command so that explicit command identifier
6218           can be defined.
6219
6220           Changed that ID list routines uses specific command identifier
6221           when sending WHOIS/IDENTIFY requests to the server so that they
6222           can be identified when the reply comes back.
6223
6224           Affected files lib/silcclient/command.[ch],
6225           lib/silcclient/client.c and lib/silcclient/idlist.[ch].
6226
6227         * Added `sender' argument to silc_server_packet_send_to_channel
6228           to indicaet the sender who originally sent the packet to us
6229           that we are now re-sending.  Ignored if NULL.  Affected file
6230           silcd/packet_send.[ch].
6231
6232         * Added some server statistics support in silcd/server_internal.h
6233           SilcServerStatistics structure and around the server code.  Also
6234           send some nice statistics information when client is connecting
6235           to the client.
6236
6237 Thu Feb  1 23:31:21 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
6238
6239         * Fixed channel ID decoding in server's JOIN command reply in
6240           silcd/command_reply.c
6241
6242         * Fixed braodcasting of replace ID payload to not to send it if
6243           we are standalone server in silcd/packet_receive.c.
6244
6245         * Fixed all channel message sending routines to not to send
6246           packets to clients that has router set, since they are routed
6247           separately in the same function earlier.  Affects file
6248           silcd/packet_send.c and all channel packet sending functions.
6249
6250         * In USERS reply, res_argv[i] are not allocated, the table
6251           is allocated.  Thus changed that free the table, not its
6252           internals.
6253
6254         * In server's whois_check and identify_check if the client is
6255           locally connected do not send any WHOIS commands - they are not
6256           needed.
6257
6258 Thu Feb  1 21:32:27 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
6259
6260         * Fixed some minor bugs in client when sending WHOIS command.  The
6261           arguments was in wrong order.
6262
6263         * Removed statis function add_to_channel from server in 
6264           silcd/command.c that was previously used with the joining but
6265           is obsolete now.
6266
6267         * Tested USERS command in router environment successfully with two
6268           routers, two servers and two clients.
6269
6270 Thu Feb  1 00:54:26 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
6271
6272         * Reorganized the USERS command and command reply in client library
6273           in lib/silcclient/command.c and lib/silcclient/command_reply.c.
6274           When the command is given by user we register a pending command
6275           callback that will reprocess the command after the reply has been
6276           received from the server.  When reprocessing the packet we then
6277           display the information.  Thus, the USERS information is displayed
6278           now in the command callback instead of in the command reply
6279           callback.  The processing of the command is same as previously
6280           when server has sent the command reply in the JOINing process.
6281
6282         * Added to USERS command in silcd/command_reply.c to join the client,
6283           we didn't use to know about, to the channel after we've created
6284           a client entry for it.  Also, for clienet we did know already still
6285           check whether it is on the channel or not and add it if not.
6286
6287         * Removed silc_server_command_join_notify as the function and its
6288           use was obsolete.
6289
6290 Tue Jan 30 22:39:15 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
6291
6292         * Changed the client's pending command handling to the same as the
6293           server's pending command handling.  It is also now possible to
6294           execute command reply functions from other command reply
6295           function as the function callbacks for commands and command
6296           replies are one and same.  The pending commands are not static
6297           list anymore, it is mallocated SilcDList in lib/silcclient/client.h
6298           in client connection context.  Thus, pending commands are server
6299           connection specific as it is convenient.
6300
6301           Changed the function silc_client_command_pending and
6302           silc_client_command_pending_del and added new function
6303           silc_client_command_pending_check.  Removed the 
6304           SILC_CLIENT_CMD_REPLY_EXEC, and SILC_CLIENT_PENDING_COMMAND_CHECK
6305           macros.
6306
6307         * Added cmd_ident, current command identifier, to the client
6308           connection context in lib/silcclient/client.h to keep track on
6309           command identifiers used in command sending.  Client's command reply
6310           function handling now supports the mandatory command identifiers.
6311
6312         * Added SILC_CLIENT_COMMAND_EXEC_PENDING macros to all command reply
6313           funtions in client to fully support pending command callbacks.
6314
6315         * NOTE: the name_list in USERS (old NAMES) command is NOT sent anymore
6316           as one of the arguments to the application in the command reply
6317           client operation.
6318
6319         * NOTE: The FORWARDED flag is depracated.  It used to be depracated
6320           before first releasing SILC but came back.  Now it is removed again
6321           and should come back nomore.  The FORWARDED flag was used only
6322           by the JOINing procedure by forwarding the command packet to router.
6323           Now, the JOINing procedure has been changed to more generic (due
6324           to various router environment issues) and FORWARDED is not needed
6325           anymore for anything.  The protocol specification is yet to be
6326           updated.
6327
6328           Now, removed silc_server_packet_forward from server and the flag
6329           SILC_PACKET_FORWARDED from lib/silccore/silcpacket.h.
6330
6331 Tue Jan 30 00:05:05 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
6332
6333         * Renamed NAMES command to USERS command.  The NAMES was named that
6334           due to historical reasons.  Now it is renamed.  Also, rewrote
6335           parts of the USERS command.  The nickname list is not sent anymore
6336           by the server.  Only Client ID and mode lists are sent in the USERS
6337           command.  Changed this also to the protocol specification.
6338
6339           The client now resolves the names and stuff after it receives
6340           the USERS list from the server when joining to the channel.
6341
6342         * WHOIS and IDENTIFY commands has been changed to support multiple
6343           Client ID's per command.  One can now search for multiple users
6344           in the network by sending only one WHOIS or IDENTIFY command.
6345           Changed the code and the protocol specifications.
6346
6347         * Removed silc_server_command_identify_parse and changed that IDENTIFY
6348           uses silc_server_command_whois_parse to parse the request. */
6349
6350         * If normal server, do not parse the WHOIS and IDENTIFY requests
6351           before sending it to the router.  Saves some time.
6352
6353 Sun Jan 28 16:19:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
6354
6355         * Fixed JOIN command on client library.  Wrong number of arguments
6356           used to crash the client.
6357
6358         * Added silc_server_channel_has_global function to check whether
6359           channel has global users or not.
6360
6361         * Added silc_server_channel_has_local function to check whether channel
6362           has locally connected clients on the channel.
6363
6364         * The silc_server_remove_from_one_channel now checks whether the
6365           channel has global users or not after given client was removed from
6366           the channel.  It also checks whether the channel has local clients
6367           on the channel anymore.  If it does not have then the channel entry
6368           is removed as it is not needed anymore.
6369
6370         * The silc_server_notify now checks on JOIN notify whether the joining
6371           client is one of locally connected or global.  If it is global then
6372           the channel has now global users on the channel and that is marked
6373           to the channel entry.  Also, it now saves the global client to
6374           global list who is joining and JOINs it to the channel.  This is
6375           for normal server, that is.
6376
6377           Changed silc_server_send_notify_on_channel, 
6378           silc_server_packet_relay_to_channel and 
6379           silc_server_packet_send_to_channel check if we are normal server
6380           and client has router set (ie. global client) do not send the
6381           message to that client, as it is already routed to our router.
6382
6383         * Implemented LEAVE notify type handling in silc_server_notify 
6384           function.
6385
6386         * Tested LEAVE command in router environment successfully.  Tested
6387           with two routers, two servers and two clients.
6388
6389         * Updated TODO.
6390
6391         * idlist_find_xxx_by_id routines now dumps the ID on the debug mode.
6392
6393         * Implemented SIGNOFF notify type handling in silc_server_notify
6394           function.
6395
6396         * silc_server_remove_id now removes the client entry from all channels
6397           it has joined and thusly sends SIGNOFF notify type.
6398
6399         * Rewrote the NAMES list generation in server by removing two excess
6400           loops.  The lists are created now inside one loop.
6401
6402 Sat Jan 27 22:34:56 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
6403
6404         * silc_server_remove_channel_user checks now also global list
6405           for channel and client.
6406
6407         * silc_server_new_channel_user checks now both local and global
6408           list for channel and client.  Fixed a bug in client id decoding.
6409           Used to decode wrong buffer.
6410
6411         * silc_server_channel_message checks now both local and global
6412           list for channel entry.
6413
6414         * Tested channel joining (hence JOIN) in router environment
6415           successfully.  Tested with two routers, two servers and two
6416           clients.
6417
6418         * Tested channel message sending in router environment successfully.
6419
6420 Thu Jan 11 03:22:57 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
6421
6422         * Added silc_server_save_channel_key into server.[ch] to save the
6423           received channel key in Channel Key payload processing. It is
6424           also used in JOIN command reply handling.
6425
6426           Equivalent function silc_client_save_channel_key added into
6427           client.[ch] into client library.
6428
6429         * Changed JOIN command reply to send information whether the channel
6430           was created or not (is existing already) and the channel key 
6431           payload.  Changed protocol specs accordingly.
6432
6433         * Fixed bugs in WHOIS and IDENTIFY command reply sending when
6434           the request was sent by ID and not by nickname.  Crashed on
6435           NULL dereference.
6436
6437 Sat Dec 23 21:55:07 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
6438
6439         * Fixed a bug in Client library.  IDENTIFY and WHOIS reply functions
6440           now correctly save the received data.
6441
6442         * silc_server_free_sock_user_data now notifies routers in the 
6443           network about entities leaving the network.
6444
6445           At the same time implemented functions silc_server_remove_id
6446           and silc_server_send_remove_id to receive and send REMOVE_ID
6447           packets.  The packet is used to notify routers in the network
6448           about leaving entities.  The ID removed will become invalid in
6449           the network.
6450
6451         * Added function silc_idlist_del_server into server. Removes and
6452           free's server entry from ID list.
6453
6454         * silc_server_private_message function now checks, if we are router,
6455           that the destination ID really is valid ID, naturally.
6456
6457         * In router when NEW_ID packet is received (for new client) the
6458           hash of the Client ID is saved in the ID Cache but the
6459           client->nickname is set to NULL, instead of putting the hash
6460           to it as well.
6461
6462           IDENTIFY command now also checks that client->nickname must be
6463           valid. If it is not if will request the data from the server who
6464           owns the client.  Added new function 
6465           silc_server_command_identify_check.
6466
6467         * Added silc_command_set_command into lib/silccore/silcommand.[ch]
6468           to set the command to already allocated Command Payload.
6469
6470         * Tested private message sending in router environment with two
6471           routers, two servers and two clients.  Fixed minor bugs and now
6472           it works fine.
6473
6474         * Fixed segfault from client's NAMES command. Used to crash if
6475           not on any channel.
6476
6477         * Forwarded packets must not be routed even if it is not destined
6478           to the receiver.  Changed server code comply with this.
6479
6480 Sun Dec 17 14:40:08 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
6481
6482         * Added `require_reverse_mapping' boolean value to ServerParams
6483           structure. If TRUE (not default) the server will require that
6484           the connecting host has fully qualified domain name.
6485
6486           If the reverse mapping is not required and hostname could not be
6487           found the IP address is used as hostname.
6488
6489 Sat Dec 16 17:39:54 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
6490
6491         * Implemented version string checking to both client and server.
6492           The check is incomplete currently due to the abnormal version 
6493           strings used in development version of SILC.
6494
6495         * Changed all command functions in server to use the new
6496           CHECK_ARGS macro.
6497
6498 Fri Dec 15 15:55:12 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
6499
6500         * Changed char *data to unsigned char *data in ID Cache system to
6501           support binary data as ID Cache data. Changed code to support
6502           binary data in lib/silccore/idcache.c.
6503
6504         * Renamed silc_server_packet_relay_command_reply to 
6505           silc_server_command_reply as it is normal packet receiving
6506           function. Rewrote the function to accept command replys for
6507           servers and not only for clients.
6508
6509         * Mark remote router always as registered server if we are connecting
6510           to it.  Otherwise, commands sent by the router to us are ignored.
6511
6512         * All ID List find routines now returns the ID Cache Entry pointer
6513           as well if requested.
6514
6515         * WHOIS command works now in router environment, tested with two
6516           routers, two servers and two clients.
6517
6518         * Cleaned up and rewrote IDENTIFY command. IDENTIFY should work now
6519           in router environment (as it is almost equivalent to WHOIS) but
6520           hasn't been tested thoroughly.  Added new functions:
6521
6522           silc_server_command_identify_parse
6523           silc_server_command_identify_send_reply
6524           silc_server_command_identify_from_client
6525           silc_server_command_identify_from_server
6526
6527         * Disabled route cache adding because adding two different ID's with
6528           same IP replaces the old cache entry thus giving wrong route.
6529           The entry->router->connection is always the fastest route anyway
6530           so route cache may not be needed.  Of course, new routes maybe
6531           established after receiving the ID when the entry->router->connection
6532           might not be anymore the most optimal.
6533
6534 Thu Dec 14 15:55:35 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
6535
6536         * Add route cache for received ID for fast routing.
6537
6538         * Added silc_server_packet_route to route received packet on router
6539           that is not destined to us.
6540
6541         * Renamed silc_server_get_route to silc_server_route_get.
6542
6543         * Added id_string and id_string_len fields into SilcServer to
6544           include encoded ServerID for fast comparing without excess
6545           encoding of the ID's.
6546
6547         * Cleaned up WHOIS command on server side. Added following static
6548           functions:
6549
6550           silc_server_command_whois_parse
6551           silc_server_command_whois_check
6552           silc_server_command_whois_send_reply
6553           silc_server_command_whois_from_client
6554           silc_server_command_whois_from_server
6555
6556         * Added macro SILC_SERVER_COMMAND_CHECK_ARGC to check mandatory
6557           arguments in command replies. All command functions should be
6558           updated to use this macro.
6559
6560 Sun Dec 10 23:52:00 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
6561
6562         * Minor typo fixes on command reply handling on server.
6563
6564 Tue Nov 28 11:05:39 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
6565
6566         * Added silc_server_command_add_to_channel internal routine to add
6567           the client to the channel after router has created the channel and
6568           sent command reply to the server.
6569
6570         * Added generic silc_server_send_command to send any command from
6571           server.
6572
6573         * Use static buffer with ID rendering instead of duplicating data.
6574
6575 Mon Nov 27 21:39:40 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
6576
6577         * Fixed a channel user mode bug when joining to a channel server gave
6578           everybody channel founder rights, oops.
6579
6580         * We mark ourselves as the router of the incoming server connection
6581           if we are router ourselves.  This way we can check in some packet
6582           sending functions whether it is locally connected server.  For
6583           incoming router connections we put NULL.
6584
6585         * For router sending packets locally means now always sending the
6586           packet cell wide; to local clients and local servers.  For normal
6587           server sending packet locally means sending it to only local
6588           clients.
6589
6590         * Fixed the JOIN command to really work in router environment.  If the
6591           channel is created it is always created by the router.  Router is
6592           also responsible of making the initial joining to the channel,
6593           sending JOIN notify to the sending server and distributing 
6594           NEW_CHANNEL and NEW_CHANNEL_USER packets.  Hence, if the channel
6595           does not exist server doesn't do anything else but forward the
6596           command to the router which performs everything.
6597
6598         * Added silc_server_send_channel_key function to send the Channel Key
6599           payload.
6600
6601         * Added silc_server_create_channel_key to create new channel key.  The
6602           channel key is now re-generated everytime someone joins or leaves
6603           a channel, as protocol dictates.  Note: channel->key_len is the
6604           key length in bits.
6605
6606 Wed Nov 22 22:14:19 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
6607
6608         * Splitted server.[ch] finally.  Created now packet_send.[ch] and
6609           packet_receive.[ch] to separate packet sending and receiving
6610           routines.  The server.[ch] now includes everything else including
6611           actual packet processing (writing and reading data) and other
6612           server issues.
6613
6614           Renamed silc_server_private_message_send_internal to
6615           silc_server_send_private_message.  The routine is still though
6616           used only to relay private messages as server does not send
6617           private messages itself.
6618
6619           Renamed silc_server_new_channel to silc_server_create_new_channel
6620           and added new function sicl_server_new_channel that handles the
6621           incoming New Channel packet.  Added also new sending function
6622           silc_server_send_new_channel to send New Channel Payload.
6623
6624         * Added new function silc_server_notify to process incoming notify
6625           packet to the server/router. Server may then relay the notify
6626           to clients if needed.
6627
6628         * Added new function silc_server_new_channel_user to process incoming
6629           New Channel User packet.  Router will redistribute the packet and
6630           send JOIN notify to its local clients and locally connected servers
6631           if needed.  Normal server will send JOIN notify to its local client
6632           on same channel when received this packet.  Added also corresponding
6633           sending function silc_server_send_new_channel_user to sent the
6634           payload.
6635
6636         * Added boolean route argument to send_notif_to_channel and
6637           packet_send_to_channel functions to attempt to route the packet
6638           if it is TRUE and send only locally if it is FALSE.
6639
6640 Tue Nov 21 19:49:31 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
6641
6642         * silc_server_replace_id now broadcasts the received replace ID
6643           packet if it is not broadcast packet already. The router must
6644           broadcast to inform other routers about changed ID.
6645
6646         * Added backpointer to server's router into SilcServer context in
6647           silcd/server_internal.h.
6648
6649         * Fixed silc_server_packet_broadcast to send correct broadcast
6650           packets.
6651
6652         * The channel key is now distributed to the local client as soon
6653           as it is received from the router (in router environment) so that
6654           no other packet may be sent for the channel until client has 
6655           received the key.
6656
6657         * silc_server_remove_channel_user now broadcasts the received
6658           Remove Channel User packet if it is not broadcast packet already.
6659           The router must broadcast to inform other routers about removed
6660           channel user.
6661
6662         * Added users field into SilcPacketContext that is a reference count
6663           of the context.  One can increase the reference count by calling
6664           silc_packet_context_dup which is now changed to just increase the
6665           reference count instead of duplicating the data.  The reference
6666           count is decresed by calling silc_packet_context_free that will
6667           free the data after the reference count hits zero.
6668
6669           For now on the packet context and everything allocated into it
6670           (including the raw packet from network) must be freed by calling
6671           the new silc_packet_context_free function.  Added also new function
6672           silc_packet_context_alloc that must be used now to allocate the
6673           context.  This also means that if a routine is asynchronous from
6674           silc_[client/server]_packet_parse_type the packet context must
6675           be duplicated by calling silc_packet_context_dup.  Otherwise it
6676           gets free'd after silc_[client/server]_packet_parse_type returns.
6677           Also, one must remember that if packet is duplicated then its 
6678           reference count must be decresed by calling the free function as
6679           many times as it was duplicated.
6680
6681         * Changed SilcBuffer field from protocol contexts to SilcPacketContext
6682           from both client and server.
6683
6684 Mon Nov 20 23:47:03 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
6685
6686         * Made joining to a channel working in router environment.
6687
6688         * Cleaned up JOIN command on server side and create function
6689           silc_server_command_join_channel internal routine to make the
6690           joining happen.
6691
6692 Thu Nov  9 21:12:39 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
6693
6694         * Changed silc_command_pending list to SilcDList.  Also, added
6695           `ident' field to SilcServerCommandPending structure to identify
6696           the reply and to call correct callback.
6697
6698           Added silc_server_command_pending_check function to replace the
6699           corresnponding macro.  The silc_command_pending list is not
6700           extern anymore.
6701
6702         * Added silc_command_set_ident into lib/silccore/silccommand.[ch]
6703           to set identifier to previously allocated Command Payload.  It
6704           is used to set identifier for command when resending Command
6705           Payload.
6706
6707         * Added silc_command_payload_encode_payload to encode Command
6708           Payload buffer from SilcCommandPayload structure.
6709
6710         * Added silc_argument_payload_encode_payload to encode Argument
6711           payload buffer from SilcArgumentPayload structure.
6712
6713 Wed Nov  8 21:03:28 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
6714
6715         * Changed WHOIS command to support router connection on server side.
6716           The whois request is always sent to router unless the server is
6717           standalone server.  After server has received the reply from the
6718           router will it send the reply to the client.
6719
6720         * Added silc_server_packet_broadcast into silcd/server.[ch] to
6721           broadcast received broadcast packet.  The function is used only
6722           by router.  The broadcast packet is always sent to the router's
6723           primary route.
6724
6725         * Added silc_id_render function in lib/silcutil/silcutil.[ch] to
6726           render given ID to printable string, for log files for example.
6727
6728 Tue Nov  7 22:14:19 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
6729
6730         * Made basic router to router connections working.  At least they
6731           can now connect to each other but nothing really works the way
6732           they are supposed - yet.
6733
6734         * Added new initiator token to RouterConnection configuration
6735           file in silcd/serverconfig.[ch].  It is used to tell whether we
6736           are the initiator to the remote router or whether we'll expect
6737           the other end to connect.
6738
6739         * Moved registering of listener task to silc_server_init, hence
6740           the server starts listenning as soon as it is run, even if it
6741           does not have connections to other routers.  Let's see how well
6742           this will work.
6743
6744         * Changed default connection retry timeouts for more suitable in
6745           silcd/server.h.
6746
6747         * Removed cipher and such arguments from silc_idlist_add_client
6748           and silc_idlist_add_server prototypes from silcd/idlist.[ch].
6749           Added new function silc_idlist_add_data to add the keys and stuff
6750           to any ID entry.
6751
6752         * Added SilcIDListData structure and added it to SilcClientEntry
6753           and SilcServerEntry as their first field in the structure.  This
6754           way we can explicitly cast the ID entries to the SilcIDListData
6755           structure and get common data for the entries.  In past, we had
6756           to first check what type of connection it is and then cast it to
6757           correct ID entry type.  Now, we can directly cast the opaque
6758           pointer to the SilcIDListData (no matter what ID entry it actually
6759           is) and get the data needed.
6760
6761 Mon Nov  6 21:56:12 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
6762
6763         * Wow, found a bug in scheduler.  The scheduler uninitialized itself
6764           in some circumstances even if threre were timeout tasks, though not
6765           IO tasks, but tasks anyway.  Now fixed.
6766
6767         * Defined SilcServerConnection structure to hold connection specific
6768           stuff about directly connected servers and routers.  The definition
6769           is currently in silcd/server_internal.h.  I thought about having
6770           a bit more important role fro this struct but for now it is used
6771           only when connecting to other server (or router actually).
6772
6773         * Added connecting retry support in server when connecting to
6774           router(s).  The retry feature implement exponential backoff
6775           algorithm.  Also, added SilcServerParams structure to hold default
6776           parameters for server.  For now, it include these retry settings
6777           and are hard coded.  After server is moded to be as Silc Server
6778           Library this structure will be more important.
6779
6780 Sun Nov  5 22:28:44 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
6781
6782         * Changed client librarys channel->clients table to SilcList and
6783           changed code accordingly.
6784
6785 Thu Nov  2 16:28:01 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
6786
6787         * Changed client's channel table to SilcList and changed code 
6788           accordingly.  Also changed SilcChannelClientEntry to include back-
6789           pointer to the channel so that client entry can use that structure
6790           as list as well and we have fast cross-reference to the channel.
6791           This change dramatically decreased the complexity of channel
6792           handling with client entry and vice versa (removed one extra
6793           loop when searching for channel entry from many functions).
6794
6795         * Changed server->sim from table to SilcDList and changed code
6796           accordingly.
6797
6798         * NAMES command can now be used from user interface.  It will show
6799           the user list on the channel, neatly.
6800
6801         * Added realname pointer to SilcClientEntry in lib/silcclient/idlist.h.
6802           Code now saves realname of the user if it becomes available.
6803
6804         * Renamed configure.in to configure.in.pre and made ./prepare
6805           script to automatically add correct version string to
6806           configure.in which it creates from configure.in.pre.
6807
6808 Wed Nov  1 17:21:26 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
6809
6810         * NAMES command reply now shows users mode with the nickname when
6811           joining to channel.
6812
6813         * Moved silc_client_ch[u]mode[_char] functions from 
6814           silc/clientutil.[ch] to lib/silcclient/client.[ch].  Though, that
6815           place sucks, they are utility functions and should be in some
6816           other file.
6817
6818         * Fixed some unsigned int's to unsigned short's.  Patch by cras.
6819
6820         * Fixed contrib/getopt*.[ch] to not require config.h.  Patch by
6821           cras.
6822
6823 Tue Oct 31 20:10:37 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
6824
6825         * Updated README.
6826
6827         * Added TRQ (efficient deque and list library) into lib/trq.  This is
6828           a very good list library that is currently used in the SILC.  Defined
6829           SilcList API over the library because I didn't like the API very
6830           much.  See lib/trq/silclist.h for the API and examples of how to
6831           use the API.  Fixed various places in the code to use the new
6832           SilcList API. The SilcList is meant for lists that has a structure
6833           already defined as a list.  It is not suitable to add just some
6834           context to the list (in TRQ, the context is the list actually).
6835
6836           So, I defined SilcDList that can be used for the purpose where 
6837           predefined list structure does not exit.  This can be used as
6838           such list.  Now some context just can be added to the SilcDList.
6839           Currently this list is not used in the SILC just yet, though there
6840           are a lot places where this can replace dynamically allocated
6841           tables and I will fix these places, later, to use SilcDList.
6842           See lib/trq/silcdlist.h for SilcDList (they are all inline functions,
6843           and use TRQ internally).
6844
6845           Also fixed some annoying warning messages that the original TRQ
6846           code generated.  Also minor changes to TRQ's Makefile.in.
6847
6848         * Added support for querying by Client ID to both WHOIS and 
6849           IDENTIFY commands into server, as required by the protocol.
6850
6851         * Removed method function pointers from SilcBuffer structure. They
6852           weren't used to anything and just increased the context size for
6853           no good reason.  This change also made silc_buffer_alloc and
6854           silc_buffer_free functions inline functions.
6855
6856         * Disabled command flooding detection support until it's fixed so 
6857           that it accepts commands in but does not execute them more than once
6858           in two seconds.
6859
6860         * Added silc_net_localhost(), to return local hostname, into
6861           lib/silcutil/silcnet.[ch].  Also added client->hostname pointer
6862           that must be initialized before calling silc_client_init.
6863
6864         * Added new function: silc_server_send_notify_on_channels to send
6865           notify messages to all channels client has joined.  It is assured
6866           that the message is sent only once per client.
6867
6868         * Moved silc_log_format (from lib/silcutil/silclog.[ch] into
6869           lib/silcutil/silcutil.[ch] as silc_format function.  The new 
6870           function is generic and is used by server as well, not only by
6871           the logging routines.
6872
6873         * Added new SKE status type: SILC_SKE_STATUS_BAD_VERSION to indicate
6874           the provided version string was not acceptable.  Added new function:
6875           silc_ske_check_version into lib/silcske/silcske.h.  The function
6876           must be implemented by the application (client or server) and it
6877           does not reside in the SKE library.  The function checks the version
6878           string remote end sent.
6879
6880         * Added back pointers (to opaque context and to SilcSocketConnection) 
6881           into SilcPacketContext structure into lib/silccore/silcpacket.h.
6882
6883         * Added silc_packet_context_dup into lib/silccore/silcpacket.[ch] to
6884           duplicate packet context structure.
6885
6886         * Changed `notify' client operation to send same arguments as client
6887           receives from server except for ID's.  ID's are mapped to correct
6888           ID entry and that is returned.  Also, if channel entry is not sent
6889           by server but the notify is for channel the channel entry is sent
6890           to application (otherwise application doesn't know that it is for
6891           channel (library gets it from packet's Destination ID)).
6892
6893         * Added silc_client_remove_from_channels into client library to 
6894           remove a client from all channels it has joined to.  Used when 
6895           received SIGNOFF notify from server.  Added also new function
6896           silc_client_replace_from_channels to replace old ID entry with
6897           new ID entry on all channels.  Used when received NICK_CHANGE
6898           notify from server.
6899
6900         * Fixed ID Cache list handling in silc_idlist_get_client in 
6901           lib/silcclient/idlist.c.  Also, added silc_idlist_get_client_by_id
6902           to get (or query) client by ID.
6903
6904         * Updated TODO list.
6905
6906         * Added connection authentication status message defined by the
6907           protocol: SILC_CONN_AUTH_OK and SILC_CONN_AUTH_FAILED and added the
6908           support for these into the code in client and server side.
6909
6910         * Added generic function silc_client_send_command to send any command
6911           with variable argument list.  Application should use this function
6912           to send commands if the command functions provided by the library
6913           does not suite for the application's user interface needs.
6914
6915         * Added new `failure' client operation.  Application is notified about
6916           received failure packet if client is executing a protocol.  In this
6917           case the protocol's execution has failed.
6918
6919         * Added SKE's end notify to send the SKE_SUCCESS notify message that
6920           is required by the protocol.
6921
6922         * Added SILC_PROTOCOL_STATE_FAILURE to indicate received failure
6923           packet from remote.  SILC_PROTOCOL_STATE_ERROR indicates local
6924           error at our end.
6925
6926         * Added status flag to SilcSKE object to indicate realtime status
6927           of the SKE protocol.
6928
6929         * Application receives now exactly same command reply arguments as
6930           the library receives from server.  However, if ID is received the
6931           corresponding ID entry is returned to the application (eg. Client
6932           ID is mapped to correct SilcClientEntry entry and that is returned).
6933           Changed command_reply client operation due to this change.
6934
6935         * Changed all ID's in commands and in command replys as ID Payloads.
6936           Change affected both client and server side codes.
6937
6938           All ID's sent in SILC network (with execption of ID's in SILC
6939           Packet header) are sent in ID Payload to support variable length
6940           ID's.
6941
6942         * Server now notifies nick changes and notifies all clients on
6943           the channels about the new nickname (about the new Client ID,
6944           actually).
6945
6946         * Implemented CMODE command to change channel modes. Supports all
6947           channel modes defined by the protocol specs except ban and invite
6948           lists. (Also, private channel key mode is supported but support for
6949           setting private channel key in client is missing, thus, this mode
6950           has no effect on client side (except that server requires that the
6951           client uses private channel key and normal channel traffic does not
6952           work anymore)).
6953
6954           Also, invite mode works per se, but INVITE command does not work
6955           yet correctly, so you can set channel as invite only channel but
6956           inviting clients to the channel does not work (it is yet to be
6957           thought what's the best way to do it).
6958
6959         * Added new command SILC_COMMAND_CUMODE to change user mode on the
6960           channel.  Defined user modes: CHANNEL_FOUNDER and CHANNEL_OPERATOR.
6961           Implemented CUMODE command to change user's mode on the channel.
6962           Supports all modes defined by the protocol specs.
6963
6964         * Added NAMES command reply to return users modes on the channel.
6965
6966         * Removed unnecessary and slow ciphers from lib/silccrypt.
6967
6968         * Set SO_KEEPALIVE option to connection sockets by default.
6969
6970         * Added new command reply status: SILC_STATUS_USER_NOT_ON_CHANNEL.
6971
6972         * Added notify types: MOTD, CMODE_CHANGE and CUMODE_CHANGE.  Also,
6973           redefined the Notify Payload into protocol specs.
6974
6975         * Added silc_id_payload_parse_id to get ID directly from raw
6976           ID payload data.
6977
6978 Mon Oct  9 20:57:02 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
6979
6980         * Changed SILC_COMMAND_IDENTIFY in protocol specification to 
6981           accept searching by Client ID as well.
6982
6983         * Added support for LEAVE and SIGNOFF notify types in client library.
6984
6985         * Added silc_id_payload_parse_data into lib/silccore/silcpayload.[ch]
6986           to parse ID Payload from raw data.
6987
6988 Sun Oct  8 19:33:08 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
6989
6990         * Added flags parameter into silc_ske_assemble_security_properties
6991           function in lib/silcske/silcske.[ch].
6992
6993         * Changed notify client operation to fit better for notify messages
6994           sent by server.  The notify payload received from server is now
6995           passed to the application (after parsing it to SilcNotifyPayload).
6996           It is application's responsibility to retrieve the arguments
6997           from the payload and show the message the way it wants.  The message
6998           sent by server is implementation specific.
6999
7000         * Changed public keys to comply with the protocol specification.
7001           Old public keys are not supported anymore and are not compatible.
7002
7003         * Removed nickname from Channel Payload as the latest draft removed
7004           it.  The client must resolve the nickname from the NAMES command
7005           reply received when it joined the channel.
7006
7007           Also, changed all channel_xxxx_payload to channel_payload_xxxx.
7008
7009 Sat Oct  7 21:55:01 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
7010
7011         * Fixed some errors in protocol specification drafts.
7012
7013         * Created lib/silccore/silcnotify.c to implement Notify Payload
7014           encoding and decoding, lib/silccore/silcpayload.[ch] to implement
7015           generic payloads described by protocol specifications.  The file
7016           includes implementations for ID Payload and Argument Payload.
7017
7018         * Changed Command Payload implementation to use the new Argument
7019           Payload.  Changed command_xxxx_payload to command_payload_xxxx
7020           to comply with SILC coding conventions.
7021
7022         * Added suppport for Argument Payload handling in Notify Payload
7023           implementation as protocol requires it.  Added the new support
7024           into server and client lib as well.
7025
7026 Thu Oct  5 21:16:28 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
7027
7028         * Added support for multiple nicknames on same channel.  [n] is
7029           added locally to the nickname if there are more than one same
7030           nicknames on the channel.
7031
7032         * Server now sends all nicknames that matched WHOIS request.
7033           Client also shows the list received from server.
7034
7035         * Added TOPIC command to client side.  User can now set and show
7036           current topic on channel.
7037
7038         * Added MOTD command to client and server.  Also, server sends the
7039           motd when client connects to the server.
7040
7041         * Changed version strings to comply ISO 8601.
7042
7043 Wed Oct  4 23:29:06 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
7044
7045         * Fixed protocol error handling in client library.  It should now
7046           cope even if the SKE fails for some reason.
7047
7048         * Made new protocol specification drafts for submitting to IETF.
7049
7050         * Implemented TOPIC command to server in silcd/command.c.
7051
7052         * Added two new notify types into lib/silccore/silcnotify.h:
7053           SILC_NOTIFY_TYPE_NICK_CHANGE and SILC_NOTIFY_TYPE_TOPIC_SET to
7054           notify nickname change and topic setting/change on a channel.
7055
7056         * API change of command_reply operation in client library.  The
7057           application gets now the status type received from server as well.
7058
7059 Sat Sep 30 16:57:42 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
7060
7061         * Removed the function just added to lib/silcutil/silcschedule.[ch].
7062
7063         * Cras fixed and optimized the packet handling even further and
7064           it should work now.  Minor change to the prototype of function
7065           silc_packet_receive_process in lib/silccore/silcpacket.[ch].
7066
7067 Sat Sep 30 08:48:47 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
7068
7069         * Added new function into lib/silcutil/silcschedule.[ch]:
7070           silc_schedule_with_fd to select() a specified fd.  The function
7071           returns after timeout expires or data arrives or goes.  The
7072           function is used by packet routines to wait that all data is
7073           received from network.
7074
7075         * Fixed data reading from network in lib/silccore/silcpacket.c.
7076           The code now assures that all data is read from the fd and then
7077           continues packet processing.  This was a bug fix since the code
7078           used to drop some data in some circumstances.
7079
7080         * Added new function into lib/silcclient/client.[ch]:
7081           silc_client_start_key_exchange to start key exchange after
7082           connection has been established to server.  The code internally
7083           now uses this funtion but its main purpose was to provide it
7084           for applications that perform their own connecting.  After
7085           application has created a connection it merely calls this
7086           function to start the key exchange between client and server.
7087           The library takes care of everything else after that.
7088
7089           Updated also lib/silcclient/README to explain the usage of
7090           this new function.
7091
7092         * Do not send to application information that connection has
7093           been established.  Application gets notified it by connect
7094           operation anyway.
7095
7096 Thu Sep 28 23:40:19 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
7097
7098         * Applied cras's patch to add silc_schedule_one function.  The
7099           function runs scheduler once and returns.
7100
7101         * Fixed the scheduler after cras messed it up.  The timeout
7102           handling works now as it's supposed to work.
7103
7104         * Added into lib/silccore/ silcnotify.h to include notify
7105           message types support.  Changed silc_server_send_notify*
7106           functions, in server.[ch], to support those new notify types.
7107           Added the support for the notify types into client library,
7108           as well.  Added new notify client operation into ops.h in
7109           lib/silcclient/.
7110
7111         * Changed silc_server_packet_send_to_channel to send normal
7112           packets instead of just channel message packets.  The function
7113           is now used to send the notify packets to channels.  It is not
7114           used to send channel message packets anymore, as server never
7115           sends them anymore.
7116
7117         * Added explicit casting into lib/silcutil/silcbuffmt.c to few
7118           va_arg()s as it seems to require it nowadays.  I guess, if SILC
7119           is compiled with older va_arg() the new code should work anyway.
7120
7121 Wed Sep 13 18:10:14 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
7122
7123         * Splitted core library.  Core library (lib/silccore) includes
7124           now only SILC protocol specific core (and common) components.
7125           Created new utility library (lib/silcutil) that includes more
7126           generic purpose stuff.  The stuff for util library was taken
7127           from the old core library.  This was minor and easy split.
7128
7129         * Created SILC Client Library (lib/silcclient) that includes
7130           implementation of the SILC client without user interface.  This
7131           was major move from silc/ directory.  The code has been changed
7132           so that it is transparent towards the user interface.  The
7133           silc/ directory includes now the same user interface as before
7134           and it uses the new client library.  Read lib/silcclient/README.
7135           Basicly, the client library performs everything else related
7136           to SILC except user interface handling.  Also, configuration
7137           files are considered to be part of user interface and library
7138           does not handle them.
7139
7140           This change also changed a lot of structures, function naming etc.
7141           Most important change was that SilcClientWindow object was
7142           renamed to SilcClientConnection in the client library.  Created
7143           also new file lib/silcclient/ops.h.  Also added new files
7144           silc/local_command.[ch] and silc/client_ops.[ch].
7145
7146           All these changes were made to make it easier for user interface
7147           designers to create what ever user interface for the SILC client
7148           they want.
7149
7150           It is also expected that the server will be moved to lib
7151           directory as well and SILC Server Library will be created;
7152           sometimes in the future.
7153
7154         * Removed Local commands from lib/silccore/silccommand.h as
7155           they are application specific and new client library does not
7156           handle any of those anymore.
7157
7158         * Several functions moved to lib/silcutil/silcutilc.[ch] from
7159           old client implementation in silc/.
7160
7161         * Added support for callback functions in SILC_LOG_* macros.
7162           Application can now set its own callbacks that will be called
7163           instead of using the default functions that will always print
7164           the debug messages to stderr (or stdout).  Also, debugging can
7165           now be disabled by setting silc_debug to FALSE and re-enabled by
7166           setting it to TRUE.  Note, that logging will still work even
7167           if debugging is disabled.
7168
7169           New functions in lib/silcutil/silclog.[ch]: silc_log_set_callbacks,
7170           silc_log_reset_callbacks, silc_log_set_debug_callbacks and
7171           silc_log_reset_debug_callbacks.
7172
7173         * To enable debugging in silc client one must give now -d
7174           option on command line.
7175
7176         * Changed silc_schedule_init to automatically allocate task queues
7177           if they are not allocated before calling it.
7178
7179 Thu Sep  7 10:49:33 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
7180
7181         * Added GMP 3.1 into math library.
7182
7183 Sun Aug 20 21:27:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
7184
7185         * Added SILC_PACKET_REMOVE_CHANNEL_USER to remove a client from
7186           a channel in SILC network.  The packet is used by servers and
7187           routers to notify other routers that user has left a channel.
7188           This little feature was missing until now.  Added the feature
7189           to protocol specification as well.
7190
7191           Added functions: silc_server_send_remove_channel_user and
7192           silc_server_remove_channel_user into server.[ch].
7193
7194         * Added SILC_PACKET_REKEY and SILC_PACKET_REKEY_DONE into
7195           lib/silccore/silcpacket.h.  However, they are not implemented
7196           yet.
7197
7198 Sat Aug 19 23:04:16 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
7199
7200         * Fixed joining to a channel and sending channel messages
7201           between server and router.  The channel message sending should
7202           now work inside a cell.
7203
7204 Tue Jul 25 20:46:13 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
7205
7206         * Fixed the private message sending between server and router.
7207           The private message sending should now work inside a cell.
7208
7209         * Added silc_server_replace_id into server.[ch] to replace
7210           existing ID in the SILC network.
7211
7212         * Added silc_idlist_find_server_by, silc_idlist_replace_client_id
7213           and silc_idlist_replace_server_id into idlist.[ch] in server.
7214
7215 Mon Jul 24 18:33:31 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
7216
7217         * Fixed the server to server connections.  Server can again now
7218           connect to router.  Router to router connections probably does
7219           not work just yet.
7220
7221 Thu Jul 20 13:15:01 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
7222
7223         * Added dynamic protocol registering support.  Now protocols can
7224           registered and unregistered on the fly.  Patch by cras.
7225
7226 Wed Jul 19 19:08:46 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
7227
7228         * Added lib/contrib directory to hold routines that some platforms
7229           don't have but are needed by SILC.
7230
7231         * Added getopt.c, getopt1.c and getopt.h from GNU C library
7232           into lin/contrib to provide getopt() and getopt_long() for
7233           those who don't have it.
7234
7235 Tue Jul 18 20:41:20 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
7236
7237         * Added AWAY command to client.  When away message is set and
7238           client receives a private message packet the client automatically
7239           replies to the sender with the away message.
7240
7241         * Fixed a bug in lib/silcmath/mpbin.c: silc_mp_mp2bin.  This
7242           bug seemed to be the cause of recent problems when compiling
7243           with gcc-2.95.
7244
7245         * Added version detection support to SKE protocol specification
7246           and added the new changes to the SKE implementation as well.
7247           There were other minor changes in the SKE protocol as well.
7248
7249           Many changes in lib/silcske/silcske.[ch] and in
7250           lib/silcske/payload.[ch].
7251
7252         * Added ^U functionality, clear input line.  Patch from cras.
7253
7254 Mon Jul 17 23:33:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
7255
7256         * Mainly small bugfixes on core library.  Fixed some debugging
7257           logging and buffer overflow in silclog.c.
7258
7259         * Updated config.sub and config.guess on the distribution tree.
7260
7261 Sat Jul 15 15:33:48 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
7262
7263         * Added command lagging support in server. Client may execute
7264           commands now only once in two seconds.
7265
7266 Thu Jul 13 22:10:21 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
7267
7268         * Optimized packet reception. MAC computation and checking is now
7269           also more optimized.  A lot previously duplicated code is now
7270           used as generic by both client and server.
7271
7272         * Fixed key pair generation in clientutil.c
7273
7274 Wed Jul 12 18:28:07 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
7275
7276         * Added into lib/silccore/silcbufutil.[ch] new function;
7277           silc_buffer_realloc.
7278
7279         * Moved generic packet sending/encryption functions to 
7280           lib/silccore/silcpacket.[ch] from client and server.  Some
7281           rewriting of the functions.
7282
7283         * Moved all generic packet reception/decryption functions to
7284           lib/silccore/silcpacket.[ch] from client and server.  The
7285           packet processing is now much cleaner in both client and server.
7286           These were major changes in both client and server.
7287
7288         * Created many common functions in server to do packet sending.
7289           Previously code were duplicated a lot, this has been removed
7290           with these changes.
7291
7292 Tue Jul 11 20:27:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
7293
7294         * Rewrote major parts of the ID cache system.  Don't know 
7295           whether it is better now or not but at least the API is more
7296           cleaner now.
7297
7298         * Major rewrite on ID cache stuff on client because of the ID
7299           cache API changes.  Added idlist.c to client.
7300
7301         * Also major rewrite on ID cache stuff on server as well.
7302           Major rewrite of idlist.[ch]. SilcXXXList's are now named
7303           SilcXXXEntry's.  We won't keep anymore idlist specific pointers
7304           in hand, instead they are all put into the ID cache system now.
7305           All server_idlist_* routines uses ID cache now instead of
7306           traversing its own lists (those lists does not exist anymore).
7307           SilcIDList though still exists.  Also, SilcXXXEntry's are
7308           now pointers.
7309
7310 Sun Jul  9 15:19:24 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
7311
7312         * Finally made the SKE implementation compliant to the protocol
7313           specification.  All mp integers are now binary encoded as
7314           opposed being HEX encoded.
7315
7316         * Added lib/silcmath/mpbin.[ch].  Encoding mp intergers to and
7317           from binary data.
7318
7319         * Added into lib/silccore/silcutil.[ch] PEM encoding/decoding
7320           functions: silc_[encode/decode]_pem.  Also added function
7321           silc_encode_pem_file to PEM encode with newlines ('\n') for
7322           saving into a file.
7323
7324         * SILC public keys are now encoded either PEM or binary.  Same
7325           option is for private keys as well.  By default private keys
7326           are binary encoded and public keys PEM encoded.  Silly HEX
7327           encoding were removed.
7328
7329         * Added into lib/silccrypt/silchash.[ch] silc_hash_fingerprint
7330           function to create fingerprints.
7331
7332         * Fixed a bug in SHA1; does not change the original data anymore.
7333
7334         * Partly implemented INFO command on client and server side.
7335           Fixed CLEAR command.  Changes to SERVER command; show current
7336           server(s) when giving command without arguments.  Added
7337           VERSION command to client.
7338
7339         * Added check to server that unregistered connections cannot
7340           execute commands (unless it is specificly allowed).
7341
7342 Thu Jul  6 18:12:24 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
7343
7344         * Fixed screen refresh.
7345
7346         * Fixed channel joining bug from client.  On some circumstances
7347           client tried to join to a channel it had already joined.
7348
7349         * Added public key verification process into client's protocol.c.
7350           The client now verifies the public key from user and saves
7351           it into ~./silc/serverkeys/ directory. 
7352
7353           Added into: clientutil.[ch]: silc_client_verify_server_key.
7354
7355         * Changed SKE protocol's silc_ske_initiator_finish function
7356           to accept callback function that verifies the received public
7357           key.  Removed old silc_ske_verify_public_key function.
7358
7359 Wed Jul  5 19:19:02 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
7360
7361         * Added into silcpkcs[ch]: silc_pkcs_public_key[_data]_set and
7362           silc_pkcs_private_key[_data]_set.
7363
7364         * Made the password and public authentication more cleaner in
7365           server's protocol.c.
7366
7367         * Removed historic and obsolete protocol `channel_auth' from
7368           both client and server.
7369
7370         * Removed wrong way of sending command status messages from
7371           server to client in server's command.c.  The old way violated
7372           protocol specification.  
7373
7374           Changes to silccore/silccommand.[ch]: removed
7375           silc_command_encode_status_payload -> not needed anymore,
7376           changed silc_command_encode_payload_va to accept extra
7377           argument on variable argument list.  The argument type must
7378           now be provided to the function.  Also, added new function:
7379           silc_command_encode_reply_payload_va which is same as
7380           normal command_encode_payload_va except command status type
7381           is provided as extra argument.
7382
7383 Tue Jul  4 18:26:39 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
7384
7385         * Added ~./silc directory handling.  The directory includes the
7386           public and private keys for the client.
7387
7388           Added silc_client_check_silc_dir, silc_client_create_identifier
7389           and silc_client_load_keys.
7390
7391         * Implemented SILC protocol compliant public key.  Added public
7392           and private key saving to and loading from files.
7393
7394           Added into silcpkcs.[ch]: silc_pkcs_encode_identifier,
7395           silc_pkcs_public_key_encode[_data], silc_pkcs_public_key_decode,
7396           silc_pkcs_private_key_encode[_data], silc_pkcs_private_key_decode,
7397           silc_pkcs_public_key_alloc, silc_pkcs_public_key_free,
7398           silc_pkcs_private_key_alloc and silc_pkcs_private_key_free.
7399
7400           Implemented: silc_pkcs_save_[public/private]_key[_data] and
7401           silc_pkcs_load_[public/private]_key.
7402
7403 Mon Jul  3 18:51:27 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
7404
7405         * Added silc_server_get_route (route.[ch]) to get connection
7406           data for the fastest route for given ID.
7407
7408         * Implemented INVITE command on client and server.  The command
7409           were re-defined in the SILC Protocol Specification and the
7410           implementation now complies with the specification.
7411
7412         * Implemented PING command on client and server.
7413
7414         * Implemented NAMES command on client and server.  The server side
7415           supports currently only normal server not router server yet.
7416           Some changes to NAMES definition in SILC protocol specification.
7417
7418 Sun Jul  2 18:23:01 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
7419
7420         * Implemented LEAVE command on client and server.
7421
7422         * Previously deprecated SILC_PACKET_FORWARDED flag is now in use 
7423           again.  This change was made to the protocol as well.  Server
7424           should not violate the protocol specification anymore.
7425
7426 Fri Jun 30 14:03:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
7427
7428         * Added SOCKS4 and SOCKS5 support to SILC client.  SOCKS5
7429           was tested.  SOCKS4 was not but should work anyway.