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