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