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