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