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