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