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