More debugs and errors.
[silc.git] / CHANGES
1 Mon Apr  4 15:15:46 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
2
3         * Simplified the invite and ban string handling in the
4           server.  Check for valid invite and ban arguments also.
5           Affected file silcd/server_util.c.
6
7 Sun Apr  3 14:58:53 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
8
9         * Added WATCH list announcing in backup router protocol.
10           Affected files are silcd/command.c, server.c, server_backup.c.
11
12         * Do not change users mode to founder on normal server/backup
13           if the founder mode is set, and user is first one to join.
14           Affected file silcd/pcaket_receive.c.
15
16         * Do not send CUMODE_CHANGE notify back to sender.  Affected
17           file silcd/packet_receive.c.
18
19         * Added getrusage() to take noise in SILC RNG.  A patch by
20           Mika Boström.  Affected files are configure.in.pre,
21           includes/silcincludes.h.in, lib/silccrypt/silcrng.c.
22
23 Sat Apr  2 18:09:30 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
24
25         * Splitted the SILC libraries configuration into a configure
26           fragment into lib/configure.ad.  It is now possible, once
27           this feature is added, to specify whether to compile or not
28           compile included SILC libraries.  Affected files are
29           configure.in.pre, lib/silcmath/mpi/configure.ad,
30           lib/configure.ad, Makefile.defines.pre and
31           Makefile.defines_int.pre.
32
33         * Added --with-silc-includes and --with-silc-libs to configure.
34           If specified the included libs are not compiled, but the
35           specified libs are used.  Pkg-config is not yet supported.
36           Affected file configure.in.pre.
37
38         * Fixed WATCH command handling on backup router.  Router does not
39           send the watch command any more to backup if it originates from
40           backup.  Affected file silcd/command.c.
41
42 Fri Apr  1 18:52:47 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
43
44         * Changed announcing to not announce unregistered clients.
45           Affected file silcd/server.c.
46
47         * Fixed username handling in command reply.  Affected file
48           silcd/command_reply.c.
49
50         * Log files are now 0600.  Affected file lib/silcutil/silclog.c.
51
52 Thu Mar 31 22:34:22 CEST 2005  Patrik Weiskircher <pat@icore.at>
53
54         * Added new define SILC_MACOSX, if __APPLE__ and __MACH__ is defined.
55           Affected file: includes/silcincludes.h.in
56
57         * bool is defined as _Bool on Mac OS X now.
58           Affected file: lib/silcutil/silctypes.h
59
60 Thu Mar 31 08:52:06 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
61
62         * Added support for UTF-8 nicknames, channel names and
63           server names in client library.  Affected files in
64           lib/silcclient/.
65
66         * Added __SILC_HAVE_PTHREAD, __SILC_HAVE_SIM, __SILC_HAVE_LIBIDN,
67           and __SILC_ENABLE_DEBUG to include/silcclient.h for third-party
68           software to check how Toolkit has been compiled.
69
70 Wed Mar 30 22:16:35 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
71
72         * Added silc_utf8_str[n]casecmp into lib/silcutil/silcutf8.[ch].
73
74         * Use silc_utf8_str[n]casecmp instead of strcmp routines
75           in library and in SILC Client when dealing with nicknames
76           and other identifier strings.  Affected file in client lib
77           and irssi.
78
79         * Convert nickname to UTF-8 in /msg and /smsg.  Affected file
80           irssi/src/silc/core/silc-servers.c.
81
82 Wed Mar 30 10:50:02 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
83
84         * Fixed idcache to work with the new identifier strings.
85           Affected file lib/silccore/silcidcache.c.
86
87         * Added UTF-8 hash and compare function for SilcHashTable.
88           Affected file lib/silcutil/silcutil.[ch].
89
90         * Added casefolding stringprep, SILC_CASEFOLD_PREP.
91           Affected file lib/silcutil/silcstringprep.[ch].
92
93         * Changed the identifier string handling to include the original
94           format in client, server, channel entries and normalized
95           format in cache.  Affected files in silcd/.
96
97 Tue Mar 29 16:51:35 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
98
99         * Added support for the new identifier strings and their
100           validity checking.  Nicknames, channel names and usernames
101           can now include practically any kind of letters and various
102           other characters.  Affected files in silcd/ and in libraries.
103
104           NOTE: comparing these strings should now be done with memcmp()
105           to check binary compatibility.  All these strings are normalized
106           and casing is irrelevant.
107
108         * Added silc_identifier_check to lib/silcutil/silcstrutil.[ch]
109           as easy function for applications to check whether identifier
110           strings are valid.
111
112 Tue Mar 29 00:45:11 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
113
114         * Fixed SILC_STRING_LDAP_DN encoding and decoding.  Affected
115           file lib/silcutil/silcutf8.c.
116
117         * Added SILC_STRING_UTF8_ESCAPE to lib/silcutil/silcstrutil.h.
118
119 Mon Mar 28 22:46:23 CEST 2005  Jochen Eisinger <jochen@penguin-breeder.org>
120
121         * Make public key in getkey reply mandatory.  Affected file
122           lib/silcclient/command_reply.c
123
124 Sun Mar 27 19:03:31 CEST 2005  Patrik Weiskircher <pat@icore.at>
125
126         * Added Parameter dont_register_crypto_library to
127           SilcClientParam. If set to TRUE, silcclient library will
128           not initalize the Crypto Libraries and application
129           will need to do it. Affected file lib/silcclient/silcclient.h,
130           lib/silcclient/client.c.
131
132 Sun Mar 27 19:02:48 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
133
134         * Imported new silc_utf8_[encode|decode] routines from
135           my internal SILC 1.1 source tree.  New encodings added:
136           SILC_STRING_LOCALE (SILC_STRING_LANGUAGE is deprecated),
137           SILC_STRING_UTF8, SILC_STRING_PRINTABLE, SILC_STRING_VISIBLE,
138           SILC_STRING_TELETEX, SILC_STRING_NUMERICAL and
139           SILC_STRING_LDAP_DN.
140
141         * Splitted UTF-8 routines into lib/silcutil/silcutf8.[ch].
142
143         * Implemented stringprep (RFC 3454) API.  Internally we use
144           GNU Libidn's stringprep, for now, so it is required now to
145           compile SILC sources.  Added lib/silcutil/silcstringprep.[ch].
146
147         * Added checking for GNU Libidn and --with-libidn to configure.
148
149 Wed Mar 23 11:20:33 CET 2005  Jochen Eisinger <jochen@penguin-breeder.org>
150
151         * If the passphrases entered do not match while generating a new key,
152           completly start over instead of going into an infinite loop asking
153           the user to re-enter the passphrase correctly.  Affected file
154           lib/silcutil/silcapputil.c
155
156 Sun Jan  9 14:28:51 CET 2005  Pekka Riikonen <priikone@silcnet.org>
157
158         * Make sure server is removed from backup list when it is
159           deleted.  Affected files silcd/command.c, server.c,
160           server_util.c.
161
162         * Close socket when connecting to router fails.  Affected
163           file silcd/server.c.
164
165 Tue Jan  4 13:06:26 CET 2005  Jochen Eisinger <jochen@penguin-breeder.org>
166
167         * Adopt configuration toolchain to current auto-tools.
168           Affected files prepare, irssi/configure.in
169         * Revert most of the UTF-8 fixes to SILC Client 1.0.1.  Will
170           redo that.  Affected files irssi/src/silc/core/client_ops.c,
171           irssi/src/fe-common/silc/fe-silc-channels.c
172         * Take over command line options into silcclient data structure.
173           Affected file irssi/src/silc/core/silc-core.c
174
175 Wed Dec  8 16:15:11 CET 2004  Pekka Riikonen <priikone@silcnet.org>
176
177         * Do not try to initiate backup resuming protocol forever.
178           Affected file silcd/server_backup.c.
179
180 Wed Nov 24 18:24:05 CET 2004  Pekka Riikonen <priikone@silcnet.org>
181
182         * ID change in resuming has to be done before changing
183           detached client's modes, since the ID change may fail and
184           leave ghosts on the network.  Affected file is
185           silcd/packet_receive.c.
186
187 Tue Nov 23 16:54:35 CET 2004  Pekka Riikonen <priikone@silcnet.org>
188
189         * Fixed Win32 scheduler to not stuck anymore.  A patch from
190           Juha Räsänen.  Affected file is
191           lib/silcutil/win32/silcwin32schedule.c.
192
193         * Fixed QoS parsing for connection blocks in server.  Affected
194           file is silcd/serverconfig.c.
195
196         * Fixed server statistics increasing in server.  Affected file
197           is silcd/server.c.
198
199         * The CLOSE command now marks backup router as self disconnected
200           to avoid resuming problems.  Affected file silcd/command.c.
201
202 Wed Sep 22 19:46:32 CEST 2004  Patrik Weiskircher <pat@icore.at>
203
204         * When using silc_net_create_connection[_async], and your system can
205           create IPv6 sockets, it will try to connect to the IPv6 host.
206           Now it tries to connect to an IPv4 host if IPv6 fails. Affected
207           file lib/silcutil/unix/silcunixnet.c
208
209 Fri Jun 18 19:26:58 CEST 2004  Pekka Riikonen <priikone@silcnet.org>
210
211         * Check for valid route when receiving packet from router and
212           when routing it to local server in the cell.  A patch from
213           Matt Miller.  Affected files silcd/router.c and server.c.
214
215 Sat May  1 13:55:54 CEST 2004  Patrik Weiskircher <pat@icore.at>
216
217         * Couldn't detach and reattach twice, because of the previous
218           commit. Affected file silcd/packet_receive.c
219
220 Fri Apr 30 19:40:28 CEST 2004  Patrik Weiskircher <pat@icore.at>
221
222         * Added check to ignore Port value if Initiator is FALSE.
223           Remote router coudln't connect if Port was set. Affected file
224           silcd/serverconfig.c
225
226         * If some client tries to resume more than once at the same time,
227           server crashed. Router didn't crash, but showed odd behaviour
228           (didn't allow clients to join anymore, ..). Affected files
229           silcd/packet_receive.c silcd/idlist.h
230
231 Mon Mar 15 21:10:08 EET 2004  Pekka Riikonen <priikone@silcnet.org>
232
233         * Destroy the file transfer session in silc_client_file_close
234           with timeout.  Affected file lib/silcclient/client_ftp.c.
235
236         * Call SFTP server monitor in READ and WRITE after the actual
237           operations.  Affected file lib/silcsftp/sftp_server.c.
238
239 Wed Mar 10 21:30:02 EET 2004  Pekka Riikonen <priikone@silcnet.org>
240
241         * Create one configure script from configure fragments
242           (configure.ad).  This is a first step towards new distribution
243           system.  Affected files prepare, configure.in.pre,
244           lib/silcmath/mpi/configure.ad.
245
246 Wed Mar 10 18:35:24 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
247
248         * Removed expiring of client key pair.  Affected file is
249           irssi/src/silc/core/clientutil.c
250
251 Tue Mar  9 17:11:58 EET 2004  Pekka Riikonen <priikone@silcnet.org>
252
253         * Check the number of connections from real number of
254           connections instead of socket number, when deciding if
255           server is full.  Affected files are silcd/server.c,
256           server_internal.h and silcd.c.
257
258         * Clarified the connections_max meaning in General section
259           in doc/example_silcd.conf.in.
260
261         * The reconnect_keep_trying default value set to TRUE
262           if it is not defined in the config file.  Affected file
263           silcd/serverconfig.c.
264
265 Wed Mar  3 15:13:49 CET 2004  Pekka Riikonen <priikone@silcnet.org>
266
267         * Fixed crashbug in connection closing, after a protocol
268           completion callback, which might have closed it already.
269           Affected file silcd/server.c.
270
271         * Fixed rekey with PFS in backup router.  It did not allow
272           rekeys with PFS, and when the rekey protocol timedout
273           it crashed the backup router without the above fix.  Affected
274           file silcd/packet_send.c and server.c.
275
276 Sat Feb 28 16:25:09 EET 2004  Pekka Riikonen <priikone@silcnet.org>
277
278         * The silc_client_add_channel_private_key now returns the
279           private key context if pointer is given as argument.
280           Affected files are lib/silcclient/silcclient.h and
281           client_channel.c.
282
283         * Added support for using channel private keys in SILC
284           Client Library even if the private key mode is not set
285           on the channel.  Affected file lib/silcclient/client_channel.c.
286
287         * The channel private key used to decrypt message is now
288           delivered to the application in the 'channel_messageÃ' client
289           operation.  Affected files are lib/silcclient/silcclient.h
290           and client_channel.c.
291
292         * Fixed wrong arg type for user limit in CMODE command reply.
293           Affected file silcd/command.c.
294
295         * The user limit is now taken and saved to SilcClientEntry in
296           JOIN and CMODE command replies and in CMODE_CHANGE notify.
297           Affected files lib/silcclient/silcclient.h, command_reply.c
298           and client_notify.c.
299
300         * Added support to the new private message key indicator
301           packet.  Added a new function to the client library:
302           silc_client_send_private_message_key_request.  The sender
303           indicates to be initiator, and receiver is responder.
304           Added the indicator to the SilcClientEntry as 'prv_resp'
305           boolean.  Affected files are lib/silcclient/silcclient.h
306           client.[ch], and client_prvmsg.c.
307
308 Fri Feb 27 11:25:26 CET 2004  Pekka Riikonen <priikone@silcnet.org>
309
310         * Fixed the JOIN command calling when called with both
311          -auth and -founder.  Affected file is lib/silcclien/command.c.
312
313 Wed Feb 25 23:12:11 EET 2004  Pekka Riikonen <priikone@silcnet.org>
314
315         * Check watcher list for resumed clients as well.  Affected
316           file is silcd/packet_receive.c.
317
318 Tue Feb 24 16:49:10 EET 2004  Pekka Riikonen <priikone@silcnet.org>
319
320         * Implemented the user limit to the CMODE_CHANGE notify,
321           CMODE command reply and JOIN command reply in server.
322           Affected files are silcd/server.c, command.c, command_reply.c,
323           packet_send.c and packet_receive.c.
324
325 Mon Feb 23 23:31:15 EET 2004  Pekka Riikonen <priikone@silcnet.org>
326
327         * Defined SILC_STRFMT_END that must be used now with
328           silc_buffer_strformat, instead of SILC_STR_END.  Fixes
329           crashes on AMD64.  Affected files are lib/silcutil/silcbuffmt.h,
330           lib/silcclient/silcvcard.c, silcd/server_util.c.
331
332         * Fixed the adding of public key to the WATCH list in server.
333           Fixed the WATCH notify sending to client.  Affected files
334           are silcd/packet_send.[ch], command.c, server_util.c.
335
336         * Implemented the watching by public key in the SILC Client
337           Library and SILC Client.  Affected files are
338           lib/silcclient/command.c and client_notify.c.
339
340 Mon Feb 23 09:30:30 CET 2004  Pekka Riikonen <priikone@silcnet.org>
341
342         * Added support for public key watching in server.  Affected
343           files are silcd/server.c, server_internal.h, command.c,
344           server_util.c.
345
346 Sun Feb 22 19:03:59 EET 2004  Pekka Riikonen <priikone@silcnet.org>
347
348         * Added public key to the SIlcClientEntry.  Affected files
349           are lib/silcclient/silcclient.h, command_reply.c, idlist.c
350
351         * Fixed the get_clients_whois reply processing to return
352           exactly same entries server returned.  Makes it possible
353           to search using attributes.  Affected file is
354           lib/silcclient/idlist.c.
355
356 Sat Feb 21 19:21:57 EET 2004  Pekka Riikonen <priikone@silcnet.org>
357
358         * Save founder key to SilcChannelEntry.  Affected files are
359           lib/silcclient/silcclient.h, command_reply.c, idlist.c.
360
361 Fri Feb 20 20:37:38 EET 2004  Pekka Riikonen <priikone@silcnet.org>
362
363         * Call the monitor callback with _CLOSED status from the
364           silc_client_file_close.  Affected files are
365           lib/silcclient/client_fpt.c, silcclient.h
366
367         * Added silc_client_get_clients_whois which resolves using
368           WHOIS, and supports requested attributes as well.
369           Affected files are lib/silcclient/silcclient.h, idlist.c.
370
371 Fri Feb 19 21:09:22 EET 2004  Pekka Riikonen <priikone@silcnet.org>
372
373         * Added support for asking the destination filename where
374           the downloaded file is saved in the file transfer.  Affected
375           files are lib/silccilent/silcclient.h, client_ftp.c.
376
377 Wed Feb 18 02:46:17 EET 2004  Pekka Riikonen <priikone@silcnet.org>
378
379         * Fixed error handling in resuming data processing.  Affected
380           files are lib/silcclient/client_resume.c and client.c.
381
382 Tue Feb 17 19:34:30 EET 2004  Pekka Riikonen <priikone@silcnet.org>
383
384         * Fixed silc_client_send_private_message to return TRUE correctly.
385           Affected file lib/silcclient/client_prvmsg.c.
386
387         * Added topic to the SilcChannelEntry.  Affected files are
388           lib/silcclient/silcclient.h, command_reply.c, client_notify.c.
389
390 Fri Feb 13 14:19:14 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
391
392         * Use conn->cmd_ident for all silc_client_command_call()s.  Affected
393           file lib/silcclient/command.c
394
395 Fri Feb 13 13:53:45 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
396
397         * Convert all commands to UTF-8 before passing them to the
398           client library.  Still need to convert replies from UTF-8 to
399           the locale encoding.  Affected file
400           irssi/src/silc/core/silc-cmdqueue.c
401
402 Fri Feb 13 13:13:07 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
403
404         * redirect all silc_client_command_calls through a queueing framework.
405           This fixes /CYCLE and the annoying "nick change after auto-joining
406           a channel".  Furthermore it defines one central point where
407           command parameters can be UTF-8-ified.  Affected files
408           irssi/src/silc/core/Makefile, client_ops.c, silc-channels.c,
409           silc-servers.[ch], silc-core.c, silc-cmdqueue.[ch], silc-lag.c
410
411 Fri Feb 13 12:04:41 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
412
413         * use asynchronous connect() to establish router connections.
414           Fixes problem when the primary router goes down.  Affected files
415           silcd/server.c, silcd/server_backup.c
416
417 Thu Feb 12 20:09:59 EET 2004  Pekka Riikonen <priikone@silcnet.org>
418
419         * Added SILC_[32|64]_TO_PTR and SILC_PTR_TO_[32|64] macros.
420           Fixed various compilation warnings when type casting ints
421           to pointers or vice versa, of different size.  Updates around
422           the source free.
423
424 Tue Feb  3 23:25:17 EET 2004  Pekka Riikonen <priikone@silcnet.org>
425
426         * Surrogates not allowed in UTF-8 strings, updated decoder.
427           Affected file lib/silcutil/silcstrutil.c.  Added UTF-8
428           testers in lib/silcutil/tests/ directory.
429
430 Wed Jan 14 18:42:44 EET 2004  Pekka Riikonen <priikone@silcnet.org>
431
432         * Added SILC_CLIENT_CONN_ERROR_KE, ERROR_AUTH, ERROR_RESUME and
433           ERROR_TIMEOUT SilcClientConnectionStatus errors.  Affected
434           files are lib/silcclient/silcclient.h, client.c.
435
436 Mon Jan 12 13:01:10 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
437
438         * When resuming a session fails, notify the user that the session
439           file needs to be removed eventually.  Affected files
440           irssi/src/fe-common/silc/module-formats.[ch],
441           irssi/src/silc/core/client_ops.c.
442
443 Tue Jan 04 12:16:04 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
444
445         * Added DIST_SUBDIRS symbols to include all subdirs in distributions.
446           Affected files lib/silcutil/Makefile.am, lib/silcmath/Makefile.am
447
448         * Typofix in Irssi::Silc module.  Affected file
449           irssi/src/perl/silc/Silc.xs.
450
451 Tue Jan 04 02:43:44 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
452
453         * Changed the way NOTICE flagged messages are treated. Added support
454           for notices in queries and signing notices.  Affected files
455           irssi/default.theme; irssi/docs/help/in/notice.in;
456           irssi/src/fe-common/silc/module-formats.[ch], fe-silc-messages.c;
457           irssi/src/silc/core/client_ops.c, silc-channels.c, silc-servers.c
458
459         * Fixed typo in /ACTION help.  Affected file
460           irssi/docs/help/in/action.in
461
462 Mon Jan 03 23:26:38 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
463
464         * Fixed typo in perl module.  Affected file
465           irssi/src/perl/silc/Server.xs
466
467         * Changed the way ACTION flagged messages are treated. Added support
468           for actions in queries and signing actions.  Affected files
469           irssi/default.theme; irssi/docs/help/in/action.in;
470           irssi/src/fe-common/silc/module-formats.[ch], fe-silc-messages.c,
471           fe-silc-queries.c; irssi/src/silc/core/client_ops.c, silc-channels.c,
472           silc-servers.[ch]
473
474 Mon Jan 03 16:04:29 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
475
476         * Incorrectly reported error when client had to be resolved from
477           server in /SMSG.  Affected file irssi/src/silc/core/silc-servers.c
478
479 Sat Jan  3 16:37:15 EET 2004  Pekka Riikonen <priikone@silcnet.org>
480
481         * Fixed whois public key hash table deleting and adding in
482           detached client case.  Affected file silcd/packet_receive.c.
483
484 Sat Jan 03 12:15:38 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
485
486         * Changed filenames of silc/fe module not to collide with filenames
487           from core/fe.  Also seperated public messages printing from
488           query messages printing.  Affected files are all in
489           irssi/src/fe-common/silc.
490
491 Sat Jan  3 12:18:07 EET 2004  Pekka Riikonen <priikone@silcnet.org>
492
493         * Fixed the invite process handling during joining to use
494           correct server name for the client that is matched against
495           the invite string for the channel.  Wrong server name caused
496           inability to join the channel.  Affected file is
497           silcd/command.c.
498
499 Fri Jan  2 23:34:17 EET 2004  Pekka Riikonen <priikone@silcnet.org>
500
501         * Fixed the CUMODE channel founder authentication on normal
502           server to not remove the founder rights on existing founder
503           before checking that router accepts the mode change.  Affected
504           files are silcd/command.c and silcd/packet_receive.c.
505
506         * Remove the server entry correctly when rekey timeouts and
507           remote router connection on normal server is closed.  Fixes
508           a crash where server uses the freed server entry.  Affected
509           file silcd/server.c.
510
511 Fri Jan 02 10:28:15 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
512
513         * Add /SILCNET [ADD|REMOVE|LIST] command to manage different SILC
514           networks.  This is the first step in solving the bug about
515           /SERVER ADD -silcnet <silcnet>.  Affected files
516           irssi/docs/in/silcnet.in; irssi/src/fe-common/silc/Makefile.am,
517           fe-silcnet.c, fe-common-silc.c, module-formats.[ch];
518           irssi/src/silc/core/silc-chatnets.[ch], silc-core.c, Makefile.am
519
520 Thu Jan 01 20:11:32 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
521
522         * /SMSG and /MMSG now correctly create new queries. Affected files
523           irssi/src/fe-common/silc/fe-messages.c, irssi/scripts/silc-mime.pl
524
525         * Add basic support for SILC protocol specific variables in perl.
526           Affected files irssi/src/perl/silc/*, irssi/configure.in,
527           irssi/src/perl/Makefile.am
528
529 Wed Dec 31 17:06:55 CET 2003  Jochen Eisinger <jochen@penguin-breeder.org>
530
531         * Don't use silc_get_input, it's obviously not reliable.  Fixes
532           issue when the current key expires.  Affect file
533           irssi/src/silc/core/clientutils.c
534
535         * Make the session data filename configurable.  This makes it
536           possible to have different session files for different
537           SILC networks.  Affected files irssi/src/silc/core/silc-core.c,
538           client_ops.[ch], silc-servers.c,
539           irssi/src/silc/fe-common/silc/module-formats.[ch]
540
541         * Use the same set of libtool files for the MPI lib as for the
542           rest of the toolkit.  Affected files lib/silcmath/mpi/config.guess,
543           config.sub, configure.in, install-sh, missing, mkinstalldirs
544
545 Sun Dec 28 21:57:39 EET 2003  Pekka Riikonen <priikone@silcnet.org>
546
547         * Fixed server statistics decrementing error to not go to
548           negative.  Affected file silcd/packet_receive.c.
549
550 Sat Dec 20 14:42:36 EET 2003  Pekka Riikonen <priikone@silcnet.org>
551
552         * Use silc_server_query_add_error to add error in public key
553           search error.  Added support in send_reply to send errors
554           without specific argument.  Affected file silcd/server_query.c.
555
556         * Fixed the WHOIS, IDENTIFY and WHOWAS error handling in SILC
557           Client for NO_SUCH_NICK.  It was against the protocol specs.
558           Affected file irssi/src/silc/core/client_ops.c.
559
560         * Added backwards support for the wrong NO_SUCH_NICK error sending
561           in server.  To be removed in SILC Server 1.0.  Both old clients
562           and clients with fixed error handling now works.  Affected file
563           silcd/server_query.c.
564
565 Sat Dec 20 00:44:47 CET 2003  Patrik Weiskircher <pat@icore.at>
566
567         * fixed a bug in the whois using attributes function where no
568           error was sent if no nickname and client id but the attributes were
569           given to whois. Affected file silcd/server_query.c
570
571 Tue Dec 16 21:34:59 CET 2003  Patrik Weiskircher <pat@icore.at>
572
573         * remove public key from public key hashtable on detach. Affected
574           file silcd/packet_receive.c
575
576         * free public key hashtable before removing clients on server
577           shutdown. Affected file silcd/server.c
578
579         * remove public key prior deleting client-data on killing a client.
580           Affected file silcd/server_util.c
581
582 Sat Dec 06 21:35:14 CET 2003  Patrik Weiskircher <pat@icore.at>
583
584         * Getting the MOTD from other servers works now. Affected
585           files are silcd/command.c and silcd/command_reply.c
586
587 Thu Dec 04 11:33:46 CET 2003  Jochen Eisinger <jochen@penguin-breeder.org>
588
589         * Initialize the variable idletag, since it is tested in
590           silc_core_deinit for its default value.  Affected file
591           irssi/src/silc/core/silc-core.c
592
593 Sun Nov 30 19:47:02 CET 2003  Patrik Weiskircher <pat@icore.at>
594
595         * Fixed signed channel messages across cells. Affected file
596           silcd/packet_send.c
597
598 Fri Nov 28 19:13:21 EET 2003  Pekka Riikonen <priikone@silcnet.org>
599
600         * Changed the SILC_LOG_* macros to not be empty if SILC_DEBUG
601           is not defined.  They can now be safely used in if-statements
602           without braces.  Affected file lib/silcutil/silclog.h.
603
604         * Added the checks for backup closing connection due to error
605           (local or remote) and thus not allow the resuming to occur
606           in reconnect.  Affected files are silcd/packet_send.c
607           and server.c.
608
609 Tue Nov 25 15:20:59 EET 2003  Pekka Riikonen <priikone@silcnet.org>
610
611         * Help file updates.  Affected files in irssi/src/docs/help/in/.
612
613 Wed Nov 23 20:51:21 CET 2003  Patrik Weiskircher <pat@icore.at>
614
615         * Fixed channel messages across cells. Affected file
616           silcd/packet_send.c
617
618 Wed Nov 12 11:34:56 EET 2003  Pekka Riikonen <priikone@silcnet.org>
619
620         * Fixed file transmission accepting in client library to not
621           start the negotiation if user hasn't accepted the transfer,
622           instead create new session for resent transfer.  Affected
623           file lib/silcclient/client_ftp.c.
624
625         * Show the session ID in the file transmision list.  Remove
626           session from list that failed to transfer.  Switch the current
627           session automatically after transmission, and in errors, to new
628           session if other sessions exists in the transfer list.  Affected
629           files are irssi/src/silc/core/silc-servers.c,
630           irssi/src/fe-common/silc/modfule-formats.c.
631
632 Mon Nov 10 14:41:40 CET 2003  Jochen Eisinger <jochen@penguin-breeder.org>
633
634         * Fixed MIME header parsing for the hopefully last time.  Affected
635           file lib/silcutil/silcstrutil.c
636
637 Mon Nov 10 13:03:46 EET 2003  Pekka Riikonen <priikone@silcnet.org>
638
639         * Rewrote the PKCS#1 routines.  Added lib/silccrypt/silcpkcs1.[ch].
640
641         * The SILC RNG is now gauranteed to return non-zero random
642           values.  Affected files are lib/silccrypt/silcrng.[ch].
643
644 Sun Nov  9 20:44:56 EET 2003  Pekka Riikonen <priikone@silcnet.org>
645
646         * Fixed nickname formatting when changing only case of the
647           nickname.  Affected file lib/silcclient/idlist.c.
648
649 Sun Nov  9 19:33:59 CET 2003  Jochen Eisinger <jochen@penguin-breeder.org>
650
651         * Fixed a memory leak and incorrect printing of the "appears as"
652           message.  Affected file irssi/src/silc/core/client_ops.c
653
654 Sun Nov  9 17:45:11 EET 2003  Pekka Riikonen <priikone@silcnet.org>
655
656         * Added CRT (Chinese Remainder Theorem) supported RSA
657           private keys and private key operations.  This significantly
658           increases private key operation efficiency.  No compatibility
659           issues with new or old private keys.  Affected files are
660           lib/silccrypt/rsa.[ch], rsa_internal.h and pkcs1.c.
661
662 Sat Nov  8 13:08:53 EET 2003  Pekka Riikonen <priikone@silcnet.org>
663
664         * Fixed GCC-3.3.2 related compilation warnings from the
665           source tree.
666
667 Fri Nov  7 23:01:47 EET 2003  Pekka Riikonen <priikone@silcnet.org>
668
669         * Removed RC6 from distributions.
670
671 Fri Nov  7 19:38:42 EET 2003  Pekka Riikonen <priikone@silcnet.org>
672
673         * Added some better comments to lib/silccrypt/silcpkcs.h,
674           optimized some routines in lib/silccrypt/silcpkcs.c.
675           Added test_silcpkcs into lib/silccrypt/tests/.
676
677         * Fixed silc_rng_global_init to actually init the global RNG
678           if RNG wasn't provided for it.  Affected file is
679           lib/silccrypt/silrng.c.
680
681 Thu Nov  6 21:08:28 EET 2003  Pekka Riikonen <priikone@silcnet.org>
682
683         * Added silc_hash_table_find_by_context_ext.  Affected files
684           lib/silcutil/silchashtable.[ch].
685
686         * Save the public key on normal server in WHOIS command reply
687           from attributes, if present, and add it to public key hash
688           table.  Fixes WHOIS resolving by public key on normal server.
689
690           Optimized the attributes resolving on normal server to not
691           resolve if we resolved them already from router.
692
693           Affected files are silcd/server_query.c, command_reply.c.
694
695 Wed Nov  5 19:36:30 CET 2003 Patrik Weiskircher <pat@icore.at>
696
697         * Added support for whois using attributes.
698           Affected files silcd/command_reply.c, silcd/packet_receive.c,
699           silcd/server.c, silcd/server_internal.h, silcd/server_query.c,
700           silcd/server_util.c
701
702         * Added support for whois using public key attribute to /WHOIS i
703           client command. Affected files irssi/docs/help/in/whois.in,
704           irssi/src/silc/core/silc-servers.c, lib/silcclient/command.c
705
706 Wed Nov  5 23:37:36 EET 2003 Pekka Riikonen <priikone@silcnet.org>
707
708         * Fixed UMODE setting in server when the client has anonymous
709           mode set.  The mode setting was not working.  Affected file
710           silcd/command.c.
711
712 Mon Nov  2 11:36:08 CET 2003 Jochen Eisinger <jochen@penguin-breeder.org>
713
714         * Fixed some bugs and typos related to sending split messages.
715           Print notification when sending messages with /MMSG.  Affected
716           files irssi/scripts/silc-mime.pl, irssi/src/silc/core/client_ops.c
717
718 Fri Oct 31 12:33:59 EET 2003 Pekka Riikonen <priikone@silcnet.org>
719
720         * Optimized the socket referencing in packet routines, client
721           library and server.  Affected files are lib/silccore/silcpacket.c,
722           lib/silcclient/client.c and silcd/server.c.
723
724         * If silc_socket_set_qos is given with NULL arguments the QoS is
725           reset from the socket.  Affected files are
726           lib/silcutil/silcsockconn.[ch].
727
728 Thu Oct 30 21:23:24 CET 2003 Jochen Eisinger <jochen@penguin-breeder.org>
729
730         * Add a /LISTKEYS command which lists the locally cached
731           client and server keys.  Affected files
732           irssi/src/fe-common/module-formats.[ch],
733           irssi/src/silc/core/silc-{channels,servers}.c
734           irssi/docs/help/in/listkeys.in
735
736 Thu Oct 30 20:23:40 EET 2003 Pekka Riikonen <priikone@silcnet.org>
737
738         * Check that packet queue purging was successful.  Affected
739           files lib/silcclient/client.c and silcd/packet_send.c.  Related
740           to MAC failed errors.
741
742         * Do not clear the inbuf even if it is empty if QoS was applied
743           to it.  Otherwise the QoS data is cleared and MAC failed error
744           will occur.  Affected file lib/silccore/silcpacket.c.
745
746         * Use the rekey period time as rekey protocol timeout value.
747           If the rekey does not succeed during the rekey period there's
748           something very wrong, and we most likely end up with wrong keys,
749           do graceful reconnect then.   Affected file silcd/server.c.
750
751         * Take reference of the socket in the parser context, as it's
752           possible to have the parsers in queue after the socket is
753           disconnected and this may cause crash.  Affected files are
754           lib/silccore/silcpacket.c, lib/silcclient/client.c and
755           silcd/server.c.
756
757 Thu Oct 30 17:01:01 EET 2003 Pekka Riikonen <priikone@silcnet.org>
758
759         * Fixed KICK command reply sending, it sent to replies.
760           Affected file silcd/command.c.
761
762 Wed Oct 30 14:06:52 CET 2003 Jochen Eisinger <jochen@penguin-breeder.org>
763
764         * Finish the silc-mime.pl script. It now supports MIME type
765           guessing using magic files, signing data messages, executing
766           MIME handlers in background. Affected files
767           irssi/scripts/silc-mime.pl and irssi/docs/help/in/mmsg.in
768
769         * Changed MIME signal handler to make things easier for the perl
770           script. Affected files irssi/src/silc/core/client_ops.c,
771           silc-servers.c, and irssi/docs/signals.txt
772
773         * Cleaned up the silc_mime_parse function and fixed detection
774           of wrapped header lines. Affected file lib/silcutil/silcstrutil.c
775
776 Sun Oct 26 21:19:02 EET 2003 Pekka Riikonen <priikone@silcnet.org>
777
778         * Resolve the IP for file transfer listener from the connection
779           socket.  Affected file lib/silcclient/client_ftp.c.
780
781         * Accept NULL hostname parameter in the functions
782           silc_net_check_[local|remote]_by_socket.  Do not reverse lookup
783           if hostname is not wanted.
784
785 Fri Oct 24 21:24:12 CEST 2003  Jochen Eisinger <jochen@penguin-breeder.org>
786
787         * Fixed race condition between silc_client_init and
788           my_silc_scheduler. Affected file irssi/src/silc/core/silc-core.c
789
790 Fri Oct 24 16:43:40 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
791
792         * Fixed file transfer connection closing when SIGNOFF for
793           the client is received from server.  Affected file is
794           lib/silcclient/client_ftp.c.
795
796 Tue Oct 21 13:35:57 CEST 2003  Pekka Riikonen <priikone@silcnet.org>
797
798         * Check for disconnected socket in QUIT callback.  Affected
799           file silcd/command.c.
800
801 Thu Oct 21 09:43:17 CEST 2003  Jochen Eisinger <jochen@penguin-breeder.org>
802
803         * Modified the MIME parsing to allow \n and \r\n as delimiters.
804           Affected files lib/silcutil/silcstrutil.c
805
806         * Cleaned up the escape/unescape functions for correctness and
807           speed. Affected file irssi/src/silc/core/client_ops.c
808
809         * Removed handling for data messages with Content-Type: text/*,
810           moved parsing of MIME headers to the signal handler, added
811           support for signing and verifying data messages. Affected
812           files are irssi/docs/signals.txt, irssi/src/silc/core/client_ops.c,
813           irssi/src/silc/core/silc-{servers,channels}.c
814
815         * Added a perl script for handling data messages based on
816           information read from Mailcap files. New file
817           irssi/scripts/silc-mime.pl
818
819 Mon Oct 20 16:08:22 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
820
821         * Added new SILC_MESSAGE_FLAG_ACK that can  be used to
822           acknowledge recepetion of a message to the sender.  Updated
823           protocol specs.
824
825 Sat Oct 18 11:55:33 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
826
827         * Unregister channel key saving callback when deleting channel.
828           Affected file lib/silcclient/idlist.c.
829
830         * Do not remove the client from channels in NOTIFY_TYPE_SIGNOFF
831           before calling notify client operation.  Affected file is
832           lib/silcclient/client_notify.c.
833
834         * Unregister QoS tasks when deleting the socket connection.
835           Affected files lib/silcutil/silcsockconn.[ch],
836           unix/silcunixsockconn.c.
837
838         * Implemented latest presence-attrs draft changes.  Affected
839           files lib/silccore/silcattrs.h and
840           irssi/src/silc/core/silc-queries.c.
841
842 Tue Oct 14 18:24:53 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
843
844         * Save old channel keys in list to allow more rapid change
845           of channel keys if server for some reason does that.  This
846           avoids loosing so many channel messages due to not having
847           key to decrypt.  Affected file lib/silcclient/silcclient.h,
848           idlist.c and client_channel.c.
849
850 Mon Oct 13 21:37:47 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
851
852         * Continued backup router tests and fixes.  Affected files
853           silcd/server_backup, server_util.c, server.c.  See TODO.
854
855 Sun Oct 12 19:58:18 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
856
857         * Fixed SERVER_SIGNOFF handling in servers.  The client
858           was removed from wrong list thus not removing the client
859           at all.  Affected file silcd/packet_receive.c.
860
861         * Do not execute rekey protocol for disabled connections as
862           it would never go through.  Affected file silcd/server.c.
863
864         * Added timeout for rekey protocol to catch if the protocol
865           never executes successfully.  Affected files silcd/server.c
866           and protocol.h.
867
868 Sat Oct 11 15:39:22 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
869
870         * Abandon packet processing for disconnected sockets.  Check
871           this always after calling packet processing callback.
872           Affected file lib/silccore/silcpacket.c.
873
874         * Fixed double registration disconnection code in server.
875           Closed wrong connection.  Affected file silcd/packet_receive.c.
876
877 Fri Oct 10 16:27:12 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
878
879         * On normal server reconnect to primary during resuming 4
880           times, then give up.  Affected file silcd/server_backup.c.
881
882         * If during reconnecting to routers we notice we have router
883           connection but no primary router set, the server is in desync.
884           Reconnect to primary to restore network.  Affected file
885           silcd/server.c.
886
887         * Assure that only one protocol is exeucting at the same time.
888           Added checks for all protocols.  Affected files are
889           silcd/server.c and server_backup.c.
890
891 Thu Oct  9 20:24:09 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
892
893         * Check that a string is not already part on invite/ban
894           string when processing it.  Affected file silcd/server_util.c.
895
896 Thu Oct  9 12:06:40 CEST 2003  Pekka Riikonen <priikone@silcnet.org>
897
898         * Fixed the CUMODE_CHANGE for founder mode changes to comply
899           with 1.2 version of the protocol.  Affected file is
900           silcd/packet_receive.c.
901
902 Wed Oct  8 19:41:15 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
903
904         * ERR_BAD_PASSWORD now returns the Channel ID of the channel
905           where the passphrase was given.  Affected file is
906           silcd/command.c.
907
908 Wed Oct  8 09:32:12 CEST 2003  Pekka Riikonen <priikone@silcnet.org>
909
910         * INVITE and BAN notifys are now delivered from routers to
911           servers (but not clients) on the channel.  Updated specs and
912           code.  Affected files silcd/packet_[send|receive].[ch],
913           command.c, server.c and server_util.c.
914
915         * Implemented INVITE and BAN announcing.  Affected files are
916           silcd/server.[ch], server_util.c.
917
918         * Implemented SilcStatus error type argument returning in
919           command reply error in server.  Affected file silcd/command.c.
920
921         * Implemented SilcStatus argument returning in comand reply
922           in client library.  The command_reply client operation now
923           returns error specific arguments as well.  Affected files
924           are lib/silcclient/command_reply.[ch], client_resume.c,
925           lib/silccore/silcstatus.[ch].
926
927 Sun Oct  5 20:22:08 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
928
929         * Backup router protocol version 1.2 implemented.  Testing still
930           required.  Affected files in silcd/server_backup.[ch], server.c,
931           packet_receive.c and server_internal.h.
932
933 Sun Oct  5 12:36:37 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
934
935         * silc_client_send_[channel|private]_message now return TRUE
936           or FALSE.  Affected file lib/silcclien/client_channel.c and
937           client_prvmsg.c.
938
939 Thu Oct  2 17:03:09 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
940
941         * Check for explicit nickname in INVITE and BAN processing
942           during join as well (and don't expect only wildcards in
943           invite/ban strings).  Affected file silcd/command.c.
944
945         * Fixed the INVITE and BAN by public key.  The public key saved
946           is the PK payload (as specified) not the raw data.  Affected
947           file silcd/server_util.c.
948
949 Wed Oct  1 20:29:06 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
950
951         * UTF-8 text message support for actions and notices in SILC
952           Client.  Affected file irssi/src/silc/core/client_ops.c.
953
954         * silc_get_username and silc_get_real_name now returns sensible
955           data on Win32.  Patch by Toni Willberg.  Affected file is
956           lib/silcutil/win32/silcwin32util.c.
957
958 Sun Aug 24 23:35:19 CEST 2003  Jochen Eisinger <c0ffee@penguin-breeder.org>
959
960         * Provide a signal handler to send MIME encoded messages and emit
961           a signal when a MIME encoded message is received. Also document
962           the signals for usage with the perl interface.
963
964           A sample perl script will be supplied at a later point.
965
966           Affected files are irssi/docs/signals.txt,
967           irssi/src/silc/core/client_ops.[ch],
968           irssi/src/silc/core/silc-{channels,servers}.c
969
970 Sun Aug 24 12:58:30 CEST 2003  Jochen Eisinger <c0ffee@penguin-breeder.org>
971
972         * Use SILC_COMMAND_PING to estimate the round-trip time to the
973           server. Use this time to display a lag and disconnect when it
974           exceeds a specified limit.
975
976           Affected files are irssi/src/silc/core/silc-{lag,core}.c.
977
978 Mon Aug 11 17:14:17 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
979
980         * Remove the channel auth list in normal server if router
981           encofrces its list during connecting.  Send notify to channel
982           to remove the mode to remove the list.  Affected files are
983           silcd/server_util.c and silcd/packet_receive.c.
984
985 Wed Aug  6 14:52:04 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
986
987         * Added support for channel public keys.  Updated protocol specs
988           and implemented it.  Affected files are
989           silcd/command.c, command_reply.c, lib/silcclient/command.c,
990           lib/silcclient/command_reply.c.
991
992 Wed Jul 23 12:17:01 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
993
994         * Ignore SIGXFSZ and SIGXCPU signals in server.  They can
995           terminate the process on Linux.  Affected file silcd/silcd.c.
996
997 Mon Jun  2 19:13:27 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
998
999         * Check for NULL buffer in silc_buffer_clear.  Affected file
1000           is lib/silcutil/silcbuffer.h.
1001
1002         * Simplified the backup router protocol by removing the _GLOBAL
1003           types.  Updated protocol specs and the code.  Affected files
1004           are silcd/server_backup.[ch].
1005
1006 Thu Apr 24 19:50:25 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1007
1008         * Deny '@' and '!' from nicknames since they are reserved
1009           by the SILC_COMMAND_INVITE and SILC_COMMAND_BAN commands.
1010           Updated protocol specs and the code.
1011
1012           Affected files are silcd/server_util.[ch].
1013
1014 Wed Apr  9 18:51:59 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1015
1016         * Fixed stack overflow in Irssi SILC client.  Affected
1017           file irssi/src/silc/core/client_ops.c.
1018
1019         * Check that Host is set in ServerConnection and RouterConnection
1020           in silcd.conf.  Affected file silcd/serverconfig.c.
1021
1022         * Fixed crash in server with protocol completion callbacks,
1023           namely rekey and backup resuming protocols.  Affected files
1024           are silcd/server_backup.c and silcd/server.c.
1025
1026         * Fixed rekey protocol to not restart if it is started already.
1027           Affected files are lib/silcclient/client.c and
1028           silcd/server.c.c
1029
1030 Mon Mar 17 18:35:24 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1031
1032         * Rewrote SilcList, affected file lib/silcutil/silc*list.h.
1033
1034         * Fixed EOF handling in SILC Config, affected file
1035           lib/silcutil/silcconfig.c.
1036
1037         * Fixed buffer overflows in lib/silcutil/silcstrutil.c.
1038
1039         * Fixed RESOLVING flag handling in JOIN notify and other
1040           notifys to handle the resolvings correctly in client library.
1041           Affected file lib/silcclient/client_notify.c.
1042
1043         * Do not send full INVITE and BAN lists in INVITE and BAN
1044           notifys, only the changed information.  Affected file
1045           silcd/command.c.
1046
1047         * Fixed INVITE notify sending in INVITE command, send it
1048           only when needed.  Affected file silcd/command.c.
1049
1050         * Handle the founder key change properly in CMODE_CHANGE
1051           notify.  Bug #122.  Affected file silcd/packet_receive.c.
1052
1053 Sun Mar  9 16:29:20 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1054
1055         * Remove the mark for output (mark it only for input) after
1056           purging outgoing queue.  Prevents the "Error in select()"
1057           floods.  Affected file silcd/packet_send.c.
1058
1059         * Fixed incorrect connection deletion from client library
1060           after calling "connect" client operation.  Could cause
1061           crashes for example during reconnect timeouts.  Affected
1062           files are lib/silcclient/client.c and
1063           irssi/src/silc/core/client_ops.c.
1064
1065         * Check server private key file permissions before starting
1066           the server.  Affected file silcd/serverconfig.c.
1067
1068 Tue Feb  4 22:53:26 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1069
1070         * NULL terminate allocated string in silc_buffer_strformat.
1071           Affected file lib/silcutil/silcbuffmt.c.
1072
1073         * Rewrote the invite/ban list string handling in server to
1074           use SilcBuffer instead.  Affected files are silcd/command.c
1075           and silcd/server_util.c.
1076
1077 Mon Feb  3 14:43:52 CET 2003  Pekka Riikonen <priikone@silcnet.org>
1078
1079         * Fixed double free in CMODE command when setting new HMAC
1080           for channel.  Affected file silcd/command.c.
1081
1082         * Added couple of missing memset's to zero sensitive memory.
1083           Affected files silcd/command.c, lib/silcclient/command.c.
1084
1085 Sun Jan 26 12:20:30 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1086
1087         * Fixed a double free in INVITE command error handling in
1088           server.  Affected file silcd/command.c.
1089
1090         * Added macros SILC_SWAB_[16|32] to swab byte order of
1091           16-bit and 32-bit unsigned integers.  Affected file
1092           lib/silcutil/silctypes.h.
1093
1094         * Use the SILC_SWAB_16 instead of htons() in server when
1095           handling ports since the ports in structures are always
1096           in little-endian order (regardless of platform).  Affected
1097           file silcd/serverid.c and silcd/server_backup.c.
1098
1099 Tue Jan 21 17:18:04 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1100
1101         * Send DISCONNECT in close admin command in server.  Affected
1102           file silcd/command.c.
1103
1104         * Check whether we are already connecting to a remote router
1105           (in addition of checking whether we are already connected)
1106           before creating new connection.  Affected file silcd/server.c.
1107
1108 Thu Jan 16 18:47:00 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1109
1110         * Added better compiler and compiler flags checking in
1111           configure.
1112
1113         * Check that socket is valid after QoS is applied to data.
1114           Affected file lib/silcutil/unix/silcunixsockconn.c.
1115
1116         * Make sure the socket connecetion is not closed to early
1117           when closing connection in server.  Also make sure the
1118           connection is always closed after error in a protocol.
1119           Affected file silcd/server.c.
1120
1121 Wed Jan 15 11:03:36 CET 2003  Pekka Riikonen <priikone@silcnet.org>
1122
1123         * Removed --session and --dummy options from Irssi SILC Client.
1124           -d option is available only if --enable-debug was given.
1125           Affected files are irssi/src/silc/core/silc-core,
1126           irssi/src/core/session.c and irssi/src/fe-text/silc.c.
1127
1128 Tue Jan 14 12:25:09 CET 2003  Pekka Riikonen <priikone@silcnet.org>
1129
1130         * Added silc_buffer_steal to steal the data from the buffer.
1131           Affected file lib/silcutil/silcbuffer.h.
1132
1133 Sat Jan 11 18:16:29 CET 2003  Giovanni Giacobbi <giovanni@giacobbi.net>
1134
1135         * Fixed server crash with double Primary block in config file.
1136
1137           Fixed also various memory leaks around the config file
1138           parser.  Affected files lib/silcutil/silcconfig.c,
1139           silcd/serverconfig.c.
1140
1141         * Changed my nickname (Johnny Mnemonic) to my real name, this
1142           means that bugs introduced by him were actually introduced
1143           by me!
1144
1145 Tue Jan  7 21:58:53 CET 2003  Jochen Eisinger <c0ffee@penguin-breeder.org>
1146
1147         * Don't display "foo appears as foo\nYou're now known as foo"
1148           messages.  Affected file irssi/src/silc/core/client_ops.c
1149
1150 Tue Jan  7 20:08:15 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1151
1152         * Fixed error handling of invalid client entry when calling
1153           commands in server.  Fixes a crash.  Affected file
1154           silcd/command.c.
1155
1156 Thu Dec 26 14:19:29 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1157
1158         * Added some sanity checks in server for correctness of the
1159           server configuration.  Affected file silcd/serverconfig.c.
1160
1161 Fri Dec 20 10:47:59 CET 2002  Pekka Riikonen <priikone@silcnet.org>
1162
1163         * Prevent endless resolving of user informations in USERS
1164           command by checking the command reply status correctly.
1165           Affected file lib/silcclient/command_reply.c.
1166
1167 Tue Dec 17 10:05:00 CET 2002  Pekka Riikonen <priikone@silcnet.org>
1168
1169         * Fixed file writing on WIN32 to use O_BINARY flag.  Affected
1170           file is lib/silcutil/silcfileutil.c.  A patch by Matthew
1171           Aldous <Matthew@Aldous.com>.
1172
1173         * Added better implementation using CriticalSection of
1174           SilcMutex on WIN32.  A patch by Mikko Lähteenmäki
1175           <mikko.lahteenmaki@pikabaana.net>.
1176
1177         * Added some Winsock WIN32 compatiblity defines into
1178           includes/silcwin32.h.
1179
1180 Mon Dec 16 19:33:05 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1181
1182         * Fixed double free in async host lookup code.  Affected file
1183           lib/silcutil/silcsockconn.c.
1184
1185         * On backup router handle now the SERVER_SIGNOFF from router
1186           for local connected servers too, and close the connections.
1187
1188           Do not process them as normally signing off servers when they
1189           really signoff by sending EOF fe, but always assume that
1190           router sends the SERVER_SIGNOFF.
1191
1192           Affected files silcd/server.c and silcd/packet_receive.c.
1193
1194         * Fixed socket unsetting when closing connections.  Affected
1195           files silcd/server.c and silcd/packet_send.c.
1196
1197         * Do not print the nickname in SERVER_SIGNOFF if we do not
1198           have it.  Prevents asserts in Irssi core.  It is possible we
1199           don't have the nick if it was just being resolved when server
1200           signoff.  Affected file irssi/src/silc/core/client_ops.c.
1201
1202 Thu Dec 12 23:22:50 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1203
1204         * Fixed autonick crashbug in client library.  Affected file
1205           lib/silcclient/client.c.
1206
1207         * Fixed Unix implementation of SilcMutex to really assert if
1208           the mutex is locked/unlcoked already.  Affected file
1209           lib/silcutil/unix/silcunixmutex.c.
1210
1211         * Fixed locking in silc_schedule_uninit.  It didn't lock
1212           when dispatching timeout tasks.  Affected file is
1213           lib/silcutil/silcschedule.c.
1214
1215         * Changed Win32 implementation of SilcThread to use modern
1216           Win32 interface.  Affected file is
1217           lib/silcutil/win32/silcwin32thread.c  A patch by Mikko L.
1218
1219 Thu Dec 12 12:06:59 CET 2002 Jochen Eisinger <c0ffee@penguin-breeder.org>
1220
1221         * Don't print signed messages when sending failed.  Affected files
1222           irssi/src/silc/core/silc-[servers.c/commands.h]
1223
1224         * Send adquate signal when founding a channel by joing it.  Affect
1225           file irssi/src/silc/core/client_ops.c
1226
1227 Wed Dec 11 21:46:19 CET 2002 Jochen Eisinger <c0ffee@penguin-breeder.org>
1228
1229         * Fix theme abstracts parsing.  Affected files irssi/default.theme,
1230           irssi/src/fe-common/core/themes.c
1231
1232 Wed Dec 11 20:20:07 EET 2002 Pekka Riikonen <priikone@silcnet.org>
1233
1234         * Fixed close command to use the port correctly when closing
1235           server connections.  Affected file silcd/idlist.c.
1236
1237         * Check for NULL outbuf in silc_socket_write.  It is possible
1238           that it is NULL is some odd case.  Affected files are
1239           lib/silcutil/[unix/win32]/silc[unix/win32]sockconn.c.
1240
1241         * Do not call final protocol callback for backup router
1242           resuming protocol when closing connection.  It is closed
1243           by timeout in case of error.  Affected file silcd/server.c.
1244
1245         * Backup reconnect to router if backup resuming protocol
1246           failed.  Affected file silcd/server_backup.c.
1247
1248 Wed Dec 11 10:01:26 CET 2002 Pekka Riikonen <priikone@silcnet.org>
1249
1250         * Fixed double free in SKE library error hadling when signature
1251           error occurred.  Affected file lib/silcske/silcske.c.
1252
1253         * Save the fingerprint to new SilcClientEntry after changing
1254           nickname.  Affected file lib/silcclient/client_notify.c.
1255
1256         * Print SIGNOFF in Irssi SILC client only if the nickname is
1257           known.  Prevents asserts in Irssi core.  It is possible we
1258           don't have the nick if it was just being resolved when it
1259           quit.  Affected file irssi/src/silc/core/client_ops.c.
1260
1261 Tue Dec 10 21:47:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1262
1263         * Fixed double free in invite list adding code when adding
1264           invite strings.  Affected file silcd/server_util.c.
1265
1266 Fri Dec  6 17:40:24 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1267
1268         * More log printing during backup router protocol.  Affected
1269           file silcd/server_backup.c.
1270
1271         * Removed backwards support for old private key file format.
1272           Affected file lib/silccrypt/silcpkcs.c.
1273
1274         * Removed backwards support for not-so-strict decryption length
1275           check, it's strict now.  Affected lib/silccrypt/silccipher.c.
1276
1277         * GETKEY to update the client entrys fingerprint too.
1278           Affected file lib/silcclient/command_reply.c.
1279
1280         * Added --without-libtoolfix for package builders using weird
1281           wrappers around libtool (BSD at least).
1282
1283 Thu Dec  5 22:29:46 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1284
1285         * Fixed backup router bugs:  When backup resumes router and
1286           receives a CHANNEL_MESSAGE packet the backup must not act
1287           as router since the packet header decryption would be
1288           different.  Also, when relaying packets to channel, do
1289           not re-encrypt packets on backup that came from the primary
1290           since the connection isn't really router-router connection.
1291           Affected files silcd/server.c, silcd/packet_send.c.
1292
1293         * Added checks in encryption/decryption that encryption/decryption
1294           length sent as argument really is multiple by block size.  Helps
1295           catching really weird bugs like the above backup router bugs
1296           when packets are being decrypted in wrong way.  Affected files
1297           lib/silccore/silcpacket.c, and lib/silccrypt/silccipher.c.
1298
1299         * Fixed padding generation in private key file encryption.
1300           Affected file lib/silccrypt/silcpkcs.c.
1301
1302 Thu Dec  5 16:35:23 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1303
1304         * Added ignore_message_signatures setting which can be used
1305           to ignore signatures in messages.  Affected files are
1306           irssi/src/silc/core/client_ops.c, silc-core.c.
1307
1308         * Fixed the libtoolfix to use command line options instead of
1309           environment variables.  They didn't work as expected.  Now,
1310           the libtool is fully run-time configurable.
1311
1312 Wed Dec  4 21:08:52 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
1313
1314         * Verify signature payload for signed messages. Affected files
1315           irssi/src/silc/core/client_ops.h, irssi/src/silc/core/silc-servers.c,
1316           irssi/src/silc/core/silc-core.h
1317
1318         * Display signature verification result in public and private
1319           messages using theme abstracts. See irssi/default.theme for
1320           examples on their usage. Affected files
1321           irssi/default.theme, irssi/src/fe-common/silc/fe-messages.h,
1322           irssi/src/fe-common/silc/module-formats.[ch],
1323           irssi/src/fe-common/silc/fe-common-silc.c,
1324           irssi/src/fe-common/silc/Makefile.am
1325           irssi/src/fe-common/core/fe-messages.[ch]
1326
1327         * Fixed bugs in Irssi's theme parsing. Affected files
1328           irssi/src/fe-common/core/themes.c
1329
1330 Wed Dec  4 18:29:13 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1331
1332         * Calculate the correct length for signed messages before
1333           encrypting, it must be multiple by block size.  Affected
1334           file lib/silccore/silcmessage.c.
1335
1336         * silc_message_signed_get_public_key returns now both
1337           decoded and encoded public key.  Affected files are
1338           lib/silccore/silcmessage.[ch].
1339
1340         * Added libtoolfix script that makes the libtool more generic
1341           and configurable in run-time.  Now we can specify in run-time
1342           if what kind of libraries we want to create, regardless of
1343           configuration.  SIMs are now creates even if --disable-shared
1344           was explicitly given.
1345
1346 Tue Dec  3 23:26:55 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1347
1348         * Fixed founder key sending in CMODE command in client.
1349           Affected file lib/silcclient/command.c.
1350
1351         * Fixed CUMODE founder authentication in server to not check
1352           for client's public key since it's not supposed to do that.
1353           Affected file silcd/command.c.
1354
1355 Tue Dec  3 12:02:41 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
1356
1357         * Set realname and hostname in NICK_REC records. Affected file
1358           irssi/src/silc/core/silc-nicklist.c
1359
1360 Mon Dec  2 20:50:20 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1361
1362         * Remove 1.0 protocol backwards compat code from client
1363           library.
1364
1365         * Added more reliable check for whether nickname did change
1366           or not, or whether only Client ID changed in NICK_CHANGE
1367           notify.  Affected file lib/silcclient/client_notify.c.
1368           Fixes bug in '@' character handling in a nickname.
1369
1370         * Added support for automatically parsing signature from
1371           the message payload.  Added new function
1372           silc_message_get_signature to return the payload to
1373           application.  Affected files lib/silccore/silcmessage.[ch].
1374
1375         * Changed the private_message and channel_message client
1376           operations to deliver the SilcMessagePayload to the
1377           application too.  Application can use it fe. to get the
1378           signature from the message for verification.  Affected
1379           file lib/silcclient/silcclient.h, client_channel.c and
1380           client_prvmsg.c.
1381
1382         * Redefined the signed payload for message payloads.
1383           Updated protocol specs and implemented.
1384
1385 Mon Dec  2 16:28:29 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1386
1387         * Fixed wrong invite and ban list handling in server command
1388           reply.  Affected files are silcd/command_reply.c,
1389           silcd/server_util.[ch].
1390
1391 Sun Dec  1 20:48:17 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1392
1393         * Fixed CMODE setting in server when founder mode was set.
1394           Affected file silcd/command.c.  Bug #95.
1395
1396         * Added support to setting specific public key in CMODE in
1397           Irssi SILC client.  Affected file lib/silcclient/command.c.
1398
1399         * Added support to use specific public key in CUMODE in
1400           Irssi SILC Client.  Affected file lib/silcclient/command.c.
1401
1402         * Added support for inviting and banning by public key in
1403           Irssi SILC client.  Affected file lib/silcclient/command.c.
1404
1405         * Fixed fingerprint/babbleprint showing in invite and ban
1406           list command replys.  Affected file is
1407           irssi/src/silc/core/client_ops.c.
1408
1409 Sun Dec  1 16:32:03 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
1410
1411         * Format CMODE +c and +h to display both the mode and the argument
1412
1413 Sun Dec  1 18:17:22 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1414
1415         * Added test vectors and test programs for SHA-1, MD5,
1416           HMAC-SHA1 and HMAC-MD5.  New tests are located in
1417           lib/silccrypt/tests/.  Fixed also argument decoding bug in
1418           MD5 implementation.  Affected file lib/silccrypt/md5.c.
1419
1420         * Changed the channel private key and private message key
1421           generation (with static keys) to use SHA1 instead of MD5,
1422           as SHA1 is the mandatory hash function in SILC.  Affected
1423           file lib/silcclient/client_[channel/prvmsg].c.
1424
1425         * Changed the private key file encryption to use SHA1 instead
1426           of MD5.  Added support for the old generation and added
1427           automatic change of the key (to be removed later).  Affected
1428           files lib/silccrypt/silcpkcs.c.
1429
1430 Sat Nov 30 19:07:52 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1431
1432         * Load only files with .pub suffix in PublicKeyDir.  Affected
1433           file silcd/serverconfig.c.
1434
1435 Sat Nov 30 14:29:34 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
1436
1437         * Extended the SILC_SERVER_LOG_ERROR macro to all available logging
1438           channels.  Affected files silcd/silcd.c, silcd/server.h.
1439
1440         * Added the config directive PublicKeyDir for the client block.
1441           Affected files doc/exampe_silcd.conf.in, silcd/serverconfig.[ch].
1442
1443 Sat Nov 30 09:30:55 CET 2002  Pekka Riikonen <priikone@silcnet.org>
1444
1445         * Merged Toni's irssi/silc.conf patch.
1446
1447         * ROBODoc cleanup patch to lib/silccrypt/silcpkcs.h by johnny.
1448
1449         * Max alloc tests in allocation routines.  Affected file
1450           lib/silcutil/silcmemory.c.
1451
1452 Fri Nov 29 23:44:29 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1453
1454         * Fixed a typo in resuming code that fixed detach/resume code
1455           in server.  Bug #93.  Affected file silcd/packet_receive.c.
1456
1457 Thu Nov 28 17:17:11 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
1458
1459         * Do reverse lookups for server when /connecting. Affected files
1460           irssi/silc.conf, irssi/src/core/servers.c, irssi/src/core/network.c,
1461           irssi/src/core/net-nonblock.*
1462
1463 Thu Nov 28 16:19:18 CET 2002  Pekka Riikonen <priikone@silcnet.org>
1464
1465         * Added library versioning for shared libraries.  Affected
1466           files configure.in.pre and lib/Makefile.am.pre.
1467
1468 Wed Nov 27 21:51:52 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
1469
1470         * Display INVITE and BAN lists as specified by SILC 1.2
1471
1472 Wed Nov 27 16:01:11 CET 2002  Pekka Riikonen <priikone@silcnet.org>
1473
1474         * Do not send invite list back unless asked (when sending
1475           no arguments) or when list was modified.  Affected file
1476           silcd/command.c.
1477
1478         * Remove client from invite list in KILLED notify and in
1479           KILL command.  Affected file silcd/command.c and
1480           silcd/server.[ch].
1481
1482         * Fixed bugs in invite list handling in INVITE command.
1483           Affected files silcd/command.c and silcd/server_util.c.
1484
1485         * Merged with Irssi 0.8.6.
1486
1487         * Fixed UTF-8 in Irssi SILC Client, setlocale was missing.
1488           Affected file irssi/src/fe-text/silc.c.
1489
1490 Mon Nov 25 18:21:43 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1491
1492         * The silc_argument_get_[first/next] now return the argument
1493           type to caller.  Added silc_argument_payload_encode_one.
1494
1495           Affected files are lib/silccore/silcargument.[ch].
1496
1497         * Added support for the SILC 1.2 INVITE command and new
1498           invite lists to server.  Affected files are silcd/command.c,
1499           silcd/server_util.[ch] and silcd/packet_[receive/send].[ch].
1500
1501         * Added support for the SILC 1.2 BAN command and new
1502           ban lists to server.  Affected files are silcd/command.c,
1503           silcd/server_util.[ch] and silcd/packet_[receive/send].[ch].
1504
1505         * Added support to client sending new INVITE command.  Affected
1506           file is lib/silcclient/command.c.
1507
1508         * Added support to client sending new BAN command.  Affected
1509           file is lib/silcclient/command.c.
1510
1511         * Added support for removing client from invite list when kicked
1512           from channel, as SILC 1.2 dictates.  Affected files are
1513           silcd/packet_receive.c and silcd/command.c.
1514
1515 Sun Nov 24 18:26:42 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1516
1517         * If iv argument to silc_cipher_[encrypt/decrypt] is NULL, use
1518           automatically the cipher's internal IV.  Affected files
1519           lib/silccrypt/silccipher.[ch].
1520
1521         * Assure the RESUME_CLIENT packet is not sent to twice to
1522           backup router if the detached client was originated from
1523           the backup.  Affected file silcd/server.c.  Bug #76.
1524
1525         * Changed silc_sim_symname to not allocate memory.  Affected
1526           file lib/silcsim/silcsimutil.c.
1527
1528         * Fixed memory leaks with SIMs in server.  Affected files
1529           silcd/serverconfig.c, silcd/server.c.
1530
1531         * Fixed channel key distribution after resuming detached
1532           client.  Affected files silcd/packet_receive.c.
1533
1534         * Fixed channel's global_user boolean checking after detaching.
1535           Check it after changing the owner of the client not before.
1536           Affected file silcd/packet_receive.c.
1537
1538         * Fixed few double frees from client library.  Fixes at least
1539           Bug #81, possibly others too.
1540
1541         * UTF-8 decode topics also in JOIN command reply and TOPIC_SET
1542           notifys in Irssi SILC Client.  Affected file is
1543           irssi/src/silc/core/client_ops.c.  Bug #82.
1544
1545         * Applied Ville Räsänen's manual page and --mandir bugfix
1546           patch.  Affected files are configure.in.pre and Makefile.am.pre.
1547           Bug #88.
1548
1549 Fri Nov 22 18:34:20 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1550
1551         * Added support to backup router protocol for backup to tell
1552           normal server that it cannot use the backup router as primary
1553           because the primary isn't really down.  Updated protocol
1554           specs.
1555
1556         * Added support for primary router to tell backup router that
1557           resuming is not possible because the backup really isn't primary
1558           in the cell.  For example if backup disconnected itself the
1559           resuming is not allowed since the primary really did not
1560           go down.  Updated protocol specs.
1561
1562         * Removed MARS from crypto library.
1563
1564         * Defined the CTR mode and Randomized CBC mode in SILC.  The
1565           CTR mode is RECOMMENDED now in specification.  Defined also
1566           Serpent cipher as optional cipher.  Updated the protocol specs.
1567
1568 Thu Nov 21 12:43:28 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1569
1570         * Added support for inviting/banning by IP/MASK, public key,
1571           and explicit Client ID.  Redefined the command and notify
1572           types to allow easier forwards support for other methods
1573           of inviting/banning.  Updated protocol specs.
1574
1575         * Remove the client from channel's invite lists if the client
1576           is kicked or killed.  Updated protocol specs.
1577
1578         * Unified the Channel Message Payload and Private Message
1579           into one Message Payload.  Updated protocol specs and
1580           implemented.
1581
1582 Tue Nov 19 22:30:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1583
1584         * Don't wait for EOF after socket error has occurred, but
1585           close the connection.  Affected file is silcd/server.c.
1586
1587 Mon Nov 18 18:58:26 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1588
1589         * Added support for setting FOUNDER mode on channel with
1590           specific public key which can be set with CMODE command.
1591           Updated protocol specs and implemented in client and server.
1592
1593         * Fixed the Irssi SILC client to correctly shutdown the client
1594           library to avoid memory leaks.  Affected files are
1595           irssi/src/silc/core/silc-core.c and silc-servers.c.
1596
1597         * Deprecated the No Reply flag in SKE protocol and introduced
1598           "IV Included" flag which can be used to indicate that the IV
1599           is included in the ciphertext.  This makes it possible to use
1600           SILC on unreliable transport, such as UDP which may cause
1601           packet reordering and losses.  Updated protocol specs, did
1602           not implement yet.
1603
1604 Sun Nov 17 15:50:57 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1605
1606         * Fixed the MPI implementation of silc_mp_sizeinbase to return
1607           < 32 bit values in correct size.  Affected file is
1608           lib/silcmath/mp_mpi.c.
1609
1610 Sat Nov 16 13:14:45 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1611
1612         * Fixed the KE Start Payload parsing to check that mandatory
1613           fields are present.  Affected file lib/silcske/payload.c.
1614
1615         * Fixed compilation warnigs in Irssi SILC Client.  Affected
1616           files are irssi/src/silc/core/silc-query.c. client_ops.c.
1617
1618 Thu Nov 14 19:33:28 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
1619
1620         * Print "nick now appears as newnick" and update Irssi's nicklist
1621           when you change your nick to "nick". Closes #62
1622
1623         * Never format your own nick. Closes #63
1624
1625 Thu Nov 14 09:44:54 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
1626
1627         * SILC_UMODE_GONE changes are now propagated correctly to the
1628           Irssi client. Closes #54
1629
1630 Tue Nov 12 19:42:18 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
1631
1632         * Fixed example in /HELP KEY
1633
1634         * Added expando $j which expands to current SILC Client version
1635
1636 Tue Nov 12 19:46:39 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1637
1638         * Fixed public key decoding in crypto library.
1639
1640         * Added better error printing to SKE library.
1641
1642 Tue Nov 12 08:50:12 CET 2002  Pekka Riikonen <priikone@silcnet.org>
1643
1644         * Fixed NICK command to not crash if nickname was not sent.
1645
1646 Mon Nov 11 19:32:00 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1647
1648         * Added Encrypt-Then-MAC order to SILC packet MAC generation.
1649           Deprecated the old Encrypt-And-MAC order.  Updated protocol
1650           specs and implemented.
1651
1652         * Added Encrypt-Then-MAC order to Channel Message Payload MAC
1653           generation.  Updated specs and implemented.
1654
1655 Sun Nov 10 12:20:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1656
1657         * Added support for rekey before 2^32 sequence number wraps.
1658           Affected files in server and client library.
1659
1660         * Padding must be at least 8 bytes now.  Implemented and updated
1661           protocol specs.
1662
1663         * Compute maximum padding for authentication packets to make
1664           passphrase approximation attacks impossible.  Affected files
1665           in client library and in server.
1666
1667         * Fixed PING command sending in client library and handling in
1668           server.  The server ID must be ID Payload, not raw ID data.
1669           Affected files in server and client library.
1670
1671         * Defined that all public keys sent in commands and notify
1672           payloads are actually Public Key Payloads not raw public key
1673           data.  Updated protocol specs and implemented.
1674
1675         * Updated protocol version to 1.2.  Updated specs and code.
1676
1677         * Added ERR_UNSUPPORTED_PUBLIC_KEY and ERR_OPERATION_ALLOWED
1678           status types.  Updated specs and the code.
1679
1680         * Added support for normal client to kill its own entries from
1681           the network.  Updated protocol specs and the code.
1682
1683         * Defined the SILC_MESSAGE_FLAG_SIGNED.  Updated protocol specs
1684           and added initial implementation.
1685
1686         * Added MAC field to the Private Message Payload to protect
1687           against chosen ciphertext attacks.  Updated the protocol specs
1688           and implemented.
1689
1690         * Added idle and signon fields to the ATTRIBUTE_SERVICE
1691           attribute to indicate the user's current idle and signon time
1692           of a service.  Updated protocol specs and implemented.
1693
1694 Thu Nov  7 19:21:10 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1695
1696         * Added "do_not_bind" argument to silc_client_file_send what
1697           can be used to not bind locally but assume the file receiver
1698           provides the point of connect.  Usefull when sender is behind
1699           NAT device.  Affected file lib/silcclient/silcclient.h and
1700           client_ftp.c.
1701
1702         * Added -no-listener option to FILE SEND command in Irssi SILC
1703           client.  Affected file irssi/src/silc/core/silc-servers.c.
1704           Renamed FILE RECEIVE to FILE ACCEPT.
1705
1706         * Confirm passphrase for private key encryption in
1707           silc_create_key_pair and silc_change_private_key_passphrase.
1708           Affected files are lib/silcutil/silcapputil.c.
1709
1710 Thu Nov  7 10:05:28 CET 2002  Pekka Riikonen <priikone@silcnet.org>
1711
1712         * Move silc_client_packet_send back to internal, added
1713           silc_client_send_packet, a bit simpler function for application.
1714           Affected files lib/silcclient/silcclient.h, client.c and
1715           client_internal.h.
1716
1717         * Moved the SilcClientEntry, SilcChannelEntry and
1718           SilcServerEntry to silcclient.h to be public and documented
1719           them for application.  Affected files are
1720           lib/silcclient/silcclient.h and idlist.h.
1721
1722 Wed Nov  6 17:18:13 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1723
1724         * Fixed manual page installation patch by Ville Räsänen.
1725           USERS help page fix patch by Ville Räsänen
1726
1727         * Changed the silc_client_command_call interface to make
1728           the command call simpler for the application.  The library
1729           now handles the command line parsing, command finding and
1730           execution.  Application only needs to call the function
1731           with the command line.  Affected files are
1732           lib/silcclient/silcclient.h, command.[ch].
1733
1734         * Fixed silc_get_input to NULL-terminate the returned input.
1735           Affected file lib/silcutil/silcutil.c.
1736
1737         * Resolve the client's public key in JOIN command if the
1738           founder auth data is being requested but we don't know the
1739           client's public key.  Affected file silcd/command.c.
1740           Bug #53.
1741
1742 Mon Nov  4 16:02:59 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1743
1744         * Print notify for server opers when backup router comes
1745           online.  Affected file silcd/server.c.
1746
1747         * Fixed the INVITE command to send the invite list in
1748           command reply.  Affected file silcd/command_reply.c.
1749
1750         * Fixed MOTD command reply sending.  Affected file
1751           silcd/command.c.
1752
1753         * UTF-8 decode the topic in TOPIC command reply and LIST
1754           command reply in Irssi SILC client.  Affected file is
1755           irssi/src/silc/core/client_ops.c.
1756
1757 Sun Nov  3 17:59:15 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1758
1759         * Fixed the INVITE command to not crash Irssi SILC client
1760           when given without nickname argument.  AFfected file
1761           irssi/src/silc/core/client_ops.c.
1762
1763         * Fixed double free in WHOIS query on normal server when
1764           forwarding query to router.  Affected file is
1765           silcd/server_query.c.
1766
1767         * Fixed WATCH command reply handling on normal server which
1768           was missing altogether.  Affected file silcd/command_reply.c.
1769           Bug #44.
1770
1771 Sun Nov  3 00:42:05 EET 2002  Mika Boström <bostik@lut.fi>
1772
1773         * Added man-pages for silc(1), silcd(8) and silcd.conf(5).
1774           Included yodl sources for each of these. Also modified
1775           Makefile.am prototype to install these files to proper
1776           locations. Updated CREDITS. Affected file Makefile.am.pre,
1777           new files doc/*.yo, doc/silc.1, doc/silcd.conf.5,
1778           doc/silcd.8.
1779
1780 Sat Nov  2 21:26:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1781
1782         * Added support for encrypted private key files.  Now
1783           passphrase must be provided when new key pair is created
1784           (can be empty though), and prompted when loading the
1785           private key.  Added support for loading the old-style
1786           non-encrypted private keys as well.  Affected files
1787           lib/silccrypt/silcpkcs.[ch], Irssi SILC client and
1788           SILC Server.
1789
1790         * Fixed silc_get_input to accept input on all terminals.
1791           Affected file lib/silcutil/silcutil.c.
1792
1793         * Moved the Irssi SILC client key loading and other stuff
1794           to be called after the arguments and UI is initialized.
1795           Affected file irssi/src/silc/core/silc-core.c.  Bug #31.
1796
1797         * Added -P option to Irssi SILC client which can be used
1798           to change the passphrase of the private key.  Affected
1799           file irssi/src/silc/core/silc-core.c.
1800
1801         * Added silc_change_private_key_passphrase apputil routine
1802           to lib/silcutil/silcapputil.[ch].
1803
1804 Sat Nov  2 12:53:09 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1805
1806         * Fixed connection closing in client library to not crash.
1807           Moved the connection freeing totally to function
1808           silc_clinet_del_connection.  Affected file
1809           lib/silcclinet/client.c.
1810
1811 Fri Nov  1 18:57:02 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1812
1813         * Changed includes/silcincludes.h to silcincludes.h.in to
1814           include configuration specific information.  The silcdefs.h
1815           is not included in to installation anymore (it's only
1816           compilation time header).
1817
1818 Fri Nov  1 10:30:26 CET 2002  Pekka Riikonen <priikone@silcnet.org>
1819
1820         * Moved the SilcClient and SilcClientConnection from client.h
1821           to the public lib/silcclient/silcclient.h.  Changed the
1822           structures a bit.
1823
1824 Thu Oct 31 22:44:07 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1825
1826         * If version string in silc_clinet_alloc is NULL the library
1827           puts it automatically.  Affected file lib/silcclient/client.c.
1828
1829         * Changed the version strings from variables to #define's
1830           in includes/silcversion.h.
1831
1832 Wed Oct 30 16:17:30 CET 2002  Pekka Riikonen <priikone@silcnet.org>
1833
1834         * Added shared library complation support.
1835
1836 Tue Oct 29 21:48:55 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1837
1838         * Added lib/silcutil/silcapputil.[ch] for application
1839           utility functions.  It includes routines for applications'
1840           convenience.  Added silc_create_key_pair, silc_show_public_key
1841           and silc_load_key_pair functions.
1842
1843 Tue Oct 29 17:36:44 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1844
1845         * Send RESUME_CLIENT packet from router to backup routers
1846           to in resuming.  Affected file silcd/packet_receive.c.
1847
1848 Mon Oct 28 21:23:39 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1849
1850         * In IDENTIFY command parsing, send all other IDs except
1851           Client IDs explicitly to router for resolving on normal
1852           server.  Also check that ID received in WHOIS command is
1853           always Client ID, others are not allowed.  Affected file
1854           silcd/server_query.c.
1855
1856         * Merged latest changes from irssi.org CVS.
1857
1858 Sun Oct 27 11:44:32 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1859
1860         * Merged c0ffee's /set heartbeat patch to Irssi SILC client.
1861           Affected files irssi/src/silc/core/silc-core, silc-server.c.
1862
1863         * Fixed the heartbeat sending in Irssi SILC client.  Moved
1864           the silc_client_packet_send to silcclient.h for application
1865           usage.  Affected files lib/silcclient/client_internal.h
1866           lib/silcclient/silcclient.h.
1867
1868         * Fixed a bug in query resolving in server.  Used wrong
1869           variable in a for loop and crashed.  Affected file is
1870           silcd/server_query.c.
1871
1872         * Server constructs requested attributes only to locally
1873           connected clients.  Affected file silcd/server_query.c.
1874           Bug #36.
1875
1876         * Fixed a bug when sending resolving from router to server
1877           with requested attributes.  The constructed WHOIS command
1878           was incorrect.  Affected file silcd/server_query.c.
1879           Bug #38.
1880
1881         * Fixed Requested Attributes saving in WHOIS command reply.
1882           The length of the data buffer must be saved too.  Affected
1883           file silcd/command_reply.c.
1884
1885         * Update the client entry's servername after detaching is
1886           over.  Affected file silcd/packet_receive.c.  Bug #37.
1887
1888         * Resolve incomplete client entrys in CUMODE_CHANGE and
1889           CMODE_CHANGE notifys.  Affected file is
1890           lib/silcclient/client_notify.c.  Bug #42.
1891
1892 Thu Oct 24 12:22:35 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1893
1894         * Fixed channel key packet processing bug on backup router
1895           during backup resuming protocol.  Affected file is
1896           silcd/packet_receive.c.
1897
1898         * Fixed memory leaks in server.  Affected files are
1899           silcd/server.c and silcd/packet_receive.c.
1900
1901         * Fixed packet decryption problem when backup router encrypted
1902           channel message with wrong key during backup resuming
1903           protocol.  Affected file silcd/packet_send.c.
1904
1905         * ROBODoc documented lib/silccrypt/silccipher.h.  A patch by
1906           Toni Willberg (toniw@iki.fi)
1907
1908         * Changed the SilcCipher context to be private.  Changed the
1909           silc_cipher_get_iv to just return pointer to the IV.  Added
1910           silc_cipher_get_name to return the name of the cipher.
1911           Fixed code all around to support these changes.  Affected
1912           files are lib/silccrypt/silccipher.[ch], client library and
1913           server.
1914
1915 Wed Oct 23 19:01:41 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1916
1917         * Fixed unaligned access in lib/silccore/silcattrs.c.
1918
1919         * Fixed libtool linking in lib/silcsim/Makefile.am.
1920
1921         * Fixed services attribute printing.  Affected files is
1922           irssi/src/silc/core/silc-queries.c.
1923
1924 Wed Oct 23 09:51:04 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
1925
1926         * Fixed a crashbug in incoming server accepting.  Affected
1927           file silcd/server.c.
1928
1929 Tue Oct 22 13:02:32 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1930
1931         * Added automatically generated index to Toolkit Reference
1932           Manual.
1933
1934         * Added support for Postscript Toolkit Reference Manual.
1935
1936 Mon Oct 21 21:30:40 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
1937
1938         * Merged DISCONNECT fix, and autoconn port fix from Irssi
1939           CVS.
1940
1941 Sun Oct 20 19:54:55 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1942
1943         * Added 'send_events' boolean argument to the function
1944           silc_schedule_set_listen_fd which sends the set events to
1945           the application explicitly if set to TRUE.  Default action
1946           should be FALSE.  Affected file lib/silcutil/silcschedule.[ch],
1947           lib/silcclient/client_internal.h and silcd/server_internal.h.
1948
1949         * Added silc_compare_timeval to determine which time values
1950           is smaller.  Affected file lib/silcutil/silcutil.[ch].
1951
1952         * Added sort-of "Quality of Service" (QoS) support to
1953           SilcSocketConnection.  Data reception can be controlled with
1954           rate limit per second and/or read data length limit.
1955           Added silc_socket_set_qos.  Affected files are
1956           lib/silcutil/silcsockconn.[ch] and unix/silcunixsockconn.c.
1957
1958         * Added the QoS configuration to SILC Server configuration
1959           file.  Affected files are silcd/serverconfig.[ch] and
1960           server.c.
1961
1962 Sun Oct 20 14:12:24 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
1963
1964         * Merged with irssi.org CVS.
1965
1966         * Failed OPER and SILCOPER authentications are now logged.
1967           Affected file silcd/command.c.  Bugs #25.
1968
1969 Sat Oct 19 13:32:15 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
1970
1971         * ROBODoc documented lib/silcutil/silcbuffer.h and
1972           lib/silcutil/silcdlist.h.  Patch by Ville Räsänen
1973           <ville.rasanen@iki.fi>.
1974
1975 Fri Oct 18 10:51:04 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1976
1977         * Added support for auto-passphrase authentication from the
1978           config file during connecting which was not implemented
1979           yet.  Affected file irssi/src/silc/core/client_ops.c.
1980
1981         * Fixed a bug in authentication protocol failure handling which
1982           was processing wrong callback context.  Affected files
1983           are lib/silcclient/client.c and protocol.c.
1984
1985         * Fixed the /ATTR allow off to actually work.  Affected file
1986           is irssi/src/silc/core/silc-queries.c.
1987
1988         * Fixed the /ATTR -del to work.  Affected file is
1989           irssi/src/silc/core/silc-queries.c.
1990
1991 Thu Oct 17 23:45:12 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1992
1993         * Fixed string formatting crashbug in lib/silccore/silcattrs.c.
1994
1995         * Fixed mask attribute adding in Irssi SILC client.  Affected
1996           file irssi/src/silc/core/silc-queries.c.
1997
1998 Thu Oct 17 16:40:39 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1999
2000         * Added support for saving the requested attributes in
2001           WHOIS to directory.  Affected file is
2002           irssi/src/silc/core/silc-queries.c.
2003
2004 Wed Oct 16 17:40:56 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2005
2006         * Added support for parsing VCard fields that do not have
2007           the TYPE= for types.  Affected file lib/silcutil/silcvcard.c.
2008
2009         * Fixed a double free bug in hash table foreach function
2010           if the entry was deleted in the foreach callback.  Affected
2011           file lib/silcutil/silchashtable.c.
2012
2013 Tue Oct 15 18:05:24 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2014
2015         * Added silc_attribute_get_verify_data to return the signature
2016           verification data for either user digital signature or
2017           server digital signature in Requested Attributes.  Affected
2018           files are lib/silccore/silcattrs.[ch].
2019
2020         * Added silc_vcard_alloc which is used to allocated dynamic
2021           SilcVCard context.  The silc_vcard_free now checks whether
2022           the context is dynamically allocated or not.  Affected files
2023           are lib/silcutil/silcvcard.[ch].
2024
2025 Mon Oct 14 17:55:44 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2026
2027         * Periodically remove the NOATTR status from client entry
2028           so that the client may take the attributes in use even after
2029           server has resolved them unsuccessfully earlier.  Affected
2030           file silcd/server_query.c and idlist.h.
2031
2032         * Moved sha1hash and md5hash from client->internal to
2033           SilcClient for application usage.  Affected files are
2034           lib/silcclient/client.h and client_internal.h.
2035
2036         * Fixed attribute encoding and decoding bugs.  Affected
2037           files lib/silccore/silcattrs.[ch].
2038
2039         * Added ATTR command to Irssi SILC Client which is used to
2040           manage user's Requested Attributes sending and values for
2041           WHOIS command.  Affected files around Irssi SILC client.
2042
2043 Mon Oct 14 14:33:54 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2044
2045         * Added silc_buffer_strformat which can be used to format
2046           strings into a buffer which size is automatically increased.
2047           Affected file lib/silcutil/silcbuffmt.[ch].
2048
2049         * Added implementation of VCard (RFC 2426) which can be used
2050           as part of Requested Attributes in WHOIS command.  Affected
2051           file lib/silcutil/silcvcard.[ch].
2052
2053 Fri Oct 11 23:52:17 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2054
2055         * Some strncat -> silc_strncat changes our the core and
2056           client library.
2057
2058         * Added SILC_SKE_STATUS_SIGNATURE_ERROR and OUT_OF_MEMORY
2059           errors.  Added better error printing to SKE library.
2060           Affected files lib/silcske/silcske.c, silcske_status.h and
2061           payload.c.
2062
2063         * Save the PKCS key length even if only private key is set to
2064           SilcPKCS.  Affected file lib/silccrypt/silcpkcs.[ch] and rsa.c.
2065
2066         * Fixed the usage of silc_pkcs_get_key_len since it returns the
2067           length in bits not in bytes.  Affected files are
2068           lib/silcske/silcske.c, lib/silccore/silcauth.c and
2069           silcd/server_query.c.
2070
2071 Wed Oct  9 17:22:57 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2072
2073         * Added silc_attribute_payload_encode_data to directly encode
2074           the data into the attributes buffer.  Renamed function
2075           silc_attribute_payload_parse_list to silc_attribute_payload_parse.
2076           Affected files are lib/silccore/silcattrs.[ch].
2077
2078         * silc_hash_table_find_foreach calls the foreach function now
2079           once even if the nothing was found with context set to NULL.
2080           Affected file lib/silcutil/silchashtable.[ch].
2081
2082         * Remove the RESOLVING flag from client entry after received
2083           the Requested Attributes from the client.  Fixed memory leak
2084           in client entry freeing.  Affected files silcd/server_query.c
2085           and idlist.c.
2086
2087         * Added Requested Attributes support into SILC Client Library.
2088           It is not able to send requested attributes in WHOIS command,
2089           and also receive and process requested attributes.  Added
2090           silc_client_attribute_[add|del] and silc_client_attributes_get
2091           functions.  Added also `ignore_requested_attributes' to the
2092           SilcClientParams to not use attributes in client.  Affected
2093           files are lib/silcclient/command.c, client_attrs.[ch],
2094           silcclient.h, client_internal and client.[ch].
2095
2096         * Changed the silc_client_get_client_by_id to support Requested
2097           Attributes, it takes them as argument now.  Affected file
2098           is lib/silcclient/silcclient.h, and idlist.c.
2099
2100         * Added -details option to WHOIS command in Irssi SILC Client
2101           to support the requested attributes.  By default it requests
2102           all attributes.  Affected file lib/silcclient/command.c and
2103           irssi/doc/help/in/whois.in.
2104
2105 Tue Oct  8 17:58:28 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2106
2107         * Add also SERVICE attribute for server-constructed attribute
2108           data.  Also digitally sign the attributes and add
2109           SERVER_DIGITAL_SIGNATURE attribute.  Affected file is
2110           silcd/server_query.c.
2111
2112 Mon Oct  7 18:25:35 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2113
2114         * Changed the silc_attribute_payload_encode to support list
2115           of attributes (function may be called several times to add
2116           a new attribute).  Removed the silc_attribute_payload_encode_list
2117           function.  The encoding function now also automatically encodes
2118           the data, so the caller does not need to do that.  Affected
2119           files lib/silccore/silcattrs.[ch].
2120
2121         * Added support for replying on behalf of the user to the
2122           Requested Attributes in WHOIS command in the server.  Affected
2123           file silcd/server_query.c.
2124
2125         * SILC_NOT_IMPLEMENTED macro use SILC_LOG_INFO now instead of
2126           SILC_LOG_DEBUG.  Affected file lib/silcutil/silclog.h.
2127
2128 Sun Oct  6 16:48:32 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2129
2130         * Don't swtich to become primary router if we are backup if
2131           decryption error has occurred.  Affected file silcd/server.c.
2132
2133         * Fixed a bug in backup router IP address comparison in
2134           silc_server_backup_get.
2135
2136           Save now also the port of the server/router and use that
2137           in comparison as well.  Affected file silcd/server_backup.c.
2138
2139         * Normal server now reconnects to backup router automatically
2140           if connection is lost to it.  Affected file silcd/server.c.
2141
2142 Thu Sep 26 13:51:02 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2143
2144         * If packet processing fails (like integrity check fails)
2145           the connection is closed now.  Affected files are
2146           lib/silccore/silcpacket.c and silcd/server.c.
2147
2148 Mon Sep 23 10:59:39 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2149
2150         * Fixed double free in RSA public key set function
2151           silc_rsa_set_public_key.  Affected file lib/silccrypt/rsa.c.
2152           Bug #29.
2153
2154 Sun Sep 22 14:54:05 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2155
2156         * Rewrote WHOIS, WHOWAS and IDENTIFY commands in the server.
2157           Added server_query.[ch] which provides one interface for
2158           querying information using all three commands.
2159
2160         * Changed all "typedef unsigned char" in core library to
2161           "typedef SilcUInt8".
2162
2163 Sat Sep 21 21:36:45 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2164
2165         * Added silc_strncat into lib/silcutil/silcstrutil.[ch].
2166
2167         * Renamed silc_server_get_client_resolve to
2168           silc_server_query_resolve and moved to server_query.[ch].
2169
2170 Wed Sep 18 18:28:04 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2171
2172         * Resumed client packet handling from server put the resumed
2173           client on wrong list on router and caused the client not
2174           be present on the network anymore.  Now fixed to put the
2175           client to correct list.  Affected file silcd/packet_receive.c.
2176
2177 Wed Sep 18 15:13:48 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
2178
2179         * Various cleanup in error message output in config parsing code
2180           and in server init code.  Fixed error log files containing
2181           too many newlines ('\n') in some situations.  Affected files are
2182           silcd/serverconfig.c, silcd/silcd.c, and silcd/server.c.
2183
2184 Wed Sep 18 10:51:23 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2185
2186         * Use the reverse lookupped hostname in client internals
2187           instead of one user provided us as remote server name.
2188           Affected file lib/silcclient/client.c.
2189
2190 Mon Sep 16 12:02:54 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2191
2192         * Added 'app_context' to silc_schedule_init.  It is an
2193           application specific context that is delivered to application
2194           in task callback functions.  Affected files are
2195           lib/silcutil/silcutil.[ch].
2196
2197         * The hb_context in SilcSocketConnection is not freed
2198           automatically anymore (application must free it).  Freeing
2199           it automatic is inconsistent.  Affected files are
2200           lib/silcutil/silcsockconn.[ch].
2201
2202 Sun Sep 15 22:16:19 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2203
2204         * Added support for removing explicitly added client connections
2205           in rehash and closing the client connections if they were
2206           unconfigured in the rehash.  Affected file silcd/server.c.
2207
2208         * Added support for aborting automatically pending commands
2209           that never receives the reply (to avoid memory leaks).
2210           Added also silc_server_command_pending_timed to set the
2211           specific timeout for pending command.  Affected files are
2212           silcd/command[_reply].[ch].
2213
2214         * Added SILC_STATUS_ERR_TIMEDOUT status.  Updated protocol
2215           specs and lib/silccore/silcstatus.h.
2216
2217 Sun Sep 15 12:25:10 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2218
2219         * Changed the silc_get_time to accept time value as argument
2220           or if zero is sent return current local time.  Affected
2221           file lib/silcutil/silcutil.[ch].
2222
2223         * Added STATS command to client library and Irssi SILC client.
2224           Patch provided by Ville Räsänen <ville.rasanen@iki.fi>.
2225
2226 Wed Sep 11 09:22:00 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2227
2228         * Assure that channel key is set before sending it.  May
2229           crash server otherwise.  Affected file silcd/packet_send.c.
2230
2231 Tue Sep 10 09:50:08 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2232
2233         * Assure that endless loop cannot happen with detached client
2234           resolving on normal server.  Added idlist status
2235           SILC_IDLIST_STATUS_RESUME_RES.   Affected files are
2236           silcd/idlist.h and silcd/packet_receive.c.
2237
2238 Mon Sep  9 12:18:18 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2239
2240         * Incoming file transfer request cannot use same session as
2241           the sending session.  This can happen when sending file to
2242           yourself.  Crashed the client on quit.  Affected file
2243           lib/silcclient/client_ftp.c.  Bug #24.
2244
2245 Sun Sep  8 18:39:25 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2246
2247         * Implemented the draft-riikonen-precense-attrs draft and
2248           the Attribute Payload into the lib/silccore/silcattrs.[ch].
2249
2250 Sun Sep  8 13:13:44 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2251
2252         * Distribute the SERVER_SIGNOFF notify also to local backup
2253           routers from the primary router.  The backup router may not
2254           have the signing of local server directly connected and need
2255           to know about the signoff.  Affected file silcd/server_util.c.
2256
2257         * Use the primary router as the origin of the locally connected
2258           server when it is disconnecting from the backup router since
2259           that's where it really is coming from.  Now the clients from
2260           the disconnecting server are removed correctly and "shadow"
2261           clients are not left to the backup router.  Affected file
2262           silcd/server.c.
2263
2264 Sat Sep  7 22:26:50 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2265
2266         * If normal server is standalone and found existing but disabled
2267           channel, do not re-create the channel since it creates
2268           duplicate same channels.  Affected file silcd/server.c.
2269
2270         * Added anonymous client connections support to server.  New
2271           "anonymous" configuration option to ConnectionParams section
2272           added.  If set to true, the username and hostname information
2273           of the client will be scrambled and anonymous user mode is
2274           set automatically to the user.  Affected files are
2275           silcd/serverconfig.[ch], silcd/packet_receive.c and server.c.
2276
2277 Sat Sep  7 16:02:09 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2278
2279         * In JOIN notify handling, mark that the cache entry of the
2280           client cannot be expired.  Can cause crashes on normal
2281           server (asserts client->channels).  Affected file is
2282           silcd/packet_receive.c.
2283
2284         * From now on distribution versions are used as protocol versions
2285           instead of by default using the Toolkit base version as protocol
2286           version.  Affected file prepare.
2287
2288         * Do not set the locally resolved hostname for local client
2289           entry but take what server sends.  This way the real hostname
2290           is showed in WHOIS for yourself.  Affected file is
2291           lib/silcclient/idlist.c and lib/silcclient/client.c.
2292
2293         * Resolve local info with IDENTIFY when connecting to server.y
2294
2295 Sat Sep  7 14:22:43 CEST 2002 Lubomir Sedlacik <salo@silcnet.org>
2296
2297         * Rewritten check for POSIX threads.  Use --with-pthreads[=DIR]
2298           for implied search (not needed on platforms which has native
2299           pthreads library).  Use --without-pthreads to disable threads.
2300           Affected file is configure.in.pre
2301
2302         * Fixed --with-iconv on platforms which need to bypass (broken)
2303           native iconv().  Affected file is configure.in.pre
2304
2305 Sat Sep  7 15:08:13 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2306
2307         * Moved -C option parsing in Irssi SILC client at same time
2308           as other options.  The UI was initialized earlier and caused
2309           problems on command line.  Bug #16.  Affected file is
2310           irssi/src/silc/core/silc-core.c.
2311
2312 Mon Sep  2 23:00:30 CEST 2002 Johnny Mnemonic <johnny@themnemonic.org>
2313
2314         * Added global variable silc_log_timestamp that tells silclog
2315           wether to print or not the timestamp in the logging files.
2316           Affected file lib/silcutil/silclog.[ch].
2317
2318         * Added silcd configuration option Timestamp in the Logging
2319           section.  Affected file silcd/serverconfig.[ch],
2320           doc/example_silcd.conf.in.
2321
2322 Fri Aug 30 08:57:33 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2323
2324         * Fixed fingerprint checking to check for entirely empty
2325           fingerprint instead of two first bytes when determining
2326           if it is set.  Bug #18.  Affected file silcd/command.c.
2327
2328         * Fixed duplicate PKCS name registering to not allow it.
2329           Bugs #17.  Affected file lib/silccrypt/silcpkcs.c.
2330
2331 Sun Aug 25 08:02:04 CEST 2002 Lubomir Sedlacik <salo@silcnet.org>
2332
2333         * Conditionalize non-gcc compiler optimizations for various
2334           platforms, enable those commented out.  Cleanups.
2335           Affected file lib/silcmath/mpi/configure.in
2336
2337 Sat Aug 24 15:11:32 EEST 2002 Timo Sirainen <tss@iki.fi>
2338
2339         * silc_rng_exec_command() left zombie processes if command
2340           didn't generate any output.  Affected file
2341           lib/silccrypt/silcrng.c
2342
2343 Fri Aug 23 22:05:44 CEST 2002 Lubomir Sedlacik <salo@silcnet.org>
2344
2345         * Rewrote iconv checking, introduce --with-iconv for systems
2346           which rely on libiconv.  Check if iconv() provided by libc
2347           is good enough, otherwise demand libiconv.  Affected file
2348           configure.in.pre
2349
2350 Fri Aug 23 07:10:52 CEST 2002 Lubomir Sedlacik <salo@silcnet.org>
2351
2352         * Search for ldopen() also in libc.  This enables SIM support
2353           on *BSD systems.  Based on patch from Alex Zepeda.  Affected
2354           file configure.in.pre
2355
2356 Sun Aug 18 04:44:30 CEST 2002 Lubomir Sedlacik <salo@silcnet.org>
2357
2358         * Don't call AM_CONDITIONAL conditonally for SILC_THREADS.
2359           This fixes prepare on *BSD systems.  Affected file
2360           configure.in.pre
2361
2362 Sun Aug  4 15:55:40 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2363
2364         * More fixed for not having purge timeout for global clients
2365           that are on channel.  Affected files silcd/command_reply.c
2366           and server_util.c.
2367
2368         * Fixed the rekey protocol to work with backup router connections.
2369           Rekey packets are now allowed on disabled connections as
2370           well.  Affected files silcd/packet_send.c and server.c.
2371
2372         * Do not switch to be as backup router when shutting down and
2373           closing the primary connection.  Affected file silcd/server.c.
2374
2375         * Fixed memory leaks in backup router deleting.  Added
2376           silc_server_backup_free to free all data during shutdown of
2377           server.  Affected files silcd/server_backup.[ch].
2378
2379 Sun Jul 14 21:33:32 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2380
2381         * Do not process commands if the sock->user_data is NULL.
2382           Affected file silcd/command.c.
2383
2384 Tue Jul  9 19:03:11 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2385
2386         * Fixed buffer overflow and security problems (loosing bits
2387           in CFB encryption) in SILC RNG.  Problems reported by
2388           Markku-Juhani O. Saarinen <mjos@saturn.tcs.hut.fi>.
2389
2390 Sun Jul  7 13:10:01 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2391
2392         * Added yet more checks that client is not expired on global
2393           list if it is on channels.  Affected file is
2394           silcd/command_reply.c.
2395
2396 Sat Jul  6 11:45:11 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2397
2398         * Merged c0ffee's MIME signal patch which adds support for
2399           sending also MIME messages in Irssi SILC Client, and handling
2400           received MIME messages in a signal (and perhaps doing something
2401           to non-textual MIME messages).
2402
2403 Sun Jun 30 01:30:22 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2404
2405         * Fixed pending command deletion in server and client library
2406           to check the whole list instead of breaking after first found.
2407           The affected files are silcd/command.[ch] and
2408           lib/silcclient/command.[ch].
2409
2410 Sat Jun 29 17:40:12 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2411
2412         * Return NO_SUCH_CHANNEL error in USERS for channel that is
2413           secret or private, otherwise it's possible to find out
2414           whether a secret channel exists or not.  Affected file
2415           silcd/command.c.
2416
2417         * If CMODE change fails during the mode setting, assure that
2418           the old mode mask is set for the channel back.  Affected
2419           file silcd/command.c.
2420
2421         * Fixed passphrase saving on +a channel on normal server
2422           after successful JOIN command.  Affected file silcd/command.c.
2423
2424 Fri Jun 28 11:53:25 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2425
2426         * Remove server/router operator privileges in DETACH command,
2427           since it's possible to resume to server where these
2428           privileges would not be allowed for the client.  Affected
2429           file silcd/command.c.
2430
2431         * Do not set to wait for backup in rehash of the server.
2432           Affected file silcd/server.c.
2433
2434         * Do not check listener sockets when counting how many
2435           socket connections we have.  Affected file is
2436           silcd/server_util.c.
2437
2438         * Do not announce disconnected clients that are remaining
2439           in history (for WHOWAS).  This is because SIGNOFF notify
2440           for these has been sent earlier already.  Affected file
2441           silcd/server.c.
2442
2443 Thu Jun 27 20:07:27 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2444
2445         * Buffer overflow with CUMODE command's mode->mode character
2446           conversion.  Reported by Ville Räsänen.  Affected file
2447           lib/silcutil/silcutil.c.
2448
2449 Thu Jun 27 16:54:33 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2450
2451         * Allow heartbeat packets to go disabled connections anyway.
2452           Affected files silcd/server.c and silcd/packet_send.c.
2453
2454         * Do not broadcast New Channel packets with List flag set
2455           in the packet to backup routers.  The router must check
2456           for the correctness of the packets before sending them.
2457           It is possible that router will have enforce Channel ID
2458           change and this would cause desync in the backup router.
2459           Affected file silcd/packet_receive.c.
2460
2461         * Remove SILC_PACKET_FLAG_LIST from the temp packets that
2462           are handled in list parsing.  They are not list packets
2463           anymore.  Affected file silcd/packet_receive.c.
2464
2465 Thu Jun 27 11:27:07 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2466
2467         * Stop waiting for backup router through the timeout, not
2468           directly after backup router has arrived.  Affected file
2469           silcd/server.c.
2470
2471         * Do not re-create channel keys and send them when removing
2472           clients in server shutdown.  Affected files are
2473           silcd/server_internal.h and silcd/server_util.c.
2474
2475         * Notify distribution to backup routers was missing from
2476           the silc_server_send_notify_dest function which caused
2477           desyncing problems with backup router.  Affected file is
2478           silcd/packet_send.c.
2479
2480         * The client's channel removing was working wrong on
2481           backup router.  It assumed that it doesn't know global
2482           information but backup router does know.  For this reason
2483           it could remove channel when it wasn't supposed to do that.
2484           Affected file silcd/server.c and silcd/server_util.c.
2485
2486 Wed Jun 26 15:14:12 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2487
2488         * Stop for a couple seconds after badkup router has become
2489           primary router.  Affected file silcd/server.c.
2490
2491         * Added silc_server_remove_servers_by_server, which is used
2492           to remove servers originated from some other server.  Also
2493           clients of those servers can be removed too.  Affected file
2494           silcd/server_util.[ch].
2495
2496         * When removing clients after a server has signed of remove
2497           also all servers behind that server (unless they are known
2498           to be available locally), and send SERVER_SIGNOFF for each
2499           of the server separately.  Also the signed off clients are
2500           sent now separately per signed off server.  The affected files
2501           are silcd/server.c and silcd/server_util.[ch].
2502
2503         * All servers added with silc_idlist_add_server must always
2504           have both "router" and "connection" pointers set.  Otherwise,
2505           bad server entries may be left around in the cache.
2506           Affected file silcd/command_reply.c.
2507
2508         * Do not create the channel key in NEW_CHANNEL packet
2509           processing if the channel is empty.  Affected file
2510           silcd/packet_receive.c.
2511
2512         * Completed backup router support for standalone routers.
2513           Supports also servers in the cell that do not use the backup
2514           at all.
2515
2516 Wed Jun 26 10:38:11 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2517
2518         * Fixed a bug in silc_string_regexify which did not add '^'
2519           at the start of each string, and thus the matching was
2520           not explicit.  For example ban list iikone@*!*@* would
2521           match also "priikone", which is wrong, it would have to be
2522           *iikone@*!*@* to match also "priikone".  Affected
2523           file lib/silcutil/unix/silcunixutil.c.
2524
2525 Tue Jun 25 18:47:39 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2526
2527         * Enable all local server connections before updating client
2528           caches when we've become backup router.  Otherwise, signoff
2529           packets may not reach the clients.  Affected files are
2530           silcd/server.c and silcd/server_util.[ch].
2531
2532         * Fixed a bug in version string parsing which could crash
2533           the program with specially formatted version string.
2534           Bug reported and patch provided by Ville Räsänen.  Affected
2535           file lib/silcutil/silcutil.c.
2536
2537         * Handle the disconnection immediately when DISCONNECT
2538           packet is received in server.  Affected file silcd/server.c.
2539
2540         * Primary router now waits a short time (10 seconds) for
2541           backup router connection before accepting any other
2542           connection (except local).  Affected file silcd/server.c,
2543           serverconfig.[ch].
2544
2545         * Fixed a crash in client libary in NICK_CHANGE notify when
2546           NICK_CHANGE arrived for client entry we are resolving
2547           currently.  Affected file lib/silcclient/client_notify.c.
2548
2549         * Call the sconn->callback completion even if error had
2550           occurred.  Start reconnecting always if connection to
2551           primary router fails during backup router protocol.
2552           Affected files silcd/server.c and server_backup.c.
2553
2554 Mon Jun 24 17:47:52 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2555
2556         * Added functions silc_server_send_opers and
2557           silc_server_send_opers_notify to send packets stricly
2558           to operators.  Added macro SILC_SERVER_SEND_OPERS macro
2559           to send variable argument notify to operators.
2560           Affected files silcd/packet_send.[ch] and silcd/server.h.
2561
2562         * Removed UMODE rights checking with UMODE_CHANGE notify.
2563           Affected file silcd/packet_receive.c.
2564
2565         * Server/router operator now receives notify when network
2566           switches to backup router and when it resumes the use of
2567           primary router.  Affected file silcd/server.c and
2568           silcd/server_backup.c.
2569
2570         * Fixed the updating of client information after backup
2571           resuming protocol is over; update all except local clients
2572           to the new primary router.  The affected file is
2573           silcd/server_util.c.
2574
2575         * Added support for closing active connections in rehash
2576           that were unconfigured by the user.  Supports currently
2577           closing server and router connections.  Affected file
2578           silcd/server.c.
2579
2580         * Rewrote some SILC_LOG_DEBUG's in silcd/server_backup.c.
2581
2582 Sun Jun 23 17:32:31 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2583
2584         * Don't do SILC_STRING_LANGUAGE encoding if the outbuffer
2585           is NULL since seems that on some platforms NULL is allowed
2586           and on some it's not.  Fallback encoding is used instead.
2587           Affected file lib/silcutil/silcstrutil.c.
2588
2589         * Fixed statistics updating for incoming server connection
2590           which could cause problems when re-connecting.  Affected
2591           file silcd/server.c.
2592
2593         * Preliminary backup router support for standalone router
2594           added.  Affected files in silcd/.
2595
2596         * Mark server connections in backup router disabled before
2597           and after backup protocol.  Affected file is
2598           silcd/server_backup.c.
2599
2600         * Added support for reconnecting to remote server connection
2601           even if the protocol fails, and if the configuration wants
2602           us to keep trying to connect anyway.
2603
2604           Server connection is not allowed to backup router if
2605           backup router does not have connection to primary router yet.
2606
2607           Affected file is silcd/server.c.
2608
2609 Sat Jun 22 21:34:59 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2610
2611         * Added silc_client_udpate_server function to update changed
2612           server info.  Affected file lib/silcclient/idlist.[ch].
2613
2614         * Added check for server entries that are being resolved when
2615           notify is received.  If being resolved, handle the received
2616           notify only after it's resolved so that all notifys are
2617           handled in same order as received from the server.
2618
2619           Added similar resolver check to channel entries.  Every
2620           notify that cause resolving of any information that affects
2621           channel entry marks the channel entry in waiting state.
2622           After whatever resolving is over the waiters are signalled
2623           and only then the notifys are handled in the same order
2624           as delivered from the server.
2625
2626           Affected files are lib/silcclient/idlist.[ch], and
2627           client_notify.c.
2628
2629         * Fixed KILLED notify handling in normal server.  Affected
2630           file silcd/packet_receive.c.
2631
2632         * Added SILC_IDLIST_STATUS_LOCAL which indicates that entry
2633           is locally connected, or was locally connected (but may
2634           be detached and connection is not active).  Added also
2635           SILC_IS_LOCAL for checking this status.  Affected files
2636           silcd/idlist.h, silcd/packet_receive.c, silcd/server_util.c,
2637           silcd/server.c and silcd/server_internal.h.
2638
2639 Sat Jun 22 17:06:58 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2640
2641         * Don't send or handle TOPIC_SET if topic is already set and
2642           is same as being set.  Affected files silcd/command.c and
2643           silcd/packet_receive.c.
2644
2645         * Fixed CMODE change rights checking to work correctly when
2646           removing modes by operator.  Affected file is
2647           silcd/server_util.c.
2648
2649         * Fixed some handling with New Channel packet in router and
2650           fixed some CMODE_CHANGE notify handling in server and router.
2651           Affected file is silcd/packet_receive.c.
2652
2653         * Changed "disconnect" client operation to include the
2654           reason of the disconnection and optional disconnection
2655           message.  Affected file lib/silcclient/silcclient.h.
2656
2657         * Made the compilation of lib/contrib/ stuff conditional.
2658           Affected files configure.in.pre, lib/contrib/Makefile.am.
2659
2660 Sat Jun 22 12:49:21 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2661
2662         * All CMODE_CHANGE and CUMODE_CHANGE notifys are now sent back
2663           to the sender of the notify too, to avoid situation where two
2664           notifys are in the network at the same time going to oppsite
2665           directions.  Affected file silcd/packet_receice.c.
2666
2667 Fri Jun 21 10:00:32 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2668
2669         * Delete the client from channel even if the cilent->id is
2670           NULL.  It was possible that client was deleted without
2671           removing from channels (theoretically at least).  Affected
2672           file silcd/server.c and silcd/server_util.c.
2673
2674         * Free the client data too when resuming is not successful.
2675           Affected file silcd/packet_receive.c.
2676
2677         * Merged some code from c0ffee's silc-plugin.  Affected files
2678           irssi/src/silc/core/silc-channels.c and silc-expandos.c.
2679
2680         * Added SILC_PRIMARY_ROUTE and SILC_BROADXAST macros to
2681           silcd/server_internal.h.  SILC_PRIMARY_ROUTE Returns pointer
2682           to the primary router connection, the other one returns
2683           TRUE if packet must be broadcasted to network.
2684
2685         * All notifys that are destined to primary router (to network)
2686           are now automatically sent to backup routers even if the
2687           router is standalone (and has backup router).  Affected files
2688           in silcd/.
2689
2690         * Added --without-irssi and --without-silcd configuration
2691           options for disabling the compilation of these applications.
2692           Affected file configure.in.pre and prepare.
2693
2694 Thu Jun 20 13:48:15 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2695
2696         * Implemented SILC_STRING_BMP and SILC_STRING_UNIVERSAL for
2697           UTF-8 encoding and decoding.  Added also new encodings
2698           SILC_STRING_BMP_LSB and SILC_STRING_UNIVERSAL_LSB.
2699
2700           Added also SILC_STRING_LANGUAGE which is language and charset
2701           specific encoder and decoer for those platforms that support
2702           iconv().  It can convert the UTF-8 to and from the locale
2703           specific character set.
2704
2705           Affected file lib/silcutil/silcstrutil.[ch].
2706
2707         * Added macro SILC_NOT_IMPLEMENTED to lib/silcutil/silclog.h.
2708
2709         * Added function silc_get_command_name to the file
2710           lib/silcutil/silcutil.[ch].
2711
2712         * Improved the server debug output a bit.  Affected files are
2713           in silcd/.
2714
2715 Wed Jun 19 17:46:31 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2716
2717         * Save the channel passphrase when received succesful JOIN
2718           command reply from router, on normal server.  Otherwise
2719           joinig +a channels from normal server is not possible.
2720           Affected file silcd/command.c.
2721
2722         * Fixed a bug in TOPIC_SET notify handling.  The notifier
2723           may be other than client too, like server or channel.
2724           It expected it to always be only client and ignored the
2725           notify.  Affected file silcd/packet_recieve.c.
2726
2727         * Removed some (unnecessary) debug printing from
2728           lib/silccore/silcid.c and lib/silccore/silcargument.c.
2729
2730         * Do not force CMODE_CHANGE when server is announcing new
2731           channel.
2732
2733           Router announces stuff only after server reannounces channel
2734           after CHANNEL_CHANGE notify.
2735
2736           These fixes optimizes the announcing procedure, and perhaps
2737           fixes some problems too.  Affected file silcd/packet_receive.c.
2738
2739         * Fixed SERVER_SIGNOFF sending to local clients.  It was
2740           totally broken and sent the notify to all local clients,
2741           instead of only to those that was on same channel as the
2742           signing off clients.  Affected file silcd/server_util.c.
2743
2744         * Added -D option to server.  It can be used to give debug
2745           level.  The levels are from 0 - 99, and are predefined for
2746           smooth server debugging.  (see silcd.c for the predefined
2747           levels).  Affected file silcd/server.c.
2748
2749 Wed Jun 19 16:01:51 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2750
2751         * Fixed a bug in Irssi SILC client to close the connection
2752           properly when disconnecting from server.  Affected file
2753           irssi/src/silc/core/client_ops.c.
2754
2755 Tue Jun 18 17:14:52 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2756
2757         * When authenticating as founder during JOIN command, check
2758           that the one authenticating becomes the only founder on the
2759           channel.  Affected file silcd/command.c.
2760
2761         * Better checking for founder mode setting when CUMODE_CHANGE
2762           notify is received.  Affected file silcd/packet_receive.c.
2763
2764         * Close all connections when shutting down the server by sending
2765           DISCONNECT packet.  Close all listeners too when shutting
2766           down the server.  Affected file silcd/server.c.
2767
2768         * Handle DISCONNECT packet correctly in client library by
2769           calling the "disconnect" client operation.  Affected file
2770           lib/silcclient/client.c.
2771
2772         * Handle local errors correctly during resuming.  Affected
2773           file lib/silcclient/client.c.
2774
2775 Tue Jun 18 10:26:27 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2776
2777         * The log file is not dupped internally anymore in
2778           lib/silcutil/silclog.c.  Fixed memory leaks too.
2779
2780         * The scheduler now dispatches all pending timeout tasks
2781           when it is uninitialized with silc_schedule_uninit.
2782           Affected file lib/silcutil/silcschedule.c.
2783
2784 Mon Jun 17 21:30:55 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2785
2786         * Added --enable-stack-trace option to configure.  Added
2787           memory allocation stack trace support.  Added files
2788           lib/silcutil/stacktrace.[ch].  Affected files are
2789           lib/silcutil/silcmemory.[ch].
2790
2791         * Fixed memory leaks from libraries and server.  Affected
2792           files around the tree.
2793
2794         * Reverted back a fix made to CUMODE which broke it.
2795           Affected file silcd/command.c.
2796
2797 Sun Jun 16 11:49:45 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2798
2799         * Added SILC_MESSAGE_FLAG_UTF8 to the protocol specs and the
2800           core library, and implemented it.  All textual messages SHOULD
2801           use this flag and the message MUST be UTF-8 encoded.
2802           All text messages sent by Irssi SILC client are now UTF-8
2803           encoded (regardless whether the terminal supports UTF-8 or not).
2804           Affected files are lib/silccore/silcchannel.h,
2805           irssi/src/silc/core/silc-servers.c, silc-channels.c and
2806           client_ops.c.
2807
2808 Sat Jun 15 18:23:39 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2809
2810         * Added lots of new statistics updating that was missing from
2811           the server and router code.  Affected files in silcd/.
2812
2813         * Sending SIGUSR1 signal to server now dumps the current
2814           server statistics into /tmp directory.  Affected file is
2815           silcd/silcd.c.
2816
2817         * ROBODoc documented the lib/silccrypt/silchash.h.  Improved
2818           the SILC Hash Interface also.  Added new functions
2819           silc_hash_get_name, silc_hash_init, silc_hash_update and
2820           silc_hash_final.  Affected file lib/silccrypt/silchash.c.
2821
2822 Sat Jun 15 12:09:14 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2823
2824         * Added some better info printing for client during connecting.
2825           Affected file silcd/server_util.c.
2826
2827         * Implemented the SILC_CHANNEL_UMODE_QUIET mode that can be used
2828           to silence a user on a channel.  Affected files are
2829           lib/silcclient/client_channel.c, irssi/src/silc/core/client_ops.c,
2830           irssi/src/fe-common/silc/module-formats.[ch], silcd/command.c
2831           and silcd/packet_receive.c.
2832
2833         * Fixed a fatal bug in handling of malformed command payload.
2834           Affected file silcd/command.c.
2835
2836         * Fixed a double free when announcing channel users to router.
2837           Affected file silcd/server.c.
2838
2839         * After successful authentication to channel founder mode, check
2840           that there isn't anyone else with founder mode on the channel.
2841           The one that authenticated will become founder and anyone
2842           else is demoted.  Affected file silcd/command.c.
2843
2844         * Added error printing of any error that has occurred during
2845           any command in client library.  Affected file is
2846           irssi/src/silc/core/client_ops.c.
2847
2848         * Removed some error printing from the client library and left
2849           it for the application to worry (from the error status it
2850           receives in 'command' client operation.  Affected file is
2851           lib/silcclient/command.c.
2852
2853 Fri Jun 14 22:59:02 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2854
2855         * Added new status types KEY_AGREEMENT_ALREADY_STARTED and
2856           KEY_AGREEMENT_SELF_DENIED to lib/silcclient/silcclient.h.
2857           Starting key agreement with itself is denied.  Affected file
2858           is lib/silcclient/client_keyagr.c.
2859
2860         * Fixed some error checkings from the SFTP library which caused
2861           misbehaviour.  Affected files are lib/silcsftp/sftp_client.c
2862           and lib/silcsftp/sftp_util.c.
2863
2864         * Added new "debug" and "debug_string" settings to Irssi SILC
2865           client which can be used to print runtime debugging on the
2866           Irssi's screen.  Available when compiled with --enable-debug
2867           option.  Affected file irssi/src/silc/core/silc-core.c.
2868
2869 Tue Jun 11 16:36:02 CEST 2002 Johnny Mnemonic <johnny@themnemonic.org>
2870
2871         * Fixed a missing variadic parameter in a function call that
2872           caused server crash when a non-allowed connection arrived.
2873           Reported by Richard Becker.  Affected file silcd/server.c.
2874
2875 Mon Jun 10 16:29:42 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2876
2877         * Added WATCH list sending to backup routers from router.
2878           The WATCH command is sent by the router to the backup
2879           router.  Affected file silcd/command.c.
2880
2881         * Mark the backup_router flag for RouterConnection entry
2882           if the backup router stuff is defined in the config file.
2883           Affected file silcd/serverconfig.c.
2884
2885         * Fixed some backup data sending around the code to work better
2886           if the router is standalone router.  Not all places were fixed.
2887           Affected file silcd/packet_receive.c, silcd/packet_send.c,
2888           silcd/server.c.
2889
2890         * Fixed the router connecting when connecting to multiple
2891           routers.  It ignored every other router except the first
2892           one.  Affected file silcd/server.c.
2893
2894 Mon Jun 10 09:28:21 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2895
2896         * Made the private key generation after expiration optional.
2897           If not created after expiration the old key will re-expire
2898           at a later time (and thus key pair is not necessary to
2899           change).  Affected file irssi/src/silc/core/clientutil.c.
2900
2901 Sun Jun  9 18:58:25 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2902
2903         * The length arguments in bind() and connect() were wrong
2904           and fixed now to used SIZEOF_SOCKADDR in the
2905           lib/silcutil/unix/silcunixutil.c.
2906
2907 Tue Jun  4 18:36:05 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2908
2909         * Fixed detach timeout handling to use Client ID and not
2910           the actual client entry which may be freed in the callback.
2911           Affected file silcd/command.c.
2912
2913 Thu May 30 15:53:45 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2914
2915         * Merged c0ffee's multiple interface support patch.
2916           Affected files in silcd/.
2917
2918 Wed May 29 18:08:15 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2919
2920         * Cleanup keys properly.  Affected file is
2921           irssi/src/silc/core/clientutil.c.
2922
2923 Tue May 28 20:11:41 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2924
2925         * Display the user mode on the status bar.  Affected file
2926           irssi/src/silc/core/silc-expandos.c.
2927
2928 Tue May 28 13:56:26 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2929
2930         * If private message key is not set, but the flag is set in
2931           the packet, ignore the packet since it cannot be decrypted.
2932           Affected file lib/silcclient/client_prvmsg.c.
2933
2934 Thu May 23 12:00:14 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2935
2936         * When resuming client, remove the old client entry from
2937           the watcher list too.  Affected file silcd/packet_receive.c.
2938
2939         * Do not allow normal server to force founder mode away
2940           from router if the founder mode is already set.  Affected
2941           file silcd/packet_receive.c.
2942
2943         * Remove the client entry with watch notify types with short
2944           timeout, and not directly, so that other notifys can be
2945           retrieved too.  Affected file lib/silcclient/client_notify.c.
2946
2947         * Display notification about data messages that cannot be
2948           displayed.  Affected files irssi/src/silc/core/client_ops.c,
2949           irssi/src/fe-common/silc/module-formats.[ch].
2950
2951 Sun May 19 18:59:00 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2952
2953         * Fixed the CHANNEL_CHANGE notify handling in client libary
2954           to not use freed memory.  Affected file is
2955           lib/silcclient/client_notify.c.
2956
2957         * Fixed CUMODE_CHANGE notify handling in server.  Affected
2958           file silcd/packet_receive.c.
2959
2960         * Fixed USERS command to support empty channels.  Affected
2961           file silcd/command.c.
2962
2963 Sat May 18 11:35:19 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2964
2965         * Allow multiple identical pending commands to be registered
2966           in client library.  Affected file is lib/silcclient/command.c.
2967
2968         * Call the completion for resolving client information only
2969           after all resolvers has finished.  This fixes a crash in
2970           the client.  Added support for checking when the resolvers
2971           are finished.  Affected file is lib/silcclient/idlist.c.
2972
2973         * Wait by default 3 seconds before reconnecting to the server
2974           after being disconnected.  Makes the /detach command a bit
2975           more usable.
2976
2977 Fri May 17 17:23:45 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2978
2979         * Check the watcher list before sending signoff notifys
2980           when closing client connection.  Affected file is
2981           silcd/server.c.
2982
2983         * Added better CMODE command rights checking.  Affected file
2984           silcd/server_util.c.
2985
2986 Fri May 17 08:33:41 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2987
2988         * Fixed watcher list checking during server signoff.  It
2989           crashed the server.  Affected file silcd/server_util.c.
2990
2991         * The JOIN command reply returns now the founder's public
2992           key.  Affected file is silcd/command.c.
2993
2994         * Announce the channel mode, and the mode properties with
2995           CMODE_CHANGE notify.  Affected file silcd/server.c.
2996
2997         * Mark new channels by default disabled, untill at least
2998           one user joins the channel.  Affected file is
2999           silcd/packet_receive.c.
3000
3001 Thu May 16 13:05:13 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
3002
3003         * The nickname argument to watch notify can be optional.
3004           Fixes a crash in server.  Affected file silcd/packet_send.c.
3005
3006         * Remove the client entry from cache if the WATCH notify type
3007           is KILLED, SERVER_SIGNOFF or SIGNOFF.  Affected file is
3008           lib/silcclient/client_notify.c.
3009
3010         * Check the watcher list before and after changing nickname
3011           when the NICK_CHANGE notify is received.  Affected file is
3012           silcd/idlist.c.
3013
3014         * Fixed a crash in OPER and SILCOPER command sending.  Empty
3015           passphrase caused the crash.  Affected file is
3016           lib/silcclient/command.c.
3017
3018 Wed May 15 19:01:42 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3019
3020         * Merged with Irssi CVS for Irssi SILC client.
3021
3022 Tue May 14 19:37:48 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3023
3024         * Completed the protocol specifications.
3025
3026 Tue May  7 20:41:58 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3027
3028         * Merged with Irssi CVS for Irssi SILC client.
3029
3030 Tue May  7 11:07:16 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3031
3032         * Added the founder's public key delivery to the
3033           CUMODE_CHANGE notify type as well.  Updated the protocol
3034           specs and the code.  Affected files are silcd/packet_send.[ch],
3035           silcd/packet_receive.c and silcd/command.c.
3036
3037 Mon May  6 19:46:12 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3038
3039         * Added silc_pkcs_public_key_copy function into the
3040           lib/silccrypt/silcpkcs.[ch].
3041
3042         * Remove the `iv' from the SilcChannelEntry since we can
3043           live without it.  Affected files are silcd/idlist.h and
3044           silcd/packet_receive.c.
3045
3046         * Added support for sending the founder's public key in
3047           the CMODE_CHANGE notify packet in the server.  Affected
3048           files are silcd/packet_send.[ch], silcd/packet_receive.c,
3049           silcd/command.c and silcd/server.c.
3050
3051         * Changed the FOUNDER_AUTH authentication to use only
3052           public key authentication as defined by new protocol
3053           specs.  Passphrase authentication with that mode cannot
3054           be used anymore.  It is now possible to reclaim founder
3055           mode from any server in the network.  Affected files are
3056           silcd/command.c, silcd/idlist.h and silcd/command_reply.c.
3057
3058         * Added permanent channels support by making the channel
3059           permanent when FOUNDER_AUTH mode is set on the channel.
3060           The channel will not be destroyed even if channel is empty
3061           when that mode is set.  Protocol TODO #17.  Affected
3062           files are silcd/server.[ch], server_util.[ch],
3063           silcd/command.c, silcd/packet_receive.c and
3064           lib/silcclient/command.c.
3065
3066 Fri May  3 18:36:51 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3067
3068         * Added reference counter to the command reply context in
3069           the client library.  Affected files are
3070           lib/silcclient/command_reply.[ch].
3071
3072 Fri May  3 11:37:10 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3073
3074         * Fixed rekey protocol with PFS in the client library.
3075           Affected file is lib/silcclient/protocol.c.
3076
3077         * Added support for list of errors in client library
3078           command reply handling.  Affected file is
3079           lib/silcclient/command_reply.c.
3080
3081         * Defined that the WHOIS and IDENTIFY commands can send
3082           list of errors.  Updated the protocol specs.  Protocol
3083           TODO #2.
3084
3085         * Added support for sending list of errors to WHOIS and
3086           IDENTIFY commands in server.  Added support for receiving
3087           list of errors in server.  Affected files are
3088           silcd/command.c and silcd/command_reply.c.
3089
3090         * Fixed client info resolving on LEAVE command in client
3091           library to not crash.  Affected file is
3092           lib/silcclient/client_notify.c.
3093
3094 Thu May  2 08:45:11 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
3095
3096         * Defined that the NICK command replies with thew changed
3097           nickname too, to make the nickname changing simpler at
3098           the client's end.  Updated protocol specs and the code
3099           in client and server.  Affected files are
3100           silcd/command.c, lib/silcclient/command_reply.c and
3101           lib/silcclient/command.c.
3102
3103 Mon Apr 29 20:10:42 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3104
3105         * Added `Compressed' packet flag to indicate that the packet
3106           payload is compressed by the sender.  Updated the protocol
3107           specs and the core library.  The compression still is not
3108           implemented in the sources.  Affected file is
3109           lib/silccore/silcpacket.h.
3110
3111 Mon Apr 29 09:48:12 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
3112
3113         * Remove pending command callbacks also if the connection
3114           to the server is destroyed.  Affected file is
3115           lib/silcclient/client.c.
3116
3117 Sat Apr 27 19:52:32 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3118
3119         * Added new QUIET channel user mode that can be used to
3120           quiet a user in a channel.  Updated the protocol specs but
3121           it wasn't implemented yet.  Protocol TODO #27.  Affected
3122           file is lib/silccore/silcmode.h.
3123
3124 Mon Apr 22 09:09:44 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
3125
3126         * Added BLOCK_INVITE user mode to be able to block incoming
3127           invite notifications.  Protoocol TODO #26.  Affected files
3128           are lib/silccore/silcmode.h, lib/silcclient/command.c and
3129           silcd/command.c.
3130
3131         * SILC Publickey fields MUST be UTF-8 encoded now.  Updated
3132           the protocol specs and the code.  Affected file is
3133           lib/silccrypt/silcpkcs.c.
3134
3135 Sun Apr 21 19:44:38 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3136
3137         * Disconnect Payload includes now the status type.  Updated
3138           the protocol specs and the code.  Protocol TODO #25.
3139           Affected files are silcd/server.c, lib/silcclient/client.c.
3140
3141         * Added NOT_AUTHENTICATED, BAD_SERVER_ID, INCOMPLETE_INFORMATION,
3142           KEY_EXCHANGE_FAILED and BAD_VERSION error status types.
3143           Moved the silc_client_command_status_messages table to the
3144           lib/silcutil/silcutil.c and added new funtion
3145           silc_get_status_message, which deprecates function
3146           silc_client_status_message.  Affected files are
3147           lib/silccore/silcstatus.h, lib/silcclient/command_reply.[ch],
3148           lib/silcutil/silcutil.[ch].
3149
3150 Fri Apr 19 17:35:15 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3151
3152         * Defined that the nickname hash in Client ID MUST be from
3153           lowercase nickname.  This effectively changes nicknames in
3154           SILC to case-insensitive.  Updated the protocol specs and
3155           the code.  Affected files are lib/silcutil/silcutil.[ch],
3156           silcd/serverid.c, and silcd/idlist.c.
3157
3158         * Added new channel user modes BLOCK_MESSAGES_USERS and
3159           BLOCK_MESSAGES_ROBOTS.  Updated the protocol specs and the
3160           code.  Affected files are lib/silccore/silcmode.h,
3161           lib/silcclient/command.c, and silcd/packet_send.c.
3162
3163         * Added new error status ERR_RESOURCE_LIMIT.  Updated protocol
3164           specs and code.  Affected file lib/silccore/silcstatus.h.
3165
3166         * Added support for watch list.  It is possible to add nicknames
3167           to be watched, and when they come to network, leave network
3168           or user mode changes the watcher will be notified of this
3169           change.  Added SILC_COMMAND_WATCH command, added new
3170           notify type SILC_NOTIFY_TYPE_WATCH to deliver the watch
3171           notifications.  Updated the protocol specs and implemented
3172           this to library, client and server.  Protocol TODO #21.
3173           Affected files are lib/silccore/silccomand.h,
3174           lib/silccore/silcnotify.h, lib/silcclient/command[_reply].[ch],
3175           silcd/command[_reply].[ch], lib/silcclient/client_notify.c,
3176           silcd/packet_send.[ch], silcd/packet_receive.c, and
3177           irssi/src/silc/core/client_ops.c.
3178
3179         * Added user mode SILC_UMODE_REJECT_WATCHING to reject
3180           somebody watching you.  Updated the protocol specs and the
3181           code.  Affected files are lib/silccore/silcmode.h, and
3182           lib/silcclient/command.c.
3183
3184 Fri Apr 19 09:02:20 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
3185
3186         * Added service support to SILC protocol.  Added new command
3187           SILC_COMMAND_SERVICE.  Updated the protocol specs and the
3188           core library.  Services are not implemented in server or
3189           client for now.  Protocol TODO #20.  Affected files are
3190           lib/silccore/silcstatus.h, lib/silccore/silccommand.h.
3191
3192         * Added SilcStatus argument to `command' client operation
3193           to return the error status when command sending fails
3194           locally.  Changed all command in client library to return
3195           correct command status.  Affected files are
3196           lib/silcclient/command.c, lib/silcclient/silcclient.h and
3197           irssi/src/silc/core/client_ops.c.
3198
3199 Thu Apr 18 14:09:51 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
3200
3201         * Added silc_mime_parse function to parse MIME headers.
3202           Affected files are lib/silcutil/silcstruti.[ch].
3203
3204         * Added MIME header parsing in Irssi SILC Client.  It displays
3205           all textual MIME objects, others it ignores.  Affected file
3206           is irssi/src/silc/core/clien_ops.c.
3207
3208 Wed Apr 17 22:07:59 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
3209
3210         * Fixed a bug in the pid writing function, which couldn't be
3211           written in a root-owned directory.
3212
3213 Tue Apr 16 09:34:40 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3214
3215         * Defined that channel message to unknown Channel ID must
3216           cause SILC_NOTIFY_TYPE_ERROR notify message to the sender.
3217           Updated the protocol specs and the code in server.  The
3218           affected file is silcd/packet_receive.c.
3219
3220 Mon Apr 15 19:57:57 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3221
3222         * Added new notify type SILC_NOTIFY_TYPE_ERROR and specified
3223           that it is used to send error notifys if error occurs during
3224           some SILC packet processing, except commands.  The error
3225           types are same as for command reply types.  Defined that
3226           if private message is sent to unknown Client ID the error
3227           is sent in SILC_NOTIFY_TYPE_ERROR instead of command reply.
3228           Updated the protocol specs and code.  Affected files are
3229           lib/silccore/silcnotify.h, added lib/silccore/silcstatus.h,
3230           lib/silcclient/client_notify.c, silcd/packet_receive.c,
3231           and irssi/src/silc/core/client_ops.c.  Renamed the
3232           SilcCommandStatus to SilcStatus.
3233
3234         * Defined the use of extra WHOIS attributes in WHOIS command.
3235           The <Requested Attributes> (defined in a separate document)
3236           can be used to request additional information about user
3237           not returned by standard WHOIS command.  Defined that server
3238           can send WHOIS command directly to client.  Client provides
3239           the requested attributes to the server.  Updated the protocol
3240           specs.  Protocol TODO #4.  Implementation is not done yet
3241           (Protocol TODO #24).
3242
3243         * Renamed function silc_client_command_status_message to
3244           silc_client_status_message.  Affected files are
3245           lib/silcclient/command_reply.[ch].
3246
3247 Sun Apr 14 21:13:42 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3248
3249         * Changed the WHOIS, IDENTIFY and WHOWAS count arguments to
3250           32 bit integers.  Updated the protcol specs and the code.
3251           Affected files are silcd/command.c and
3252           lib/silcclient/command.c.
3253
3254 Sun Apr 14 19:49:02 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
3255
3256         * Fixed a bug in library where sending a bogus authentication
3257           payload would lead to a crash.  Affected file is
3258           lib/silccore/silcauth.c.
3259
3260 Sat Apr 13 13:09:24 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3261
3262         * Added detach_disabled and detach_timeout server config
3263           options to the server.  Affected files silcd/serverconfig.[ch],
3264           silcd/command.c and silcd/packet_receive.c.
3265
3266 Fri Apr 12 20:09:08 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3267
3268         * Added resolve_cmd_ident field to the SilcClientEntry structure
3269           too so that if the entry is for example being resolved so
3270           another command may attach to the same pending command reply
3271           without requiring to resolve the same entry again.  Added
3272           support for adding multiple pending commands for one
3273           command idenfier.  Affected files lib/silcclient/command.[ch],
3274           lib/silcclient/command_reply.[ch], lib/silcclient/idlist.h.
3275
3276 Fri Apr 12 10:17:51 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3277
3278         * Defined that server receives WHOIS command reply for private
3279           and secret channels too.  Updated protocol specs and the
3280           code in server.  Affected file silcd/command.c.
3281
3282         * Defined <channel user mode list> argument to WHOIS command
3283           reply for returning user modes on the channels.  The
3284           channel list now doesn't include the user mode anymore but the
3285           actual channel mode.  Updated protocol specs and the code in
3286           client and server.  Affected files are silcd/command_reply.c,
3287           silcd/command.c, silcd/server.c, irssi/src/silc/core/client_ops.c,
3288           and lib/silcclient/command_reply.c.
3289
3290         * Save the channels list in WHOIS command reply in normal server
3291           so that WHOIS always shows joined channels also in normal
3292           server and not just on router.  Affected file is
3293           silcd/command_reply.c.
3294
3295 Thu Apr 11 22:29:33 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3296
3297         * Defined that server receives USERS command reply for private
3298           and secret channels too.  Updated protocol specs and the
3299           code in server.  Affected file silcd/command.c.
3300
3301 Thu Apr 11 16:32:08 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3302
3303         * Changed the UMODE's mode mask argument to be optional.  If
3304           not provided then the command merely returns the current mode
3305           mask to the client.  Updated protocol specs and the server.
3306           Affected file is silcd/command.c.
3307
3308         * Added SILC session detachment/resuming support.  It is possible
3309           to detach by closing the network connection and then re-connect
3310           and resume to the old client session.  Added DETACHED user
3311           mode that server will set for detached client.  Added new
3312           packet RESUME_CLIENT which is used to perform the resuming
3313           process.  Added DETACH command.  Updated the protocol specs,
3314           core library, client and server.  Protocol TODO #22.  Very
3315           many affected files around the tree.
3316
3317 Wed Apr 10 16:32:01 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3318
3319         * Changed the CMODE's mode mask argument to be optional.  If
3320           not provided then the command merely returns the current mode
3321           mask to the client.  Updated protocol specs and the server.
3322           Affected file is silcd/command.c.
3323
3324         * Changed the Killer's Client ID in KILLED notify to be just
3325           any ID payload since router server is allowed to kill as well.
3326           Updated protocol specs, client libary and server.  Affected
3327           files are lib/silcclient/client_notify.c, silcd/packet_receive.c,
3328           and irssi/src/silc/core/client_ops.c.
3329
3330 Tue Apr  9 17:15:42 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3331
3332         * Added new user modes ANONYMOUS for special anonymous servers
3333           that may set the mode for client, and BLOCK_PRIVMSG which
3334           client may set to block incoming private messages unless the
3335           Private Message Key flag is set (using private keys to protect
3336           private messages).  Updated protocol specs and code in client
3337           and server and core library.  Protocol TODO #23.  Affected
3338           files are lib/silccore/silcmode.h, silcd/server.[ch],
3339           irssi/src/silc/core/client_ops.c, silcd/packet_receive.c,
3340           irssi/docs/help/in/umode.in, lib/silcclient/command.c.
3341
3342         * Added new channel user mode BLOCK_MESSAGES which the client
3343           may set to itself to tell server not send channel messages.
3344           Other packets such as channel key packets are still sent.
3345           Protocol TODO #23.  Updated the protocol specs, client and
3346           server.  Affected files are lib/silccore/silcmode.h,
3347           irssi/docs/help/in/cumode.in, lib/silcclient/command.c,
3348           lib/silcutil/silcutil.c, silcd/command.c, and
3349           silcd/packet_send.c.
3350
3351 Mon Apr  8 23:57:32 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3352
3353         * Redefined the Status Payload to include now two 8 bit fields,
3354           instead of one 16 bit field.  This now makes it possible to
3355           send list of errors.  Updated the protocol specs and the code
3356           in core library, client library and server.  Protocol TODO #1.
3357           Affected files are lib/silccore/silccommand.[ch],
3358           lib/silcclient/command_reply.[ch], silcd/command.c,
3359           silcd/command_reply.c and silcd/packet_receive.[ch].
3360
3361 Mon Apr  8 19:57:40 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
3362
3363         * Added config parse status SILC_CONFIG_EPRINTLINE, this status
3364           must be handled by the application and should tell the application
3365           that an error message was already printed, and it should print the
3366           config coords (line, filename, ...).  Affected files are
3367           silcd/serverconfig.c, lib/silcutil/silcconfig.[ch].
3368
3369         * Added local macro SILC_SERVER_CONFIG_ALLOCTMP to make the
3370           server config parsing code more readable.
3371
3372           Fixed a bug in the fetch_logging() config callback.
3373
3374           Affected files is silcd/serverconfig.c.
3375
3376         * Drop root privileges when started in foreground.  Don't drop them
3377           if debugging also.  Affected file is silcd/silcd.c.
3378
3379 Mon Apr  8 17:00:41 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3380
3381         * Added more IM-like features by introducing new user modes
3382           for setting various presence information.  Added new modes:
3383           INDISPOSED, BUSY, PAGE, HYPER and ROBOT.  Updated protocol
3384           specs and code.  Protocol TODO #19. Affected files are
3385           lib/silccore/silcmode.h, irssi/src/silc/core/client_ops.c,
3386           irssi/docs/help/in/umode.in and lib/silcclient/command.c.
3387
3388 Sun Apr  7 17:07:59 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3389
3390         * Added STATS command to the protocol after all, to return
3391           various statistical information about the network.  It can
3392           be used by clients to retrieve statistical information, and
3393           servers may use it to to fetch cell and network wide
3394           statistics from router.  Updated the protocol specs and
3395           implemented it to the server.  Protocol TODO #16.
3396           Affected files are lib/silccore/silccommand, silcd/command.[ch],
3397           silcd/command_reply.[ch].
3398
3399 Sat Apr  6 17:08:58 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3400
3401         * The LIST command reply in client libary now adds new channel
3402           entry if the returned channel doesn't exist yet in cache,
3403           and returns the channel entry to the application in the
3404           command_reply client operation.  Affected file is
3405           lib/silcclient/command_reply.c.
3406
3407         * Changed the channel message payload's MAC generation to
3408           include the IV in the MAC as well.  This way all relevant
3409           parts of the channel message payload are authenticated also
3410           with the channel message MAC (and not only by packet MAC).
3411           Causes incompatibility with 1.0 protocol.  Protocol TODO #7.
3412           Affected file is lib/silccore/silcchannel.c.
3413
3414         * Fixed the SKE to save the remote version, since the
3415           silc_ske_parse_version mistakenly checked wrong version,
3416           after it replaced the start payload.  Affected files are
3417           lib/silcske/silcske.[ch].
3418
3419 Fri Apr  5 16:03:03 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3420
3421         * Splitted lib/silcutil/silcutil.h into silcstrutil.h for
3422           string utility functions.  Added there also new functions
3423           silc_utf8_[encode/decode/valid] for UTF-8 string encoding.
3424           Affected files lib/silcutil/silcstrutil.[ch].
3425
3426         * Renamed silc_*_pem functions to silc_pem_* functions.  Affected
3427           files are lib/silcutil/silcstrutil.[ch].
3428
3429         * Defined that the security property fields in SKE SHOULD be
3430           UTF-8 encoded, defined that version string MUST be US-ASCII
3431           encoded, defined that passphrases sent in connection
3432           authentication protocol MUST be UTF-8 encoded.  Implemented
3433           these to the client and server.  Defined also that other
3434           passphrases sent in the protocol MUST be UTF-8 encoded.
3435           Affected files are lib/silcske/silcske.c,
3436           lib/silcclient/protocol.c, silcd/protocol.c,
3437           silcd/serverconfig.c, and lib/silccore/silcauth.c.
3438
3439         * Changed the silc_client_close_connection interface to not
3440           need the SilcSocketConnection which should not be visible
3441           to application.  Affected files are lib/silcclient/client.c
3442           and lib/silcclient/silcclient.h.
3443
3444         * Rewrote the text for Private Message Key Payload in the
3445           protocol specification.  Protocol TODO #11.
3446
3447 Wed Apr  3 16:24:51 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3448
3449         * Upgraded the protocol version to 1.1, updated protocol specs
3450           and software.
3451
3452         * Added the nickname as new argument to NICK_CHANGE notify and
3453           added it to protocol specs and implemented it to client and
3454           server.  Protocol TODO #3.  Affected files are silcd/idlist.[ch],
3455           silcd/command.c, silcd/packet_receive.c, packet_send.[ch], and
3456           lib/silcclient/client_notify.c.
3457
3458         * Added the killer's client ID to the KILLED notify and added
3459           it to protocol specs and implemented it to client and server.
3460           Protocol TODO #13.  Affected files are silcd/command.c,
3461           silcd/packet_receive.c, packet_send.[ch],
3462           lib/silcclient/client_notify.c, irssi/src/silc/core/client_ops.c.
3463           The killer's client entry is now returned to application in
3464           the `notify' client operation.
3465
3466         * Fixed the Max Argument fields that had too large value set
3467           in the protocol specs.  Protocol TODO #14.
3468
3469         * Added the LEAVE command reply to return the ID of parted
3470           channel.  Updated protocol specs and implemented it to the
3471           client and server.  Protocol TODO #15.  Affected files are
3472           silcd/command.c, lib/silcclient/command_reply.c.  The channel
3473           entry is now returned to application in the `command_reply'
3474           client operation.
3475
3476         * Rewrote the version SKE version checking in client libary
3477           and in server to use the silc_parse_version_string.  Affected
3478           files are lib/silcclient/protocol.c, silcd/protocol.c.
3479
3480         * Added SILC_STATUS_ERR_NO_CHANNEL_FOPRIV error status to few
3481           commands that was missing it, and updated protocol specs and
3482           the server implementation.  Protocol TODO #10.  The affected
3483           file is silcd/command.c.
3484
3485         * Defined new message flags SILC_MESSAGE_FLAG_REPLY to be
3486           generic reply to a generic request (REQUEST flag), and
3487           SILC_MESSAGE_FLAG_DATA to send any kind of data in a generic
3488           way.  A draft-riikonen-silc-flags-payloads-00.txt is written
3489           to define the payload for DATA flag.  Added the flags to
3490           the implementation.  Protocol TODO #9.  Affected file is
3491           lib/silccore/silcchannel.h.
3492
3493           Changed the client library to return the message length
3494           to application as well in the channel_message and private_message
3495           client operations.  Affected files are
3496           lib/silcclient/client_prvmsg, lib/silcclient/client_channel.c,
3497           lib/silcclient/silcclient.h, irssi/src/silc/core/client_ops.c,
3498           and lib/silcclient/client_ops_example.c.
3499
3500         * Added two new channel modes: SILC_CMODE_SILENCE_USERS
3501           and SILC_CMODE_SILENCE_OPERS which can be used to moderate
3502           the channel.  Updated protocol specs and impelemented this
3503           to client and server.  Protocol TODO #6.  Affected files are
3504           silcd/packet_receive.c, server_util.c, lib/silcclient/command.c,
3505           lib/silcclient/client_channel.c, lib/silccore/silcmode.h.
3506
3507           Added new options m and M to CMODE command in Irssi SILC
3508           client to set these modes.
3509
3510         * Deprecated all administrative commands from SILC protocol
3511           since they are highly implementation specific commands.
3512           Updated protocol specs.  Moved the old commands in
3513           implementations to private range of command types.  Affected
3514           files are silcd/command.c, lib/silcclient/command.c and
3515           lib/silcclient/command_reply.c.  Protocol TODO #8.
3516
3517         * Fixed a bug in server where sending unknown command crashes
3518           the server.  Affected file silcd/command.c.
3519
3520 Wed Apr  3 09:57:47 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
3521
3522         * Added SILC_PROTOCOLVERSION macro to check protocol version
3523           of a socket connection.  The affected file is
3524           lib/silcutil/silcsockconn.h.
3525
3526         * Added better error logging in rekey protocol.  Affected file
3527           silcd/protocol.c.
3528
3529         * Do not check public key types in SKE during rekey.  Affected
3530           file lib/silcske/payload.c.
3531
3532         * Fixed the rekey protocol with PFS, which was totally broken.
3533           Affected file silcd/protocol.c.
3534
3535 Tue Apr  2 14:55:06 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
3536
3537         * Some client implementations quit network by doing first LEAVE
3538           and then immediately SIGNOFF (like Bombyx).  We now do check
3539           after a short time after LEAVE notify and check whether the
3540           client is still valid after LEAVE, and if not we remove it from
3541           cache.  Affected file is lib/silcclient/client_notify.c.
3542
3543 Tue Apr  2 13:39:04 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
3544
3545         * Merged version 1.1.4 of zlib. Even if it not currently in use,
3546           it's good not to have security holes here.
3547
3548         * Fixed a negative refcount situtuation for the config context.
3549           Affected file is silcd/serverconfig.c.
3550
3551 Mon Apr  1 20:15:10 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
3552
3553         * ROBOdoc documented lib/silcutil/silcutil.h.
3554
3555 Sat Mar 30 21:06:45 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3556
3557         * Optimized even more the SilcPacketContext structure.  Now
3558           totally saved 16 bytes of memory per context after optimization.
3559           Affected files are lib/silccore/silcpacket.[ch].
3560
3561         * Made strict checks for valid SILC IDs.  Affected file is
3562           lib/silccore/silcid.c.
3563
3564 Sat Mar 30 18:15:55 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3565
3566         * Changed the object argument for silc_cipher_register,
3567           silc_hash_register, silc_hmac_register and silc_pkcs_register
3568           to const.  Affected files are lib/silccrypt/silccipher.[ch],
3569           silchash.[ch], silchmac.[ch] and silcpkcs.[ch].
3570
3571         * Changed the silc_get_username and silc_get_real_name to
3572           never fail.  Affected file lib/silcutil/unix/silcunixutil.c.
3573
3574         * Fixed the Irssi SILC Client to use the silc_get_username and
3575           silc_get_real_name insted of glib routines since the glib
3576           routines only corrupt stack.  Fixes the Irssi SILC to work in
3577           Cygwin.  Affected file irssi/src/silc/core/silc-core.c.
3578
3579         * Fixed the Irssi to not use g_get_home_dir since it crashes
3580           or returns garbage on cygwin and corrupts stack.  Added function
3581           get_home_dir to Irssi routines.  Affected files are
3582           irssi/src/core/misc.[ch] and irssi/src/core/core.c.
3583
3584 Fri Mar 29 21:55:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3585
3586         * Made some structure optimizations.  SFTP memory FS MemFSEntry
3587           entry structure.  Optimized SilcTask structure.  Optimized
3588           SilcPacketContext structure.
3589
3590           Affected files lib/silcsftp/sftp_fs_memory.c,
3591           lib/silcutil/silcschedule.c, lib/silccore/silcpacket.h.
3592
3593 Fri Mar 29 10:41:07 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3594
3595         * And yet again reverted back the config thing since Johnny
3596           screwed it up.  Affected file silcd/serverconfig.[ch], server.c,
3597           and silcd.c.
3598
3599         * Fixed memory leaks from config object.  Affected files are
3600           silcd/serverconfig.[ch].
3601
3602         * Added support for adding new connections to the server in rehash.
3603           After rehash they take effect.
3604
3605           Added support for changing the maximum allowed connections in
3606           rehash.  The number can grow but going smaller is not supported.
3607
3608           Added function silc_server_num_sockets_by_remote to the
3609           silcd/server_util.[ch].
3610
3611           Affected files are silcd/server.c, and silcd/serverconfig.[ch].
3612
3613 Fri Mar 29 03:26:12 CET 2002 Johnny Mnemonic <johnny@themnemonic.org>
3614
3615         * Added preliminary checking during config parsing for a valid
3616           public/private key and removed further checks in the code.
3617           Affected files are silcd/serverconfig.[ch], server.c.
3618
3619         * Moved functions silc_server_drop() and silc_server_daemonise()
3620           from server.c to silcd.c since they are stricly related to
3621           the application activity.
3622
3623         * Reverted a small part of the automatic ref/unref since
3624           it caused a double unref in some situations.  Affected
3625           files are silcd/silcd.[ch], server.c, serverconfig.c.
3626
3627         * Added some .cvsignore files in the lib directory.
3628
3629 Thu Mar 28 22:51:15 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3630
3631         * Fixed silc_net_gethostbyaddr to correctly resolve by
3632           address.  Affected file lib/silcutil/silcnet.c.
3633
3634         * Fixed the notify relaying to client.  The HMAC to be used
3635           with relayed packets ws wrong and caused decryption failure
3636           at the client end.  Affected file is silcd/packet_receive.c.
3637
3638 Thu Mar 28 19:02:05 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3639
3640         * Created new branch silc_protocol_1_0_branch.
3641
3642         * Reverted the silc_log_quick change in lib/silcutil/silclog.c.
3643
3644         * Changed the silc_server_config_* routines to be SilcServer
3645           independent.  They are now officially application specific code
3646           and not part of generic server implementation.  Affected files
3647           are silcd/serverconfig.[ch], silcd/silcd.c, silcd/server.c.
3648
3649 Thu Mar 28 17:01:43 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3650
3651         * Added automatic referencing of config context in the
3652           silc_server_config_alloc, and automatic unreferencing in the
3653           silc_server_config_destroy.  Affected files are
3654           silcd/serverconfig.[ch], silcd/silcd.c.
3655
3656         * Fixed the silc_log_quick handling in the logging routines.
3657           It didn't log quickly when it was TRUE.  Affected file is
3658           lib/silcutil/silclog.c.  Also the flush delay was set even
3659           if it was 0 in config file.  Affected file is
3660           silcd/serverconfig.c.
3661
3662         * Added support for changing key pair of the server in rehash.
3663           Affected file silcd/server.c.
3664
3665 Thu Mar 28 12:17:21 CET 2002  Pekka Riikonen <priikone@silcnet.org>
3666
3667         * Fixed the TOPIC_SET notify to not cras.  It changed the topic
3668           too early, before getting the channel entry.  Affected file
3669           is silcd/packet_receive.c.
3670
3671 Thu Mar 28 09:58:16 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
3672
3673         * Added functions silc_server_config_[ref/unref], these are used
3674           to prevent that the config object is destroyed.
3675
3676           No longer directly affect global variables silc_log_quick and
3677           silc_log_delay, they are first cached inside the config object
3678           and then applied with silc_server_config_setlogfiles().
3679
3680           silc_server_config_set_defaults() is now internal to
3681           serverconfig.c, there are no reasons to show this internal stuff
3682           to the server.
3683
3684           Affected files are silcd/serverconfig.[ch].
3685
3686         * Added macro SILC_SERVER_LOG_STDERR(), this should replace most
3687           fprintf's to stderr, since some code may be executed again after
3688           the server went into the background.  Affected files are
3689           silcd/server.[ch].
3690
3691         * Added rehash support. Added function silc_server_rehash() that
3692           will perform all the basic tasks of the rehashing procedure.
3693
3694         * Added command line option `-x, --hexdump'. This will enable the
3695           SILC_LOG_HEXDUMP calls that are no longer enabled with `--debug'.
3696           The option `--hexdump' implies `--debug'.
3697
3698         * Fixed a bad bug in the logging APIs (silcutil library) where
3699           the application would crash after calling silc_log_reset_all().
3700
3701 Wed Mar 27 19:43:16 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3702
3703         * Fixed the KICKED notify handling in client library to
3704           correctly remove the channel and all entries from the
3705           channel when I was kicked.  This bug crashed the client.
3706
3707           Fixed yet another but in KICKED notify handling to remove
3708           the kicked client correctly from the channel.
3709
3710           Affected file is lib/silcclient/client_notify.c.
3711
3712         * Fixed a minor bug in looking up correct client entry
3713           in KICKED notify in server.  Affected file is
3714           silcd/packet_receive.c.
3715
3716         * Fixed the lib/silcmath/Makefile.am to include the MPI and GMP
3717           sources correctly to distribution.  Fixes --with-gmp option.
3718
3719         * Removed the manual rehashing from ID Cache, and changed it
3720           to use the SILC Hash Table's auto rehash feature.  Affected
3721           file is lib/silccore/silcidcache.c.
3722
3723 Wed Mar 27 00:07:11 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3724
3725         * Fixed a bug in the silc_client_nickname_format function that
3726           handles the multiple same nickname formatting.  Two clients
3727           with same nickname caused problems after the first one left
3728           and rejoined.  It didn't format the nickname correctly.
3729           Affected file is lib/silcclient/idlist.c.
3730
3731 Tue Mar 26 19:33:03 CET 2002  Pekka Riikonen <priikone@silcnet.org>
3732
3733         * Don't change the topic if olod topic is same as new one.
3734           Affected file is silcd/packet_receive.c.
3735
3736 Mon Mar 25 21:11:35 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3737
3738         * Added cross-reference support to the SILC Documentation
3739           generator.  All types across all HTML files are now cross-
3740           referenced.  Affected files util/robodoc/generator.c and
3741           scripts/silcdoc/silcdoc.
3742
3743         * Added file lib/silcutil/silctypes.h to include all the
3744           arithmetic type definitions and some macros.  Removed
3745           includes/bitmove.h and moved macros to silctypes.h.
3746
3747 Mon Mar 25 17:19:46 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3748
3749         * Merged bugfixes for Irssi SILC client from irssi.org CVS.
3750
3751 Sun Mar 24 11:21:04 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3752
3753         * Added `type' argument to silc_id_payload_parse_id function which
3754           now returns the type of the ID to the sent pointer.  Affected
3755           file is lib/silccore/silcid.[ch].
3756
3757         * Added check for CMODE_CHANGE notify type that mode change is
3758           allowed by the sender.  Affected file silcd/packet_receive.c.
3759
3760         * Added check for CUMODE_CHANGE notify type that mode change is
3761           allowed by the sender.  Affected file silcd/packet_receive.c.
3762           Added the ID type as CUMODE_CHANGE notify type as argument
3763           to the `notify' client operation.  Affected files are
3764           lib/silcclient/client_notify.c, irssi/src/silc/core/client_ops.c.
3765
3766         * Added function silc_client_add_server to the client library.
3767           Added support for resolving also channel and server info when
3768           received unknown entity in notify packet.  Affected files are
3769           lib/silcclient/idlist.[ch], lib/silcclient/client_notify.c.
3770
3771         * Added function silc_command_get_status to return the command
3772           status from the command reply's argument payload.  Affected files
3773           are lib/silccore/silccommand.[ch].
3774
3775         * Added check for KICKED notify type that the kicking is
3776           allowed by the client.  Affected file silcd/packet_receive.c.
3777
3778         * Created function silc_get_input which can be used to get input
3779           (echo on or off) from user on command line.  Affected files are
3780           lib/silcutil/silcutil.[ch].
3781
3782 Sat Mar 23 09:51:26 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3783
3784         * Optimized silc_server_packet_relay_to_channel function.
3785           Added new function silc_channel_message_payload_encrypt which
3786           can be called directly if channel message payload needs to
3787           be encrypted and is already encoded (no need to call _encode
3788           function).  Packet relaying is now done by router without any
3789           extra memory allocations.  Affected files are
3790           lib/silccore/silcchanel.[ch], silcd/packet_receive.c and
3791           silcd/packet_send.c.
3792
3793         * Fixed the INVITE notify handling.  It took wrong arguments
3794           as invite list and invite delete.  Affected file is
3795           silcd/packet_receive.c.
3796
3797         * Added check for TOPIC_SET notify type that the topic change is
3798           allowed by the client.  Affected file silcd/packet_receive.c.
3799
3800         * Added check for INVITE notify type that inviting is allowed by
3801           the client.  Affected file silcd/packet_receive.c.
3802
3803         * Changed the silc_server_client_on_channel to return the
3804           SilcChannelClientEntry as well.  Moved the function
3805           silc_server_check_cmode_rights to server_util.[ch].
3806           Affected files are silcd/server_util.[ch], silcd/command.c.
3807
3808         * Added function silc_server_check_umode_rights to check whether
3809           changing client's user mode is allowed.  Added check for
3810           UMODE_CHANGE notify type that the umode change is allowed
3811           by the client.  Affected files are silcd/server_util.[ch],
3812           silcd/packet_receive.c and silcd/command.c.
3813
3814 Fri Mar 22 12:25:58 CET 2002  Pekka Riikonen <priikone@silcnet.org>
3815
3816         * Fixed the SILC_PACKET_MAX_ID_LEN to actually be the max
3817           ID length.  It ignored that ID can be IPv6 based as well.
3818           Affected file lib/silccore/silcpacket.h.
3819
3820         * Fixed the silc_id_id2str and silc_id_str2id to take the
3821           IPv6 address offset's into consideration.  Affecte file is
3822           lib/silccore/silcid.c.
3823
3824 Thu Mar 21 20:44:13 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3825
3826         * Fixed the internal Unix scheduler functions to check for
3827           NULL context they may receive.  The affected file is
3828           lib/silcutil/unix/silcunixschedule.c.
3829
3830 Thu Mar 21 19:12:22 EET 2002  Timo Sirainen <tss@iki.fi>
3831
3832         * Changed hardcoded ~/.silc paths to use get_irssi_dir() so you
3833           can specify different directory with --home command line
3834           parameter. Affected files irssi/src/silc/core/client_ops.c,
3835           clientutil.c
3836
3837         * SILC-specific commands aren't now executed if the active server
3838           isn't of SILC-type, so there won't be problems with having
3839           IRC and SILC protocol support in same client. Affected files
3840           irssi/src/silc/core/silc-channels.c, silc-servers.c,
3841           silc-commands.h
3842
3843 Wed Mar 20 11:06:57 CET 2002  Pekka Riikonen <priikone@silcnet.org>
3844
3845         * Improved the signal support in SILC Schedule.  Added new
3846           function silc_schedule_signal_call which is used by application
3847           to mark a signal to be called.  It is now safe to perform
3848           any kind of tasks in signal callbacks since it is guaranteed
3849           that the application specified signal callback is called
3850           after the signal is over.  Affected files are
3851           lib/silcutil/silcschedule.[ch], lib/silcutil/*/silc*schedule.c.
3852
3853 Tue Mar 19 20:42:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3854
3855         * Added `name' field to SilcChannelPrivateKey to represent
3856           application given name for the key.  Moved also the context from
3857           lib/silcclient/idlist.h into lib/silcclient/silcclient.h.
3858           Added the `name' argument also to the function
3859           silc_client_add_channel_private_key.
3860
3861           Added function silc_client_current_channel_private_key to set the
3862           current channel private key in use.
3863
3864           Added "change" command to KEY command which can be used to change
3865           the current channel private key.  Bound the command also to
3866           alt+K (Alt+Shift+k).
3867
3868           Also affected files lib/silcclient/client_channel.c,
3869           irssi/src/docs/help/in/key.in, irssi/src/silc/core/silc-channel.c.
3870
3871 Tue Mar 19 16:32:43 CET 2002  Pekka Riikonen <priikone@silcnet.org>
3872
3873         * Added silc_rng_get_byte_fast function in to the
3874           lib/silccrypt/silcrng.[ch].
3875
3876         * Changed the interface of silc_packet_assemble and the
3877           silc_packet_send_prepare.  If silc_packet_assmble is now
3878           called the application does not call silc_packet_send_prepare
3879           because the library will call it automatically.  These
3880           interfaces now also return a reference to the outgoing buffer
3881           which includes the assembled packet, which the application can
3882           use to encrypt the packet.
3883
3884           Affected files are lib/silccore/silcpacket.[ch],
3885           lib/silcclient/client.c, client_channel.c client_prvmsg.c,
3886           silcd/packet_send.c, server_backup.c and packet_receive.c.
3887
3888         * Fixed a packet sending bug on very high load, where outgoing
3889           packet queue wasn't handled correctly and packets got corrupted.
3890           Affected files are lib/silcutil/*/silc*sockconn.c,
3891           lib/silcclient/client.c and silcd/server.c.
3892
3893 Mon Mar 18 21:00:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3894
3895         * Added macro SILC_PACKET_DATALEN which can be used during
3896           packet assembling to check whether the data to be added to
3897           the packet will fit to SILC_PACKET_MAX_LEN.  If not the data
3898           len is truncated until it fits it.
3899
3900           Added checks for maximum length of channel message payload and
3901           private message payload also.
3902
3903           Added checks for maximum packet length in server and in
3904           client library.
3905
3906           Affected files are lib/silccore/silcpacket.h, silcd/packet_send.c,
3907           lib/silcclient/client.c, lib/silccore/silcchannel.c and
3908           lib/silccore/silcprivate.c, lib/silcclient/client_channel.c and
3909           lib/silcclient/client_prvmsg.c.
3910
3911 Mon Mar 18 14:54:42 CET 2002  Pekka Riikonen <priikone@silcnet.org>
3912
3913         * Added silc_server_packet_queue_purge call to the
3914           silc_server_disconnect_remote to assure that all data in the
3915           queue before disconnecting is sent to the network.  Affected
3916           file silcd/server.c.
3917
3918 Sun Mar 17 19:26:16 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3919
3920         * Added the deleting of server's own ID cache entry to the
3921           silc_server_free function.  Free also everything else that
3922           has been allocated in silc_server_init.  The affected file
3923           is silcd/server.c.
3924
3925 Sun Mar 17 15:44:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3926
3927         * Added functions silc_parse_version_string, silc_version_to_num,
3928           and silc_ske_parse_version to parse SILC protocol style version
3929           strings.  Affected files lib/silcutil/silcutil.[ch] and
3930           lib/silcske/silcske.[ch].
3931
3932         * Added new configuration params: version_protocol, version_software
3933           and version_software_vendor to specify what version the remote
3934           host must at least be to be able to connect to server.  The vendor
3935           string can be regex matched too.  Added new function
3936           silc_server_connection_allowed to check maximum number of allowed
3937           connections, and allowed versions for incoming connections.
3938           Affected files are silcd/server.c, server_util.[ch] and
3939           serverconfig.[ch].
3940
3941 Sun Mar 17 10:24:50 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3942
3943         * Added preliminary support for signals in scheduler.  The
3944           signals we care about are now blocked always when the scheduler
3945           is locked.  This way we can synchronise the use of signal with
3946           scheduler.  It is guaranteed that when signal occurs the scheduler
3947           is not locked, and thus new tasks can be safely added to the
3948           scheduler.
3949
3950           Renamed silc_schedule_wakeup_init and silc_schedule_wakeup_uninit
3951           to silc_schedule_internal_init and silc_schedule_internal_uninit.
3952           Added new platform specific routines
3953           silc_schedule_internal_signals_[un]block and
3954           silc_schedule_internal_signal_[un]register.
3955
3956           Added new functions to SILC Schedule API:
3957           silc_schedule_signal_[un]register.  Each signal that application
3958           is going to use should be registered to the scheduler.
3959
3960           Affected files are lib/silcutil/silcschedule.[ch],
3961           lib/silcutil/*/silc*schedule.c.
3962
3963 Sat Mar 16 22:39:23 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3964
3965         * Check for unauthenticated client and server in the
3966           silc_server_new_client and silc_server_new_server functions.
3967           Affected file silcd/packet_receive.c.
3968
3969         * Added function silc_string_is_ascii to check whether given
3970           string is 7-bit ASCII string.  Affected files are
3971           lib/silcutil/silcutil.[ch].
3972
3973         * Added function silc_id_is_valid_server_id into the
3974           silcd/serverid.c and added checking for valid Server ID's in
3975           silc_server_new_server.  The Server ID must always be based
3976           on the server's public IP address.
3977
3978         * Added logging of DISCONNECT packet message in the server.
3979           Affected file silcd/server.c.
3980
3981 Sat Mar 16 18:04:30 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3982
3983         * Changed all library interfaces that use Global RNG to also
3984           accept SilcRng as argument.  Affected files are
3985           lib/silcclient/command.c, lib/silccore/silcauth.[ch],
3986           lib/silccore/silcchanel.[ch], lib/silcclient/client_channel.c,
3987           silcd/packet_send.c, lib/silccore/silcprivate.[ch],
3988           lib/silcmath/silcprimegen.c, lib/silcmath/silcmath.h, and
3989           lib/silccrypt/rsa.c.
3990
3991         * Added function silc_pkcs_generate_key to the
3992           lib/silccrypt/silcpkcs.[ch] for applications so that they
3993           don't need to do pkcs->pkcs->init calls anymore.
3994
3995         * Remove SilcSocketConnection from the SFTP API since it really
3996           wasn't needed there.  The application has the information
3997           saved in its contexts anyway and the SFTP layer doesn't need
3998           know about it.  Affected files lib/silcsft/silcsftp.h and
3999           lib/silcsftp/sftp_[server/client].c.
4000
4001         * Rewrote the SILC SIM (modules) interface in lib/silcsim.[ch].
4002           The SilcSimContext is not SilcSim.
4003
4004         * Fixed possible buffer overflows in silc_id_render in the
4005           lib/silcutil/silcutil.c.
4006
4007         * On EPOC the global crypto module lists are not used at all
4008           in the crypto library.  Added support for using the constant
4009           algorithm list on EPOC.  Affected files are
4010           lib/silccrypt/silccipher.c, silchash.c, silchmac.c and
4011           silcpkcs.c.
4012
4013         * Fixed the handling of third parameter of KICKED notify, since
4014           it was mistakenly updated to SILC Protocol 1.0 even though it
4015           is to be included in 1.1.  Since it is not in 1.0 it is not
4016           mandatory, and this fix now handles it only if it is provided,
4017           and it is not error if it is not provided.  Affected file
4018           lib/silcclient/client_notify.c.
4019
4020 Sat Mar 16 09:07:27 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4021
4022         * Handled CHANNEL_CHANGE notify (ignore it) in Irssi SILC
4023           client.  Affected file irssi/src/silc/core/client_ops.c.
4024
4025         * Merged with Irssi 0.8.4 from irssi.org CVS.
4026
4027 Thu Mar 14 12:53:57 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4028
4029         * Check for valid socket connection in client entries before
4030           sending any messages.  Fixes a crash, but doesn't fix some
4031           other underlaying bug that is lurking there.  Affected
4032           file silcd/packet_send.c.
4033
4034 Thu Mar 14 13:38:12 EET 2002  Timo Sirainen <tss@iki.fi>
4035
4036         * $usermode, $cumode and $cumode_space expandos shouldn't do
4037           anything with non-SILC server records. Affected file
4038           irssi/src/silc/core/silc-expandos.c
4039
4040 Wed Mar 13 21:38:26 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4041
4042         * Fixed the silc_net_check_[host/local]_by_sock to support
4043           IPv6 bound sockets as well.  Now they can return IPv6 addresses
4044           as well.  Affected file lib/silcutil/silcnet.c.
4045
4046         * Fixed silc_net_addr2bin to correctly convert IPv6 addresses.
4047           Affected lib/silcutil/unix/silcunixnet.c.
4048
4049         * Fixed ID rendering (at least on some platforms, not NetBSD)
4050           for IPv6 addresses.  Affected file lib/silcutil/silcutil.c.
4051
4052 Tue Mar 12 17:58:59 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4053
4054         * Added silc_hash_public_key and silc_hash_public_key_compare
4055           functions to be used with SilcHashTable.  They can be used to
4056           hash public keys and compare public keys in hash table.  Affected
4057           file lib/silcutil/silcutil.[ch].
4058
4059         * Added support for specifying multiple public keys for Client
4060           connection section in server configuration file.  This makes it
4061           possible to accept multiple public keys from same host, or to
4062           make a section that accepts any incoming host, and have the
4063           accepted public keys listed in the section.
4064
4065           Added functions silc_sever_[find/get]_public_key,  added the
4066           support for this actually to all connection sections but only
4067           the Client section is currently allowed to specify multiple
4068           public keys.
4069
4070           Affected files are silcd/server.c, server_internal.h,
4071           command.c, protocol.c, server_util.[ch], packet_receive.c.
4072
4073 Mon Mar 11 23:37:38 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4074
4075         * Merged Irssi 0.8.2 from irssi.org CVS.
4076
4077 Sun Mar 10 23:34:48 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
4078
4079         * If silc_debug is TRUE, also output standard logging messages
4080           to stderr with the debug output.
4081
4082           Made silc_log_reset_all() flushing all channels before returning.
4083           Also fixed some documentation typos.
4084
4085           Affected files are lib/silcutil/silclog.[ch].
4086
4087 Sun Mar 10 20:07:49 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4088
4089         * Fixed the server to check correctly the amount of connections
4090           from single host, by checking also the type of the connection.
4091           Fixed also the comparison of number of connections and number
4092           of allowed connections.  Affected files are silcd/server.c,
4093           server_util.[ch].
4094
4095 Fri Mar  8 17:16:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4096
4097         * Fixed the USERS command reply to save the user's mode on the
4098           channel as well.  Fixed JOIN command reply to check whether a
4099           client is on channel already and not join it twice.  Affected
4100           file lib/silcclient/command_reply.c.
4101
4102         * Added new file silc-expandos.c into irssi/silc/core/ to return
4103           various stuff for various signal for the statusbar etc. updating.
4104           Now Irssi SILC client prints channel user modes etc. on the
4105           statusbar.
4106
4107         * The user mode (like server/router operator changes) is now shown
4108           on the Irssi SILC client's statusbar.  The affected files are
4109           irssi/src/silc/core/client_ops.c, silc-expandos.c.
4110
4111 Thu Mar  7 19:21:22 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4112
4113         * Changed silc_mutex_[un]lock calls in lib/silcutil/silcschedule.c
4114           to SILC_SCHEDULE_[UN]LOCK macros.
4115
4116         * Added more error printing to logs in server code.  Affected
4117           files silcd/server.c and silcd/protocol.c.
4118
4119         * Fixed -S option parsing in Irssi SILC Client.  Affected file
4120           irssi/src/silc/core/silc-core.c.
4121
4122         * Added silc_buffer_alloc_size function.  Affected file is
4123           lib/silcutil/silcbuffer.h.
4124
4125 Tue Mar  5 14:37:27 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4126
4127         * Changed all silc_[hash|hmac|cipher|pkcs]_default tables to
4128           constants.  Affected files in
4129           lib/silccrypt/silcpkcs.[ch], silchash.[ch], silchmac.[ch] and
4130           silccipher.[ch].
4131
4132         * Changed the internal SFTP Memory FS table to const.  Affected
4133           file lib/silcsftp/sftp_fs_memory.c.
4134
4135 Sun Mar  3 18:37:13 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4136
4137         * Fixed the buffer formatting and unformatting routines to
4138           check the size of 64 bits types with sizeof().  Affected
4139           file is lib/silcutil/silcbuffmt.c.
4140
4141 Mon Feb 25 17:19:05 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4142
4143         * Removed 0.6.x backwards support.
4144
4145 Sun Feb 24 12:53:25 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4146
4147         * Changed all integer type names:
4148           [u]int[8/16/32/64] -> Silc[UInt/Int][8/16/32/64].  This is
4149           to avoid collisions with other libraries using same type names
4150           as we did.
4151
4152 Sat Feb 23 20:31:43 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4153
4154         * Added `prefer_ipv6' argument to the functions
4155           silc_net_gethostbyname[_async].  If it is TRUE it will return
4156           IPv6 address over IPv4.  If FALSE IPv4 address is returned
4157           even if IPv6 address was found.  Affected files
4158           lib/silcutil/silcnet.[ch].
4159
4160         * Added support silc_net_create_connection[_async] to fallback
4161           to IPv4 address if IPv6 address could not be used (like if
4162           it doesn't work on a specific system).  Affected file in
4163           lib/silcutil/unix/silcunixnet.c.
4164
4165 Sat Feb 23 15:20:30 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4166
4167         * Added silc_schedule_reinit function to do the enlarging
4168           of the max tasks handling capabilities of the scheduler.
4169           Affected files lib/silcutil/silcschedule.[ch].
4170
4171 Wed Feb 20 20:41:01 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4172
4173         * Added automatic extern "C" { ... } for C++ compilers so the
4174           application does not need to define them.  Affected file
4175           includes/silcincludes.h.
4176
4177         * Renamed lib/silcclient/silcapi.h to silcclient.h as the
4178           old name went against naming convention.  Applications now
4179           include "silcclient.h" instead of "clientlibincludes.h".
4180           Removed includes/clientlibincludes.h, it is redundant now.
4181
4182         * Renamed includes/version.h to silcversion.h.
4183
4184         * Added really preliminary support for OS/2 into the util
4185           library.  Only thread & mutex API is implemented, others
4186           are still to be implemented.  Created the lib/silcutil/os2/
4187           directory.  Created also file includes/silcos2.h.
4188
4189 Wed Feb 20 18:48:49 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4190
4191         * Added preliminary BeOS support into the util library.
4192           Created lib/silcutil/beos/, and implemented all the needed
4193           functions to support SILC on BeOS.  Created also file
4194           includes/silcbeos.h.
4195
4196 Mon Feb 18 15:49:22 EET 2002  Timo Sirainen <tss@iki.fi>
4197
4198         * Added proper initializations to silc's irssi code, so it's
4199           now possible to load it as module.  Affected files
4200           irssi/src/silc/core/silc-core.c,
4201           fe-common/silc/fe-common-silc-core.[ch] and fe-text/silc.c
4202
4203 Sun Feb 17 19:02:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4204
4205         * Merged latest Irssi (0.8.1) from the irssi.org's CVS into
4206           the SILC tree.
4207
4208         * Fixed the silcdoc document generator to correct generate
4209           docs from all kinds of filenames.  Affected files are
4210           util/robodoc/Source/generator.c, scripts/silcdoc/silcdoc
4211
4212         * ROBOdoc documented lib/silcutil/silcmemory.h.
4213           Added also new function silc_memdup.
4214
4215         * Removed lib/silcutil/silcbufutil.h and moved those routines
4216           to the lib/silcutil/silcbuffer.h.
4217
4218 Sun Feb 17 15:52:30 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4219
4220         * Added `user_count' to the SilcChannelEntry which now tells the
4221           number of users on the channel.  The user count is now saved
4222           in normal server of global channels as well.  Affected files
4223           silcd/server.c, idlist.h, packet_receive.c and command.c.
4224
4225         * Splitted lib/silcutil/silcutil.[ch] into silcfileutil.[ch] to
4226           include file utility functions.
4227
4228         * Fixed the lib/silcsftp/sftp_fs_memory.c to use silcutil routines
4229           instead of calling directly OS routines.
4230
4231         * Fixed NICK change printing in Irssi SILC Client. Fixed
4232           KICKED notify printing in Irssi SILC Client.  Affected file
4233           irssi/src/silc/core/client_ops.c.
4234
4235         * Fixed a NICK change bug in client library, to not recreate the
4236           client_entry->channels hash table everytime nick is changed.
4237           Affected file lib/silcclient/client.c.
4238
4239 Sun Feb 17 10:10:14 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4240
4241         * ROBOdoc documented the lib/silcske/silcske.h, and improved
4242           the SKE interface a bit.
4243
4244         * Fixed padding problem in PKCS#1. The padding was not actually
4245           random since the random number generator was used incorrectly.
4246           This security bug affects only when encrypting with PKCS#1, and
4247           it is not currently used at all in SILC. SILC only use signing
4248           with PKCS#1. Affected file lib/silccrypt/pkcs1.c.
4249
4250 Sat Feb 16 13:44:24 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4251
4252         * Rewrote the notify handling in Irssi SILC client to not call
4253           the events as signals.  Fixes problems with Perl support.
4254           Affected files irssi/src/silc/core/client_ops.c, silc-channels.c.
4255
4256         * Send the auto-nicking NICK command in client library with
4257           little timeout after connecting.  The affected file is
4258           lib/silcclient/client.c.
4259
4260         * Added following new config file settings:
4261           channel_rekey_secs, key_exchange_rekey, key_exchange_pfs,
4262           key_exchange_timeout, conn_auth_timeout, connections_max,
4263           links_max.
4264
4265           Implemented all the new config settings handling in the server.
4266
4267           Optimized the use of SKE Mutual flag usage.  Use it only
4268           if connection authentication protocol is not based in public
4269           key authentication.
4270
4271           Renamed all SilcServerConfigSection* to SilcServerConfig*
4272           to have a bit shorter names.
4273
4274           Affected files silcd/serverconfig.[ch], server.[ch], and
4275           protocol.[ch].
4276
4277 Sat Feb 16 02:46:43 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
4278
4279         * Cleaned up the listening sockets code, preparing for the rehash
4280           support.  Affected file is silcd/server.c.
4281
4282         * Fixed some output messages.  Affected files are silcd/silcd.c,
4283           and silcd/server.c.
4284
4285 Fri Feb 15 19:10:20 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4286
4287         * Create lib/doc/silcrng_intro.html document as introduction
4288           to SILC RNG.  ROBOdoc documented lib/silccrypt/silcrng.h.
4289
4290 Fri Feb 15 13:23:03 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
4291
4292         * Fixes to the silcd config template.  Affected file is
4293           doc/example_silcd.conf.in.
4294
4295         * Removed type casts from silc_calloc(), conforming to the
4296           CodingStyle.  Affected file is lib/silcutil/silcconfig.c.
4297
4298         * Removed param_name member from client, server, and router
4299           section structs, now identifying the param directly.
4300
4301           Added CONFIG_FREE_AUTH macro in config file parsing.
4302
4303           Affected files are silcd/serverconfig.[ch].
4304
4305 Fri Feb 15 12:24:08 EET 2002  Timo Sirainen <tss@iki.fi>
4306
4307         * Fixed command line parameter handling. All SILC initialization
4308           is now done in silc_core_init() which also fixes autoconnecting
4309           to servers.
4310
4311           Affected files irssi/src/silc/core/silc-core.c,
4312           irssi/src/fe-text/silc.c.
4313
4314 Thu Feb 14 22:03:58 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4315
4316         * Added new configuration options and blocks:
4317           keepalive_secs, reconnect_count, reconnect_interval,
4318           reconnect_interval_max, reconnect_keep_trying and
4319           require_reverser_lookup.  Added ConnectionParam block, and
4320           implemented the connection parameters when connecting as
4321           initiator and when accepting connections as responder.
4322
4323           Added CONFIG_IS_DOUBLE macro in config file parsing, to check
4324           whether given configuration value has been given already.
4325
4326           Affected files silcd/serverconfig.[c], server.[c].
4327
4328         * Splitted the doc/example_silcd.conf.in.  Separated the crypto
4329           algorithm parts and created new file silcalgs.conf, that
4330           is now included from the example_silcd.conf.in.
4331
4332         * Optimized the silc_server_connect_to_router_second to take
4333           the connection configuration object from the SilcServerConnection
4334           object instead of finding it during the connecting phase.
4335           Added the configuration object to SilcServerConnection struct.
4336           Affected files silcd/server_internal.h, server.c.
4337
4338 Thu Feb 14 16:02:26 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4339
4340         * Add the client on channel after it was resolved at the
4341           channel message receiving, and it was not already on the
4342           channel.  Affected file lib/silcclient/client_channel.c.
4343
4344 Wed Feb 13 23:16:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4345
4346         * Fixed the public key authentication to allocate always the
4347           destination signature buffer instead of using static buffer.
4348           Affected file silcd/protocol.c.
4349
4350 Wed Feb 13 20:51:13 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4351
4352         * Unified the serverconfig.[ch]'s helper function interface.
4353           Affected file silcd/serverconfig.[ch].
4354
4355         * Removed doc/example_silc.conf.in since it is redundant.
4356           The make install will now install irssi/silc.conf file.
4357
4358         * Added new Passphrase and Publickey authentication methods to
4359           config file, allowing both public key and passphrase based
4360           authentication to be set at the same time.
4361
4362           Added `prefer_passphrase_auth' setting in config file which
4363           can be used to set to prefer passwd auth if both passwd and
4364           public key is set.  If not set, public key is preferred.
4365           This has effect only when being initiator (responder will try
4366           both anyway).
4367
4368           Added support for authentication with passphrase and public key
4369           at the same time.  The passphrase is tried first always since
4370           it is faster to check.
4371
4372           Affected file silcd/serverconfig.[ch], server.c, protocol.[ch].
4373
4374 Wed Feb 13 12:46:25 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
4375
4376         * Merged the new SILC Config library, with the server parsing
4377           support.  Read the header file silcconfig.h or the toolkit
4378           documentation for the news.  Affected files are
4379           doc/example_silcd.conf.in lib/silcutil/silcconfig.[ch]
4380           silcd/command.c silcd/packet_receive.c silcd/packet_send.c
4381           silcd/protocol.c silcd/server.c silcd/server_backup.c
4382           silcd/serverconfig.[ch] silcd/silcd.c.
4383
4384         * Fixed some silclog documentation.  Affected file is
4385           lib/silcutil/silclog.h.
4386
4387 Sun Feb 10 18:11:30 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4388
4389         * The silc_cipher_register, silc_hash_register and
4390           silc_hmac_register now checks if the object to be registered
4391           is registered already.  Affected files are
4392           lib/silccrypt/silccipher.c, silchash.c and silchmac.c.
4393
4394 Sun Feb 10 15:48:38 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4395
4396         * Merged new irssi from irssi.org's CVS, the version 0.7.99.
4397
4398 Sat Feb  9 14:54:33 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4399
4400         * Allow zero length channel messages inside the Channel Message
4401           Payload.  Affected file lib/silccore/silcchannel.c.
4402
4403         * Fixed scripts/silcdoc/silcdoc to support all kinds of filenames
4404           as header filenames.
4405
4406         * Removed lib/silcclient/README and created HTML file
4407           lib/silcclient/silcclient_using.html, which is now included
4408           as part of Toolkit documentation.
4409
4410 Thu Feb  7 10:12:25 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4411
4412         * Fixed CUMODE_CHANGE notify handling to change the mode of
4413           correct client.  Affected file lib/silcclient/client_notify.c.
4414
4415         * Make silc_rng_alloc fail if it cannot allocate the sha1
4416           hash algorithm.  Affected file lib/silccrypt/silcrng.c.
4417
4418 Sun Feb  3 17:20:52 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4419
4420         * Fixed the file transfer's key agreement payload to include
4421           zero port also if the hostname is NULL because it could not
4422           be bound.
4423
4424           Call file transfer monitor callback now also if error occurs
4425           during key agreement protocol.
4426
4427           Changed the silc_client_file_send interface to return the
4428           SilcClientFileError instead of session id.  The session ID
4429           is returned into pointer provided as argument.
4430
4431           Check that the file exists locally before sending the
4432           file transfer request at all.
4433
4434           Affected file lib/silcclient/client_ftp.c, silcapi.h.
4435
4436         * Added SILC_CLIENT_FILE_KEY_AGREEMENT_FAILED file transfer
4437           error than can occur while key agreement protocol.  Affected
4438           file lib/silcclient/silcapi.h.
4439
4440         * Fixed the event_mode CMODE handler to not crash when mode
4441           is changed and +k mode is set in the channel.  Affected file
4442           irssi/src/silc/core/silc-channels.c.
4443
4444         * Fixed SILC_LOG_ERROR to give out Error and not Warning, and
4445           SILC_LOG_WARNING to give out Warning and not Error.  Affected
4446           file lib/silcutil/silclog.c.
4447
4448         * Fixed the channel message payload decryption in the function
4449           silc_channel_message_payload_decrypt to not modify the original
4450           buffer before it is verified that the message decrypted
4451           correctly.  Otherwise, next time it is called with correct
4452           channel key it won't encrypt since the payload is corrupted.
4453           Affected file lib/silccore/silcchannel.c.
4454
4455 Sun Feb  3 11:46:12 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4456
4457         * Do not constantly resize the window.  A fix patch by cras.
4458           Affected file irssi/src/fe-text/screen.c.
4459
4460 Sat Feb  2 16:54:18 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4461
4462         * Applied IPv6 fix patch from Jun-ichiro itojun Hagino.
4463           Affected file lib/silcutil/silcnet.c.
4464
4465 Fri Feb  1 22:33:11 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4466
4467         * Fixed a bug in hash table internal routine for traversing
4468           the table with foreach callback.  The current entry may
4469           become invalid in the callback but it was referenced after
4470           the callback returned.
4471
4472           Do not allow auto rehashing of hash table during the
4473           silc_hash_table_foreach operation, for same reasons as it is
4474           not allowed for SilcHashTableList.  Affected files are
4475           lib/silcutil/silchashtable.[ch].
4476
4477 Fri Feb  1 14:55:00 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4478
4479         * Defined DLLAPI into silcincludes.h and silcwin32.h for
4480           Win32 DLL.  extern's in header files are now declared with
4481           DLLAPI.
4482
4483 Thu Jan 31 23:34:33 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4484
4485         * Fixed private message handling.  It used some old code that
4486           caused the client to crash.  Affecte file is
4487           lib/silcclient/client_prvmsg.c.
4488
4489 Thu Jan 31 19:06:22 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4490
4491         * Added function silc_client_add_channel,
4492           silc_client_replace_channel_id, and removed functions
4493           silc_client_new_channel_id and silc_idlist_get_channel_by_id
4494           from client library.
4495
4496         * Added cross reference of the joined channels to the
4497           SilcClientEntry, and changed the SilcChannelEntry's
4498           users list to SilcHashTable.  The affected files are
4499           lib/silcclient/idlist.[ch].
4500
4501         * Fixed a bug in hash table tarversing.  While the hash table
4502           is traversed with SilcHashTableList the table must not be
4503           rehashed.  It is now guaranteed that auto rehashable tables
4504           are not rehashed while tarversing the list.  Also defined that
4505           silc_hash_table_rehash must not be called while tarversing
4506           the table.  Added function silc_hash_table_list_reset that must
4507           be called after the tarversing is over.  The affected files are
4508           lib/silcutil/silchashtable.[ch].
4509
4510         * Changed all hash table traversing to call the new
4511           silc_hash_table_list_reset in server and in client library.
4512
4513         * Added function silc_client_on_channel to return the
4514           SilcChannelUser entry if the specified client entry is joined
4515           on the specified channel.  This is exported to application as
4516           well.  Affected files lib/silcclient/client_channel.c, silcapi.h.
4517
4518 Wed Jan 30 19:14:31 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4519
4520         * Fixed founder regaining problem with JOIN command on normal
4521           server.  The notify for mode change must be sent always and
4522           not only if !cmd->pending.  Affected file silcd/command.c.
4523
4524         * Fixed the WHOWAS command's reply sending to support the
4525           lists correctly.  Affected file silcd/command.c.
4526
4527 Wed Jan 30 11:11:47 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4528
4529         * When sending JOIN command to router for processing the
4530           sender's old command identifier was not saved back to the
4531           sender's command context, fixed now.  The affected file is
4532           silcd/command.c.
4533
4534         * Create the key in JOIN command of the router did not return
4535           the channel key, added check for this.  Affected file is
4536           silcd/command.c.
4537
4538         * Fixed a channel ID update bug in JOIN command reply.  Do
4539           not directly upgrade the ID but call the function
4540           silc_idlist_replace_channel_id if the ID was changed.
4541           Affected file silcd/command_reply.c.
4542
4543         * Fixed memory leaks from command calling if it would fail.
4544           Affected file silcd/command.c.
4545
4546 Tue Jan 29 19:49:31 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4547
4548         * Applied patches from cras:
4549
4550           Memory leak fixes around libaries, irssi window resize fix,
4551           new silclist.h and silcdlist.h, all extern inline changed to
4552           static inline.
4553
4554         * Removed dotconf from lib/dotconf, not needed anymore.
4555
4556         * Removed TRQ from lib/trq, not needed anymore.
4557
4558         * Do more frequent heartbeats (5 minutes instead of 10 minutes)
4559           with server connections.  Later this will be configurable
4560           in config file after new config file is done.  Affected file
4561           silcd/server.c.
4562
4563 Tue Jan 29 10:35:03 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4564
4565         * Fixed a crash in server related to channel announcements.
4566           Affected file silcd/server.c.
4567
4568 Mon Jan 28 17:49:42 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4569
4570         * Fixed memory leaks in silc_server_create_new_channel*
4571           functions.  Affected file silcd/server.c.
4572
4573         * Fixed the CHANNEL_CHANGE notify to re-announce the channel
4574           which ID was changed.  This way the router will send the
4575           user list for the channel again, and server won't be in
4576           desync in some rare circumstances.  Affected file is
4577           silcd/packet_receive.c.
4578
4579 Sun Jan 27 21:04:19 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4580
4581         * Check for NULL socket pointer in the function
4582           silc_server_packet_send_to_channel_real.  Affected file
4583           silcd/packet_send.c.
4584
4585         * Fixed the BAN notify handling to correctly remove ban
4586           list.  Affected file silcd/packet_receive.c.
4587
4588 Sat Jan 26 23:01:03 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4589
4590         * Fixed some header addition to Toolkit distribution in
4591           lib/silcutil/Makefile.am and lib/trq/Makefile.am.
4592
4593         * Added lib/silcclient/client_ops_example.h as an template
4594           file for application programmers to quickly start using
4595           the SilcClientOperation functions in their application.
4596           Updated the lib/silcclient/README as well to tell about this
4597           nice file made available.
4598
4599 Sat Jan 26 10:45:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4600
4601         * Call silc_server_remove_from_channels when removing client
4602           entry when NO_SUCH_CLIENT_ID was received.  Affected file
4603           is silcd/command_reply.c.
4604
4605 Fri Jan 25 19:12:36 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4606
4607         * Added server & router operator statistics updating.  Affected
4608           file silcd/packet_receive.c and silcd/command.c.
4609
4610         * Fixed the SERVER_SIGNOFF notify handling on normal server
4611           not to save the history information for clients.  Same was
4612           fixed earlier in remove_clients_by_server function, but not
4613           here.  Affected file silcd/packet_receive.c.
4614
4615         * Raised the default connection-retry count from 4 to 7 in
4616           server.  Affected file silcd/server.h.
4617
4618         * Cancel any possible reconnect timeouts when we start the
4619           key exchange.  Affected file silcd/server.c.
4620
4621         * Do not reconnect on connection failure when SCONNECT was
4622           given.  Affected files silcd/server.[ch].
4623
4624 Tue Jan 22 18:19:36 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4625
4626         * Removed assert()'s from the lib/silcclient/client_keyagr.c.
4627
4628         * Fixed the NICK command to always give the unformatted
4629           nickname to the one giving the NICK command.  If unformatted
4630           nickname is cached already it will be formatted and the
4631           local entry will always get the unformatted nickname.
4632           Affected file lib/silcclient/idlist.c.
4633
4634         * Fixed some double frees from client library commands.
4635           Affected file is lib/silcclient/command.c.
4636
4637         * Fixed CUMODE command in server to assure that no one can
4638           change founder's mode than the founder itself, there was a
4639           little bug.  Affected file silcd/command.c.
4640
4641 Mon Jan 21 19:07:53 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4642
4643         * Removed the SilcClientCommandDestructor from the client
4644           libary, it is not needed anymore.  Affected files are
4645           lib/silcclient/silcapi.h, command[_reply].[ch],
4646           client_notify, idlist.c.
4647
4648         * Fixed GETKEY command to first resolve client, and then
4649           resolve the server only if the client was not found, instead
4650           of resolving both at the same time.  Affected file is
4651           lib/silcclient/command.c.
4652
4653         * Added silc_client_start_key_exchange_cb and lookup the
4654           remote hostname and IP address before starting the key
4655           exchange with server.  The affected file is
4656           lib/silcclient/client.c.
4657
4658         * The server's public key is now saved using the IP address
4659           of the server and not the servername for the filename.
4660           The hostname public key filename is checked as an fall back
4661           method if the IP address based filename is not found.
4662
4663           Fixed the GETKEY command to save the fetched server key
4664           in correct filename.
4665
4666           Print the remote server's hostname now when new key is
4667           received during connection process.  Affected file is
4668           irssi/src/silc/core/client_ops.c.
4669
4670         * Return always our own public key to the client if it asks
4671           for it with GETKEY command.  Affected file silcd/command.c.
4672
4673         * Removed the use_auto_addr variable from default config
4674           file since it was in wrong section.  Affected file is
4675           irssi/src/config.
4676
4677         * Fixed TOPIC_CHANGE notification to not route it when it
4678           was sent using silc_server_send_notify_to_channel function.
4679           Affected file silcd/command.c.
4680
4681         * Fixed silc_server_send_notify_kicked to send the kicker's
4682           Client ID also, it was missing.  Affected files are
4683           silcd/command.c, silcd/packet_send.[ch].
4684
4685 Thu Jan 17 18:59:11 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4686
4687         * Do not save client history information in SERVER_SIGNOFF.
4688           Fixes the bug in normal server that it does not detect
4689           the client becoming valid after the server becomes back
4690           online.  Affected file silcd/server_util.c.
4691
4692         * Added `sock_error' field  into the SilcSocketConnection
4693           context.  When error occurs during socket operation (read
4694           or write) the error is saved.  Added also new function
4695           silc_socket_get_error to return human readable socket error
4696           message.  Affected files are lib/silcutil/silcsockconn.[ch],
4697           lib/silcutil/unix/silcunixsockconn.c, and
4698           lib/silcutil/win32/silcwin32sockconn.c.
4699
4700         * The server now prints the socket error message in the
4701           signoff for client.  Affected file silcd/server.c.
4702
4703         * Fixed the `created' channel information sending from router
4704           to server in JOIN command.  Checks now whether the channel
4705           really was created or not and set it according that.
4706
4707           Fixed the JOIN command to use the client entry's current
4708           ID during the joining procedure instead of the one it sent
4709           in the command (it is checked though), since it can change
4710           between the packet processing and command processing, and
4711           would just case unnecessary pain in the client end.  Affected
4712           file silcd/command.c.
4713
4714         * Fixed a channel key payload sending to use correct channel
4715           ID when the server was forced to change the channel's ID by
4716           router.  Router sent the key payload with the old Channel ID.
4717           Affected file silcd/packet_receive.c.
4718
4719 Wed Jan 16 22:26:30 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4720
4721         * Call silc_server_save_channel_key only if the key payload
4722           was provided in the JOIN command's command reply.  Affected
4723           file silcd/command_reply.c.
4724
4725 Tue Jan 15 18:49:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4726
4727         * Fixed silc_mp_sizeinbase to return the value correctly with
4728           MPI.  Affected file lib/silcmath/mp_mpi.c.
4729
4730         * Fixed the stop_server signal to correctly stop the scheduler
4731           and gracefully stop the server when SIGTERM or SIGINT signals
4732           are received.  Affected file silcd/silcd.c.
4733
4734 Mon Jan  7 23:38:19 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
4735
4736         * Simple handling of TERM and HUP signals. Also added some log
4737           flushing call around.  Affected file is
4738           silcd/silcd.c.
4739
4740         * Fixed small bugs in silclog.c. Now buffering output will take
4741           effect after 10 seconds since startup: This will ensure that
4742           no important startup messages are lost. Also output redirection
4743           will preserve original format ([Date] [Type] message).
4744           Affected file is lib/silcutil/silclog.c.
4745
4746         * Added two options to the config file, in the logging section:
4747           quicklogs:<yes/no>: and flushdelay:<seconds>:.  Affected files
4748           lib/silcutil/silclog.[ch], silcd/serverconfig.[ch].
4749
4750 Sun Jan  6 12:49:40 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4751
4752         * Do not print the warning about log files not being initialized
4753           more than once to avoid excess logging.  Affected file is
4754           lib/silcutil/silclog.c.
4755
4756         * Fixed the SIM compilation in lib/silcsim/Makefile.am.  Fixed
4757           the SIM copying in make install in Makefile.am.pre.
4758
4759 Sun Jan  6 01:10:21 CET 2001  Johnny Mnemonic <johnny@themnemonic.org>
4760
4761         * Rewritten silclog APIs. Globally interesting changes follows:
4762           silc_log_set_files() changed to silc_log_set_file().
4763           silc_log_set_callbacks() changed to silc_log_set_callback().
4764           ROBOdoc documented silclog header file.
4765           SilcLogCb now returns bool to wether inihibit the default
4766           handler or not (to keep the old behaviour return always TRUE).
4767           The new APIs should also fix the problem of the
4768           silcd_error.log file that was written in the current directory.
4769
4770           New features:
4771           Log files streams will remain opened after silc_log_set_file()
4772           call, means less CPU usage notably on high traffic servers.
4773           File streams are now full buffered, and flushed to the disk
4774           every 5 minutes, lesses HD activity and CPU usage.
4775           Messages can be redirected, allowing admins to configure
4776           one single logfile for all server messages.
4777           the silc_log_quick global variable to activate fast-logging.
4778           Affected files lib/silcutil/silclog.[ch]
4779
4780         * Changed some code to conform new silclog APIs. Affected
4781           files are doc/example_silcd.conf.in, silcd/server.c
4782           irssi/src/silc/core/silc-core.c, silcd/serverconfig.[ch],
4783           silcd/silcd.c.
4784
4785         * Fixed a memory leak that could occur in some situations.
4786           Affected file silcd/serverconfig.c.
4787
4788 Sat Jan  5 13:37:29 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4789
4790         * Added the silc_client_del_client to remove the client from
4791           all channels as well.  Affected file lib/silcclient/idlist.c.
4792
4793         * Fixed the client library to correctly remove the client
4794           from all channels when the client entry is being destroyed.
4795           Affected file lib/silcclient/client_notify.c, command.c.
4796
4797         * Added auto-nicking support to the client library.  If the
4798           applicatio now sets client->nickname it will be sent to the
4799           server after connecting by the library.  This way for example
4800           SILCNICK (or IRCNICK) environment variables will have effect
4801           and always change the nickname automatically to whatever
4802           it is wanted.  Affected file lib/silcclient/client.[ch].
4803
4804         * Renamed silc_server_command_bad_chars to the
4805           silc_server_name_bad_chars and moved it to the
4806           silcd/server_util.[ch].  Added also new function
4807           silc_server_name_modify_bad to return nickname that
4808           includes bad characters as new nickname without those
4809           bad characters.  This check and modify is now used in
4810           silc_server_new_client when the username is initially set
4811           as nickname, so it must be checked to be valid nickname.
4812           Affected file silcd/packet_receive.c.
4813
4814         * The nickname length is now taken from the packet for real
4815           and not trusted to strlen() since it clearly can return
4816           wrong length for nickname including bad characters.  This
4817           also applies to channel names.  Affected file silcd/command.c.
4818
4819         * Removed the lib/silcsilm/modules directory.  Modules are now
4820           compiled into the lib/silcsim.  Fixed the copying of the
4821           modules to follow symbolic links in Makefile.am.pre.
4822
4823 Wed Jan  2 18:56:21 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4824
4825         * Fixed silc_string_regexify list creation.  Fixes bugs with
4826           BAN and INVITE commands in server.  The affected file is
4827           lib/silcutil/unix/silcunixutil.c.
4828
4829 Sun Dec 30 13:41:34 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4830
4831         * Removed the command destructor entirely from the server's
4832           command and command reply routines.  It is not needed, and
4833           its usage was buggy and caused crashes.  Affected files are
4834           silcd/command[_reply].[ch].
4835
4836 Fri Dec 28 12:43:22 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4837
4838         * Cancel protocol and NULL sock->protocol if timeout
4839           occurred during protocol.  Affected file silcd/server.c.
4840
4841         * Cancel protocol timeouts always before calling the final
4842           callback, to assure that after final callback is called
4843           no other state will be called for the protocol anymore.
4844           Affected file silcd/protocol.c.
4845
4846         * Print error log if incoming connection configuration could
4847           not be found.  Affected file silcd/server.c.
4848
4849         * Fixed JOIN command to correctly save the founder mode
4850           to the client on normal SILC server, when the channel
4851           was created by the router.  Affected file silcd/command.c.
4852
4853         * Fixed LIST command (hopefully) to send correct reply
4854           packets.  Affected file silcd/command.c.
4855
4856 Thu Dec 20 16:14:52 CET 2001  Pekka Riikonen <priikone@silcnet.org>
4857
4858         * The silc_packet_receive_process now returns FALSE if the
4859           read data was invalid packet, and TRUE if it was ok.
4860
4861           The server now checks that if unauthenticated connection
4862           sends data and its processing fails the server will close
4863           the connection since it could be a malicious flooder.
4864
4865           Affected files lib/silccore/silcpacket.[ch], silcd/server.c.
4866
4867 Wed Dec 19 21:31:25 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4868
4869         * Make sure the warning about error opening a log file is
4870           printed only once and not everytime it fails (produces
4871           too much useless log).  Affected file lib/silcutil/silclog.c.
4872
4873 Wed Dec 19 18:21:51 CET 2001  Johnny Mnemonic <johnny@themnemonic.org>
4874
4875         * Made the silc_server_daemonise() function more readable.
4876           Affected file silcd/server.c.
4877
4878         * Pid file is now optional, the user may comment it out from
4879           the config file. Removed define SILC_SERVER_PID_FILE, we
4880           don't need a default any longer.  Affected file
4881           configure.in.pre, lib/Makefile.am.pre.
4882
4883         * Make some use of the pid file. The server now dies at startup
4884           if it detects a valid pid file on his path. The server would
4885           die anyway in this circumstance, because of the bind() failure.
4886           Affected file silcd/silcd.c.
4887
4888         * No longer compiling lib/dotconf.
4889
4890 Mon Dec 17 18:24:27 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4891
4892         * Fixed JOIN command parsing not to crash.  Affected file
4893           lib/silcclient/command.c.
4894
4895         * Fied the NICK_CHANGE notify to add the new client entry
4896           even it is resolved.  This removes an <[unknown]> nick
4897           thingy bug in the client.  Affected file is
4898           lib/silcclient/client_notify.c.
4899
4900         * Do not try to allocate 0 bytes (efence does not like it)
4901           in lib/silccore/silccomand.c when encoding payload.
4902
4903         * Do not take IRCNICK as nickname in Irssi SILC client since
4904           it is not possible to set nickname before hand connecting
4905           the server (TODO has an entry about adding auto-nicking
4906           support).
4907
4908         * Changed the silc_server_command_pending to check whether
4909           there already exists an pending entry with the specified
4910           command, command identifier and pending callback.  This is
4911           to fix IDENTIFY and WHOIS related crashes that may register
4912           multiple pending commands with same identifier.  Affected
4913           file silcd/command.c.
4914
4915         * Fixed the server to reconnect to the router even if it
4916           was already reconnecting and EOF was received.  This to
4917           fix a possibility that the server wouldn't ever try to
4918           auto-reconnect to the router.  Affected file silcd/server.c.
4919
4920 Sat Dec 15 20:31:50 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4921
4922         * Fixed the server's password authentication to use the
4923           length of the locally saved password, and not the one
4924           sent in the packet.  Affected file silcd/protocol.c.
4925
4926         * Fixed same password authentication problem in the
4927           Authentication Payload handling routines in
4928           lib/silccore/silcauth.c.
4929
4930         * Yet another password authentication problem fixed with
4931           channel password handling in silcd/command.c.
4932
4933 Mon Dec 10 19:57:40 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4934
4935         * If first character of string in silc_parse_userfqdn is '@'
4936           then do not parse it.  Affected file is
4937           lib/silcutil/silcutil.c.
4938
4939 Sun Dec  9 22:18:50 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4940
4941         * Fixed minor bug in IDENTIFY command reply sending, which
4942           caused various weird problems during JOIN when it was
4943           resolving names for users.  Affected file silcd/command.c.
4944
4945 Sun Dec  9 19:18:41 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4946
4947         * Fixed the IDENTIFY command reply sending to chech better valid
4948           clients.  It was possible to send incomplete list of replies.
4949           Affected file silcd/command.c.
4950
4951 Sat Dec  8 15:58:31 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4952
4953         * Added silc_client_command[s]_[un]register functions now to
4954           dynamically register the commands in client library.  Removed
4955           the static table of commands.  This allows the client library
4956           to call commands without causing the application to know about
4957           what commands library has called.
4958
4959           Removed the INFO command reply kludge to detect when the command
4960           was called by library.  Now library use its own command reply
4961           function for INFO command.
4962
4963           Added function silc_client_command_call to call a command.
4964           Application can use it to call command, not access the structure
4965           directly.
4966
4967           Now all commands that are sent by the client library (not
4968           explicitly sent by application) use own command reply functions.
4969
4970           Affected files around lib/silcclient/ and in
4971           irssi/src/silc/core/.
4972
4973         * Fixed the WHOIS command reply sending to chech better valid
4974           clients.  It was possible to send incomplete list of replies.
4975
4976           Fixed the WHOIS and IDENTIFY to send the request to router
4977           if normal server did not do it and did not find any results.
4978
4979           Affected file silcd/command.c.
4980
4981 Thu Dec  6 17:21:06 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4982
4983         * Moved the internal data from SilcClient context into its
4984           own file, not accesible to application.  Affected files
4985           lib/silcclient/client.h and lib/silcclient/client_internal.h,
4986           and other files in client library.
4987
4988 Thu Dec  6 10:37:55 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4989
4990         * Added doc/examples installation target in Makefile.am.pre.
4991           A patch by salo.
4992
4993 Tue Dec  4 17:43:19 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4994
4995         * If NO_SUCH_CLIENT_ID notify is received for WHOIS or IDENTIFY
4996           commands the found client entry will be removed from the
4997           cache, after notifying application about the error.  Affected
4998           file lib/silcclient/command_reply.c.
4999
5000         * Changed the /MSG to check for exact nickname user gave, and
5001           not let `nick' match `nick@host' if it is only one found.  Now,
5002           user must type the exact nickname (like nick@host2) even if
5003           there are no more than one same nicks found.  This is to avoid
5004           a possibility of sending nickname to wrong nickname since
5005           `nick' could match `nick@host'.  Affected file is
5006           irssi/src/core/silc-servers.c.
5007
5008 Mon Dec  3 18:49:45 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5009
5010         * Do not print "you are now server operator" or similar when
5011           giving /away command.  Affected files are
5012           irssi/src/silc/core/client_ops.c, silc-servers.h.
5013
5014         * Made the silc_server_command_pending_error_check to send
5015           the same command reply payload it received back to the
5016           original sender of the command.  This way all arguments
5017           that was received by the server will be received by the
5018           client too.  Affected file silcd/command.c.
5019
5020         * Added the silc_idcache_add to return the created cache entry
5021           to a pointer.  Affected file lib/silccore/silcidcache.[ch].
5022
5023         * Add global clients to expire if they are not on any channel.
5024           This is because normal server will never know if they signoff
5025           if they are not on any channel.  The cache expiry will take
5026           case of these entries.  This is done by normal servers only.
5027           The affected files are silcd/command_reply.c,
5028           silcd/idlist.[ch], silcd/server and silcd/packet_receive.c.
5029
5030         * If server receives invalid ID notification for WHOIS or
5031           IDENTIFY and the ID exists in the lists, it is removed.
5032           Affected file silcd/command_reply.c.
5033
5034         * If NO_SUCH_CLIENT_ID is received for WHOIS or IDENTIFY command
5035           in client then client entry that it matches is searched and
5036           the nickname is printed on the screen for user.  Affected
5037           file irssi/src/silc/core/client_ops.c.
5038
5039 Mon Dec  3 11:56:59 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5040
5041         * Use cache entry expire time in the LIST command reply to
5042           purge old entries from the cache after the LIST command
5043           reply has been received.  This way we don't have non-existent
5044           entries in the cache for too long.  Affected file is
5045           silcd/command_reply.c.
5046
5047 Sun Dec  2 23:29:07 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5048
5049         * If we are normal server, and we've not resolved client info
5050           in WHOIS or IDENTIFY from router, and it is global client,
5051           we'll check whether it is on some channel.  If it is not
5052           then we cannot be sure about its validity and will resolve it
5053           from router.  Fixes a bug in WHOIS and IDENTIFY.  Affected
5054           file silcd/command.c.
5055
5056         * Search channel by name (if possible) rather than by ID
5057           in IDENTIFY command's command reply.  Affected file is
5058           silcd/command_reply.c.
5059
5060 Sun Dec  2 13:48:46 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5061
5062         * Distribute to the channel passphrase in CMODE_CHANGE notify.
5063           Updated specs and implemented it.  Affected file silcd/command.c,
5064           silcd/packet_send.c and silcd/packet_receive.c.
5065
5066         * Implemented the <founder auth> payload handling in the JOIN
5067           command.  If provided all conditions for channel joining
5068           except requirement to provide correct passphrase can be
5069           overrided by the channel founder.  Updated the protocol specs.
5070           Affected file silcd/command.c.
5071
5072           Added support for founder auth in JOIN command in client
5073           library.  Fixed the parsing of the JOIN command now to support
5074           all options as they should be.  The affected file is
5075           lib/silcclient/command.c.
5076
5077         * Optimized the WHOIS and IDENTIFY commands to send the request
5078           to router only if it includes nicknames or other names.  If
5079           they include only IDs then check the local cache first before
5080           routing.  Affected file is silcd/command.c.
5081
5082         * Added channels topic announcements.  Affected file is
5083           silcd/packet_receive.c and silcd/server.c.
5084
5085         * Fixed the silc_server_send_notify_topic_set to really destine
5086           the packet to channel.  Affected file silcd/packet_send.c.
5087
5088         * Fixed a crash in CHANNEL_CHANGE notify handling in the client
5089           library.  Affected file lib/silcclient/client_notify.c.
5090
5091         * Added UMODE announcements.  Affected file silcd/server.c.
5092
5093 Sat Dec  1 12:52:39 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5094
5095         * Memory leak fixes in:
5096
5097           lib/silcutil/silcsockconn.c
5098           lib/silcske/silcske.c
5099           lib/silcske/groups.c
5100           lib/silccrypt/rsa.c
5101           lib/silccrypt/silcpkcs.c
5102           lib/silccore/silccommand.c
5103           lib/silccore/silcidcache.c
5104           silcd/idlist.c
5105           silcd/packet_send.c
5106           silcd/command.c
5107
5108         * ROBOdoc documented the lib/silcske/groups.h file and a
5109           bit changed the interface for better.
5110
5111 Thu Nov 29 22:12:50 EET 2001  Pekka Riikonen <priikone@silcnet.org>'
5112
5113         * Update the client entry context in the ID cache after
5114           nick change.  Affected file lib/silcclient/command.c.
5115           Fixes the CUMODE command when regaining founder privileges,
5116           and a little WHOIS problem.
5117
5118         * Fixed silc_net_gethostbyname to correctly call the
5119           inet_ntop.  Affected file lib/silcutil/silcnet.c.
5120
5121 Thu Nov 29 19:31:23 EET 2001  Pekka Riikonen <priikone@silcnet.org>'
5122
5123         * Added IPv6 support checking to the configure.in.pre, added
5124           also --enable-ipv6 option to override the check.  Affected
5125           file configure.in.pre.
5126
5127         * The silc_thread_create now calls the start function
5128           directly if threads support is not compiled in.  Removes
5129           ugly #ifdef's from generic code.  Affected files are
5130           lib/silcutil/unix/silcunixthread, win32/silcwin32thread.c.
5131
5132         * Added silc_net_gethostby[name/addr]_async to asynchronously
5133           resolve.  Affected files are lib/silcutil/silcnet.[ch].
5134
5135         * Added support for rendering IPv6 based server, client and
5136           channel IDs.  Affected file lib/silcutil/silcutil.c.
5137
5138         * Added support for creating IPv6 based server IDs.  Affected
5139           file is silcd/serverid.c.
5140
5141 Wed Nov 28 23:46:09 EET 2001  Pekka Riikonen <priikone@silcnet.org>'
5142
5143         * Added silc_net_gethostby[addr/name] into the
5144           lib/silcutil/silcnet.[ch].  Added IPv6 support to Unix network
5145           routines.  Added silc_net_is_ip[4/6].  Affected file is
5146           lib/silcutil/unix/silcunixnet.c.  All routines that take
5147           address as argument now supports both IPv4 and IPv6 addresses.
5148
5149 Mon Nov 26 18:09:48 EET 2001  Pekka Riikonen <priikone@silcnet.org>'
5150
5151         * Fixed LIST command reply sending in server.  Affected file
5152           silcd/command.c.
5153
5154         * Server now sends the kicker's client ID in the KICK notify
5155           to the kicked client.  Affected file silcd/command.c.
5156
5157         * The client library now parses the kickers client ID and
5158           UI displays it.  Affected files lib/silcclient/client_notify.c
5159           and irssi/src/silc/core/silc-channels.c, module-formats.c.
5160
5161         * Made all payload parsing function prototypes consistent.
5162           They all take now const unsigned char * and uint32 pair as
5163           the payload data instead of SilcBuffer.  Changes all around
5164           the source tree.  Other unsigned char* -> const unsigned char*
5165           changes around the tree as well.
5166
5167         * Optimized SFTP client and server packet sending not to
5168           allocate new buffer for each packet but to recycle the
5169           first allocated buffer.  Affected files are
5170           lib/silcsftp/sftp_client.c, sftp_server.c, sftp_util.[ch].
5171
5172         * Optimized the SFTP client to use SilcList instead of
5173           SilcDList for requests, because it is faster.  Affected file
5174           is lib/silcsftp/sftp_client.c.
5175
5176         * Moved the ID Payload routines from lib/silccore/silcpayload.[ch]
5177           into lib/silccore/silcid.[ch].
5178
5179           Renamed silcpayload.[ch] into silcargument.[ch].
5180
5181 Mon Nov 26 15:01:53 CET 2001  Pekka Riikonen <priikone@silcnet.org>
5182
5183         * If client entry is deleted with active key agreement
5184           session, abort the session.
5185
5186           The silc_client_abort_key_agreement now calls the completion
5187           callback with new SILC_KEY_AGREEMENT_ABORTED status.
5188
5189           Affected file lib/silcclient/silcapi.h, client_keyagr.c and
5190           idlist.c.
5191
5192 Sun Nov 25 18:01:45 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5193
5194         * Don't use __restrict in older GCC's.  Affected file is
5195           lib/silcmath/mpi/mpi-priv.h.  A patch by salo.
5196
5197         * silc_net_localhost now attempts to reverse lookup the
5198           IP/hostname.  Affected file lib/silcutil/silcnet.c.
5199
5200         * Defined <founder auth> argument to the SILC_COMMAND_JOIN
5201           command.  It can be used to gain founder privileges at
5202           the same time when joining the channel.
5203
5204           Defined that the SILC_NOTIFY_TYPE_KICKED send the
5205           kicker's client ID as well.  Updated protocol specs.
5206
5207           Defined that the server must send SILC_COMMAND_IDENTIFY
5208           command reply with error status to client who sent
5209           private message with invalid client ID.
5210
5211           Updated the protocol specification.
5212
5213         * Added silc_server_send_command_reply to send any
5214           command reply.  Affected file silcd/packet_send.[ch].
5215
5216         * Added silc_id_payload_encode_data to encode ID payload
5217           from raw ID data.  Affected file lib/silccore/silcpayload.[ch].
5218
5219         * The server now send IDENTIFY command reply with error
5220           status if client ID in private message is invalid.  Affected
5221           file silcd/packet_receive.c.
5222
5223         * Save the server key file with server's IP address in
5224           the filename instead of hostname.  The affected file is
5225           irssi/src/silc/core/client_ops.c.
5226
5227 Sat Nov 24 20:08:22 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5228
5229         * Typo fixes in irssi/src/fe-common/silc/module-formats.c.
5230           A patch by Sunfall.
5231
5232         * Added libtool support for compiling shared objects in
5233           lib/silcsim.  Affected file configure.in.pre and
5234           lib/silcsim/Makefile.am.  Original patch by cras.
5235
5236 Fri Nov 23 23:30:59 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5237
5238         * Pid file configuration, and server's config file fixes
5239           patch by toma.  Updated CREDITS file.
5240
5241 Sun Nov 18 01:34:41 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5242
5243         * Fixed silc_client_channel_message to not try to decrypt
5244           the message twice if it resolved the destination client
5245           information.  This could cause of dropping one channel
5246           message.  Affected file lib/silcclient/client_channel.c.
5247
5248 Wed Nov 14 23:44:56 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5249
5250         * Added silc_client_run_one into lib/silcclient/silcapi.h and
5251           lib/silcclient/client.c. This function is used when the SILC
5252           Client is run under some other scheduler, or event loop or
5253           main loop.  On GUI applications, for example this may be
5254           desired to used to run the client under the GUI application's
5255           main loop.  Typically the GUI application would register an
5256           idle task that calls this function multiple times in a second
5257           to quickly process the SILC specific data.
5258
5259 Wed Nov 14 19:16:52 CET 2001  Johnny Mnemonic <johnny@themnemonic.org>
5260
5261         * Fixed silc_server_drop() for dropping the supplementary
5262           groups as well, this could cause a security hole on some
5263           systems.
5264
5265 Wed Nov 14 16:22:25 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5266
5267         * __pid_t -> pid_t in lib/silccrypt/silcrng.c.  A patch by
5268           johnny.
5269
5270         * Write PID file after dropping privileges.  Added -F option
5271           to run server on foreground.  A patch by debolaz.
5272           Affected files silcd/server.c, silcd/silcd.c.
5273
5274         * Fixed MOTD to return the MOTD file server name.  Affected
5275           file silcd/command.c.
5276
5277         * Added INFO command reply handling to the Irssi SILC Client.
5278           Affected file irssi/src/silc/core/client_ops.c.
5279
5280 Wed Nov 14 00:18:08 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5281
5282         * Fixed the silc_idcache_list_* routines to really support
5283           the dynamic list.  Fixes a crash.  Affected file is
5284           lib/silccore/silcidcache.c.
5285
5286         * Fixed the LIST command reply to really call LIST command's
5287           pending callbacks.  Affected file silcd/command_reply.c.
5288
5289 Tue Nov 13 00:49:17 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5290
5291         * Update conn->local_entry->nickname after giving NICK
5292           command.  Affected file lib/silcclient/command.c.
5293
5294 Sun Nov 11 23:43:02 PST 2001  Brian Costello <bc@wpfr.org>
5295
5296         * Added the [pid] option to the silcd configuration file
5297
5298           Affected files: serverconfig.[ch] and silcd.c
5299
5300 Sun Nov 11 23:56:39 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5301
5302         * Save fingerprint in WHOIS command reply in server.
5303           Affected file silcd/command_reply.c.
5304
5305         * Fixed NICK commands pending callback registration.
5306           Affected file lib/silcclient/command.c.
5307
5308 Sun Nov 11 10:49:10 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5309
5310         * Use ++server->cmd_ident when sending commands in server,
5311           instead of random number.  Affected file silcd/command.c.
5312
5313         * Fixed GETKEY command reply to call actually GETKEY pending
5314           command callbacks.  Affected file silcd/command_reply.c.
5315
5316         * A bit stricter check for nicknames.  Check for same nickname
5317           in NICK command also.  Affected file silcd/command.c.
5318
5319         * Do not call INFO command everytime client ID changes, only
5320           during first connecting.  Affected file lib/silcclient/client.c.
5321
5322         * Set the new nickname only after successful command reply for
5323           NICK command is returned by server.  Affected file
5324           lib/silcclient/command.c.
5325
5326         * Remove nicknames from nicklist during server_signoff notify.
5327           Should fix /NAMES bit more.  The affected file is
5328           irssi/src/silc/core/silc-channels.c.
5329
5330         * Added `fingerprint' field to the SilcIDListData in the
5331           silcd/idlist.h to hold the fingerprint of the client's
5332           public key.
5333
5334           Send the fingerprint of the client's public key in WHOIS
5335           command reply.
5336
5337           Affected files silcd/command.c, and silcd/idlist.[ch].
5338
5339         * Added silc_fingerprint into lib/silcutil/silcutil.[ch] to
5340           create fingerprint from given data.
5341
5342         * Show the fingerprint of the client's public key in WHOIS.
5343           Affected files irssi/src/module-formats.[ch] and
5344           irssi/src/silc/core/client_ops.c.
5345
5346         * Format the multiple same nicknames also during JOIN and
5347           NICK_CHANGE notifys.  Affected file is
5348           lib/silcclient/client_notify.c.
5349
5350         * Do not print error on screen for invalid private message
5351           payload since it can come if someone is sending private
5352           messages with wrong key.  Affected file
5353           lib/silccore/silcprivate.c.
5354
5355         * Fixed multiple concurrent /PING crash.  Affected file
5356           lib/silcclient/command.c.
5357
5358         * Changed the wrong ID encoding.  All IP addresses must be
5359           in MSB first order in encoded format.  They were encoded
5360           wrong and was in LSB format.  Affected files are
5361           silcd/serverid.c, lib/silcutil/silcutil.c.
5362
5363         * Remove silc_net_addr2bin_ne from lib/silcutil/silcnet.[ch].
5364
5365         * Call the `connect' client operation through the scheduler
5366           in case of error.  Affected file lib/silcclient/client.c.
5367
5368         * Call the `failure' client operation even if the error
5369           occurred locally during a protocol.  Affected file is
5370           lib/silcclient/protocol.c.
5371
5372         * Added support of sending LIST command to router from normal
5373           server.  This way normal server can get list of all channels
5374           in the network too.  Fixed the channel list sending in the
5375           server too.  Affected files are silcd/command.c, and
5376           silcd/command_reply.[ch].
5377
5378         * Added silc_server_update_channels_by_server and
5379           silc_server_remove_channels_by_server.  They are used during
5380           disconnection of primary router and in backup router protocol.
5381           Affected file silcd/server_util.[ch], silcd/server.c and
5382           silcd/server_backup.c.
5383
5384         * Fixed channel adding to global list in IDENTIFY command
5385           reply in server.  Affected file silcd/command_reply.c.
5386
5387 Sat Nov 10 21:39:22 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5388
5389         * If the incoming packet type is REKEY or REKEY_DONE process
5390           that packet always synchronously.  Fixes yet another MAC
5391           failed error on slow (dialup) connections.  Affected file
5392           lib/silcclient/client.c and silcd/server.c.
5393
5394 Thu Nov  8 22:21:09 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5395
5396         * Call check_version SKE callback for initiator too.  Affected
5397           file lib/silcske/silcske.c.
5398
5399         * Implemented fix for security hole found in the SKE that was
5400           fixed in the specification few days back; the initiator's
5401           public key is now added to the HASH value computation.
5402           Added backwards support for the old way of doing it too, for
5403           old clients and old servers.  Affected file is
5404           lib/silcske/silcske.c.
5405
5406         * Enabled mutual authentication by default in SKE.  If initiator
5407           is not providing mutual authentication the responder will
5408           force it.  This will provide the proof of posession of the
5409           private key for responder.  The affected files are
5410           lib/silcclient/protocol.c and silcd/protocol.c.
5411
5412         * Do not cache anymore the server's public key during SKE.
5413           We do mutual authentication so the proof of posession of
5414           private key is done, and if the server is authenticated in
5415           conn auth protocol with public key we must have the public
5416           key already.  Affected file silcd/protocol.c.
5417
5418         * Added new global debug variable: silc_debug_hexdump.  If
5419           it is set to TRUE SILC_LOG_HEXDUMP will be printed.  Affected
5420           file lib/silcutil/silclog.[ch].
5421
5422         * Fixed compilation warning due to char * -> const char *.
5423           Affected files lib/silcutil/silcnet.h, and
5424           lib/silccore/silcauth.[ch].
5425
5426 Wed Nov  7 20:43:03 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5427
5428         * Fixed CMODE command when new channel key was created.  If
5429           the creation failed the old key was removed.  Next time giving
5430           same command would crash the server since the old key was
5431           freed already.  Affected file silcd/command.c.
5432
5433         * Fixed the silc_server_announce_get_channels to not crash
5434           on reconnect.  Affected file silcd/server.c.
5435
5436 Wed Nov  7 17:15:07 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5437
5438         * Added silc_log_set_debug_string function to set a regex
5439           string to match for debug output.  Only the function names,
5440           or filenames matching the given debug string is actually
5441           printed.  This way it is possible to filter out those debug
5442           strings that user is not interested in.
5443
5444           Fixed a bug in silc_string_regexify.
5445
5446           Affected files lib/silcutil/silclog.[ch], and
5447           lib/silcutil/unix/silcunixutil.c.
5448
5449         * Changed the -d options in both server and Irssi SILC client
5450           to take the debug string as argument.  Affected files
5451           silcd/silcd.c and irssi/src/silc/core/silc-core.c.
5452
5453 Tue Nov  6 21:31:54 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5454
5455         * Added silc_hash_babbleprint to create a Bubble Babble
5456           Encoded fingerprint.  The encoding is developed by Antti
5457           Huima (draft-huima-babble-01.txt), and it creates human
5458           readable strings out of binary data.  Affected file
5459           lib/silccrypt/silchash.[ch].
5460
5461         * Print the babble print now in addition of fingerprint as well
5462           in Irssi SILC client.  Affected files are
5463           irssi/src/fe-common/silc/module-formats.[ch],
5464           irssi/src/fe-common/silc/core/client_ops.c.
5465
5466 Sun Nov  4 23:37:28 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5467
5468         * Fixed a security problem found in SKE.  The initiator's
5469           public key too is now added to the HASH hash value creation
5470           which is signed by the responder to create the SIGN value.
5471           This will prevent anyone in the middle to lie to the responder
5472           about the initiator's public key.  If this is done now, the
5473           man in the middle will get caught.  Updated the protocol
5474           specification.
5475
5476 Sun Nov  4 11:43:53 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5477
5478         * Better installation directory handling.  Configure module
5479           paths and other paths automatically to example_silc* files
5480           in doc/.  A patch by toma.
5481
5482         * Fixed compiler warning from MPI library, and from SILC RNG.
5483           A patch by johnny.
5484
5485         * Added SILC_SERVER_PID_FILE to define the pid file for server.
5486           It can be configured with ./configure.  A patch by toma.
5487
5488 Sat Nov  3 23:48:23 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5489
5490         * Find correct make to use in prepare-clean.  A patch by
5491           toma.  Affected file prepare-clean.
5492
5493 Sat Nov  3 22:04:00 PST 2001  Brian Costello <bc@mksecure.com>
5494
5495         * Added irssi variables use_auto_addr, auto_bind_ip,
5496           auto_bind_port and auto_public_ip.
5497
5498         * Changed the interface for silc_client_send_key_agreement
5499           in lib/silcclient/silcapi.h
5500
5501         Affected files:
5502
5503          irssi/src/silc/core/silc-core.c
5504          irssi/config
5505          lib/silcclient/silcapi.h
5506          irssi/src/silc/core/silc-channels.c
5507          lib/silcclient/client_keyagr.c
5508          irssi/docs/help/key
5509
5510 Sat Nov  3 17:48:55 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5511
5512         * Added silc_pkcs_public_key_compare to compare two
5513           public keys.  Affected file lib/silccrypt/silcpkcs.[ch].
5514
5515         * Check that the client who set the founder mode on the
5516           channel is the same client that is giving the founder
5517           mode to itself.  It is done by comparing the saved public
5518           key (it is saved even in the authentication is passphrase).
5519           Affected file silcd/command.c.
5520
5521 Fri Nov  2 18:52:08 EST 2001  Pekka Riikonen <priikone@silcnet.org>
5522
5523         * Do not process packet for disconnected socket connection.
5524           Affected file lib/silccore/silcpacket.c.
5525
5526         * Process the DISCONNECT packet through scheduler in the
5527           client library.  Affected file lib/silcclient/client.c.
5528
5529         * Fixed the silc_client_packet_parse to not to increase
5530           the packet sequence number if the conn->sock and the
5531           current socket connection is not same.  This can happen
5532           for example during key agreement when the conn includes
5533           multiple socket connections (listeners).  Affected file
5534           lib/silcclient/client.c.
5535
5536         * The sender of the file transfer request now provides also
5537           the pointer (listener) for the key exchange protocol.  If
5538           the listener cannot be created then it sends empty key
5539           agreement and lets the receiver provide the listener.
5540
5541           Added `local_ip' and `local_port' arguments to the
5542           silc_client_file_send.  If they are provided they are used,
5543           if not then it will attempt to find local IP address, if
5544           not found or bind fails then the remote client will provide
5545           the listener.
5546
5547           Affected files are lib/silcclient/client_ftp.c and
5548           lib/silcclient/silcapi.h.
5549
5550         * Extended the FILE SEND command to support defining the
5551           local IP and port for key exchange listener.  They are
5552           optional.  Affected file irssi/src/silc/core/silc-servers.c.
5553
5554 Thu Nov  1 22:10:07 EST 2001  Pekka Riikonen <priikone@silcnet.org>
5555
5556         * Defined to WHOIS command reply the sending of fingerprint
5557           of the client's public key (if the proof of posession of the
5558           corresponding private key is verified by the server).
5559           Updated to the protocol specification.
5560
5561         * Added support of receiving the client's public key's
5562           fingerprint in command reply in client library.  Affected
5563           file is lib/silcclient/command_reply.c, and
5564           lib/silcclient/idlist.[ch].
5565
5566 Thu Nov  1 18:06:12 EST 2001  Pekka Riikonen <priikone@silcnet.org>
5567
5568         * Do not send over 128 chars long nickname to the server
5569           in NICK command.  Affected file lib/silcclient/command.c.
5570
5571         * Do not send over 256 chars long channel names to the server
5572           in JOIN command.  Affected file lib/silcclient/command.c.
5573
5574 Tue Oct 30 22:48:59 EST 2001  Pekka Riikonen <priikone@silcnet.org>
5575
5576         * Assure that silc_server_close_connection cannot be called
5577           twice for same socket context.  Affected file is
5578           silcd/server.c.
5579
5580 Tue Oct 30 16:58:14 EST 2001  Pekka Riikonen <priikone@silcnet.org>
5581
5582         * Send error message to application if opening file for
5583           writing during file transfer fails.  Affected file is
5584           lib/silcclient/client_ftp.c.
5585
5586           Remove all file transfer sessions for a client that we're
5587           removing from ID cache.
5588
5589           Affected file is lib/silcclient/client_ftp.c.
5590
5591         * Fixed silc_net_addr2bin to return correct address.  Affected
5592           file lib/silcutil/[unix/win32]/silc[unix/win32]net.c.
5593
5594         * Fixed file transfer session removing on signoff notify.
5595           Affected file irssi/src/silc/core/silc-servers.c.
5596
5597         * Added the SilcClientFileError to be returned in the monitor
5598           callback.  Added NO_SUCH_FILE and PERMISSION_DENIED errors.
5599           Affected file lib/silcclient/silcapi.h.
5600
5601 Mon Oct 29 17:43:04 EST 2001  Pekka Riikonen <priikone@silcnet.org>
5602
5603         * Fixed a crash in silc_client_ftp_free_sessions and
5604           silc_client_ftp_session_free_client.  Affected file
5605           lib/silcclient/client_ftp.c.
5606
5607         * Added `disabled' field in the SilcChannelEntry in the server
5608           to indicate if the server entry is disabled.  Affected file
5609           silcd/idlist.h, silcd/command[_reply].c.
5610
5611         * SILC server adds now /var/run/silcd.pid everytime it is
5612           started.  Affected file silcd/silcd.c.
5613
5614         * Added silc_server_packet_send_clients to send a packet to
5615           the provided table of client entries.  Affected file
5616           silcd/packet_send.[ch].
5617
5618         * Fixed a crash in client resolving in client_prvmsg.c in
5619           client library.  Affected file lib/silcclient/client_prvmsg.c.
5620
5621         * Do not actually remove the client directly from ID cache
5622           during SERVER_SIGNOFF, but invalidate it.  This way we
5623           preserve the WHOWAS info for the client.  Affected file
5624           silcd/server_util.c.
5625
5626         * Fixed SERVER_SIGNOFF notify handling in the server.  The
5627           server is now able to process incoming SERVER_SIGNOFF notify
5628           for a server that it doesn't even know about.  It will remove
5629           the clients provided in the notify.  Affected file
5630           silcd/packet_receive.c.
5631
5632         * Check for partial packet in data queue after every packet that
5633           was found from the queue.  Return and wait for more data if
5634           there is partial data in queue.  Affected file is
5635           lib/silccore/silcpacket.c.
5636
5637 Sun Oct 28 18:46:27 EST 2001  Pekka Riikonen <priikone@silcnet.org>
5638
5639         * Added SilcClietFileError enum to indicate error in
5640           file transfer.  Added SILC_CLIENT_FILE_MONITOR_KEY_AGREEMENT
5641           and SILC_CLIENT_FILE_MONITOR_ERROR new monitor statuses.
5642           Affected files lib/silcclient/silcapi.h and
5643           lib/silcclient/client_ftp.c.
5644
5645         * Check that newsize in silc_buffer_realloc is larger than
5646           the old buffer's size.  Affected file lib/silcutil/silcbufutil.h.
5647
5648         * Added better monitor of file transfers.  It now monitors
5649           key agreement protocol during the file transfer too.  Added
5650           error reporting too.  Affected files
5651           irssi/src/silc/core/silc-servers.c,
5652           irssi/src/fe-common/silc/module-formats.[ch].
5653
5654         * Wrote a help file for FILE command.
5655
5656         * Added silc_rng_global_get_byte_fast to get not-so-secure
5657           random data as fast as possible.  Random data is read from
5658           /dev/urandom if available and from the SILC RNG if not
5659           available.  It is used in padding generation.  Affected file
5660           lib/silccrypt/silcrng.[ch].
5661
5662         * All packets in client library are now processed synchronously.
5663           Optimized packet processing a lot.  Affected file
5664           lib/silcclient/client.c.
5665
5666         * All server connection packets are processing synchronously
5667           now in server, to optimize packet processing.  Affected file
5668           silcd/server.c.
5669
5670         * Include files are installed now only in Toolkit distribution
5671           if make install is given.  Affected files: all Makefile.am's.
5672
5673 Thu Oct 25 22:44:06 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5674
5675         * Assure that silc_client_notify_by_server_resolve does not
5676           resolve the client information multiple times.  If it cannot
5677           be found by the first it cannot be found at all.  Affected
5678           file lib/silcclient/client_notify.c.
5679
5680         * Fixed WHOWAS command reply calling.  Affected file
5681           lib/silcclient/command_reply.c.
5682
5683         * Removed all references to silc_idlist_get_client from the
5684           Irssi SILC client since that call is internal call used by
5685           the library.  The Irssi SILC client will use now client
5686           retrieval functions found in silcapi.h.
5687
5688         * Fixed a bug in resolving nickname info before sending
5689           private message.  It used freed memory.  Affected file
5690           irssi/src/silc/core/silc-servers.c.
5691
5692 Thu Oct 25 19:04:49 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5693
5694         * Assure my_channels statistics cannot go negative in server.
5695           Affected files silcd/server.c, silcd/server_util.c.
5696
5697 Wed Oct 24 19:53:05 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5698
5699         * Upgraded dotconf 1.0.2 to 1.0.6 in lib/dotconf.
5700
5701 Tue Oct 23 13:51:19 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5702
5703         * Win32 Toolkit changes.  Affected files
5704           win32/silc.dsw, win32/libsilc/libsilc.def,
5705           win32/libsilcclient/libsilc.def,
5706           lib/silcutil/silcutil.c, and
5707           lib/sftp/sftp_fs_memory.c.
5708
5709 Mon Oct 22 16:35:05 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5710
5711         * Added silc_net_localip to return local host's IP address.
5712           Affected file lib/silcutil/silcnet.[ch].
5713
5714         * If key exchange or rekey protocol is active for a connection
5715           parse all packets syncronously since there might be packets
5716           in packet queue that we are not able to process without first
5717           processing packets before them.  Affected file silcd/server,
5718           lib/silcclient/client.c.
5719
5720         * SilcPacketParserCallback now returns TRUE or FALSE to indicate
5721           whether library should continue processing the packet.
5722           Affected file lib/silccore/silcpacket.h.
5723
5724         * Added SilcSFTPMonitor callback, SilcSFTPMonitors and
5725           SilcSFTPMonitorData to SFTP server to monitor various
5726           SFTP client requests.  Affected file lib/silcsftp/silcsftp.h,
5727           lib/silcsftp/sftp_server.c.
5728
5729         * Added silc_file_size to return file size.  Affected file
5730           lib/silcutil/silcutil.[ch].
5731
5732         * Implemented the file transfer support for the client library.
5733           Added preliminary support for simple client to client one-file
5734           transmission.  Affected file lib/silcclient/client_ftp.c,
5735           lib/silccilent/client.[ch].
5736
5737         * Added new local command FILE to the Irssi SILC Client.
5738           It is used to perform the file transfer.  It has subcommands
5739           SEND, RECEIVE, SHOW and CLOSE.  Affected files
5740           irssi/src/silc/core/client_ops.c,
5741           irssi/src/silc/core/silc-server.[ch].
5742
5743 Mon Oct 22 12:50:08 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5744
5745         * Relay the SILC_PACKET_FTP in the server.  Affected files
5746           silcd/server.c and silcd/packet_receive.c.
5747
5748 Sun Oct 21 20:21:02 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5749
5750         * Renamed silc_file_read and silc_file_write to functions
5751           silc_file_readfile and silc_file_writefile.  Added function
5752           silc_file_open and silc_file_close.  Affected files
5753           lib/silcutil/silcutil.[ch].
5754
5755 Thu Oct 18 20:58:13 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5756
5757         * Resolve the client info when received private message or
5758           channel message for a client which nickname we don't know.
5759           Affected files lib/silcclient/client_prvmsg.c and
5760           lib/silcclient/client_channel.c.
5761
5762         * Do not crash in /KEY if client is not connected.  Affected
5763           file irssi/src/silc/core/silc-channels.c.
5764
5765         * Added SilcClientStatus field to the SilcClientEntry in the
5766           lib/silcclient/idlist.h.
5767
5768           Added SILC_CLIENT_STATUS_RESOLVING to mark that the entry
5769           is incomplete and is being resolved, it won't be resolved
5770           twice.
5771
5772           Make sure also that USERS command reply does not resolve
5773           twice information.  Affected file is
5774           lib/silcclient/command_reply.c.
5775
5776           Make sure that silc_client_get_clients_by_list does not
5777           resolve twice same information.
5778
5779         * Check for valid client->id in the silc_server_free_client_data.
5780           Affected file silcd/server.c.
5781
5782         * Fixed /GETKEY nick@server not to crash if the server entry
5783           is not found.  Affected file lib/silcclient/command.c.
5784
5785         * Fixed the silc_server_check_cmode_rights to check the
5786           requested modes correctly.  Affected file silcd/command.c.
5787
5788 Thu Oct 18 12:10:22 CEST 2001  Pekka Riikonen <priikone@silcnet.org>
5789
5790         * Better checks for non-printable chars in nick added.
5791           Affected file silcd/command.c.
5792
5793 Thu Oct 18 09:18:58 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5794
5795         * Call the silc_server_udpate_servers_by_server in the
5796           primary router that comes back online in the backup resuming
5797           protocol.  Otherwise it routes packets wrong.  Affected file
5798           silcd/server_util.[ch], silcd/server_backup.c.
5799
5800 Wed Oct 17 16:51:18 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5801
5802         * Added SILC_STR_UI8_[N]STRING[_ALLOC] formats to the
5803           lib/silcutil/silcbuffmt.[ch].
5804
5805         * Redefined the SILC packet header to include the padding
5806           length.  Affected file lib/silccore/silcpacket.[ch].
5807
5808         * Added SILC_PACKET_PADLEN_MAX macro to return the padding
5809           length for maximum padding up to 128 bytes).  Affected
5810           file lib/silccore/silcpacket.h.
5811
5812         * Removed all backwards support for old 0.5.x MAC thingies.
5813           The SILC packet header change makes it impossible to be
5814           backwards compatible.
5815
5816         * Send the ENDING packet with timeout in the backup resuming
5817           protocol.  This is to assure that all routers has connected
5818           to the primary router.  Affected file silcd/server_backup.c.
5819
5820         * Changed the RNG to take the first IV from random data.  It
5821           used to take it from zero actually.  Changed the RNG also
5822           to use /dev/urandom during session.  /dev/random is used
5823           in initialization.  Affected file lib/silccrypt/silcrng.[ch].
5824
5825 Tue Oct 16 20:45:49 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5826
5827         * Changed the SILC packet header to have the first two bytes
5828           (the packet length) encrypted.  Affected files aroung the
5829           code tree, lib/silccore/silcpacket.[ch].  Removed the
5830           SilcPacketCheckDecrypt callback.  It is not needed anymore
5831           since the silc_packet_receive_process will determine now
5832           whether the packet is normal or special.
5833
5834         * Implemented the unidirectional MAC keys.  Affected files
5835           lib/silcske/silcske.c, silcd/protocol.c and
5836           lib/silcclient/protocol.c.
5837
5838         * Implemented the packet sequence number to the MAC computation.
5839           Affected files lib/silccore/silcpacket.c, silcd/protocol.c,
5840           silcd/packet_send.c, silcd/server.c, lib/silcclient/client.c,
5841           lib/silcclient/protocol.c.
5842
5843 Mon Oct 15 17:42:55 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5844
5845         * Allow backup router to announce servers.  All servers
5846           announced by backup router are added to the global list
5847           automatically.  Update hte server's socket to our primary
5848           router also when backup router announces a server.
5849           Affected file silcd/packet_receive.c.
5850
5851         * Do not update the client->router in the function
5852           silc_server_udpate_clients_by_server if the client is on
5853           global list.  We might fail to find any specific server
5854           for locally connected clients and local cell clients.  They
5855           should still use the `from' and not `to' as client->router.
5856           This fixes backup router resuming protocol.  Affected file
5857           silcd/server_util.c.
5858
5859         * Decrease channel statistics count only if the channel
5860           deletion worked.  Affected files are silcd/server.c and
5861           silcd/server_util.c.
5862
5863         * Added silc_server_update_servers_by_server to update origin
5864           of all server entries.  Used during backup router protocol.
5865           Affected files silcd/server_util.[ch], silcd/server.c. and
5866           silcd/backup_router.c.
5867
5868         * ROBODoc documented the lib/silccrypt/silchmac.h.  Added new
5869           function silc_hmac_init, silc_hmac_update, silc_hmac_final,
5870           silc_hmac_get_hash and silc_hmac_get_name.  Affected file
5871           lib/silccrypt/silchmac.c.
5872
5873 Sun Oct 14 18:28:22 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5874
5875         * Assure that router cannot reroute the same channel message
5876           to the sender.  Affected file silcd/packet_receive.c.
5877
5878 Sat Oct 13 12:46:18 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5879
5880         * Made better checks that the channel message is not sent
5881           to the router it came from.  Affected file is
5882           silcd/packet_send.c.  Fixed memory leak too.
5883
5884         * Announce informations for incoming router connection, but
5885           only after checking if it is replaced by backup router.
5886           Affected file silcd/packet_receive.c.
5887
5888 Fri Oct 12 18:37:24 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5889
5890         * Fixed the backup resuming protocol to work in multiple
5891           router environment.  Affected file silcd/server_backup.c.
5892
5893         * Route packet only to one router in the function
5894           silc_server_packet_send_to_channel.  Affected file is
5895           silcd/packet_send.c.
5896
5897         * Fixed silc_server_send_notify_dest to set the broadcast
5898           flag.  Fixed the silc_server_send_notify_topic to actually
5899           send the TOPIC_CHANGE notify and not SERVER_SIGNOFF notify.
5900           Affected file silcd/packet_send.c.
5901
5902         * Changed the SFTP Filesystem interface.  Changed the
5903           SilcSFTPFilesystemStruct to SilcSFTPFilesystemOps to include
5904           the filesystem operation function.  The SilcSFTPFilesystem
5905           is now a context that is allocated by all filesystem allocation
5906           functions and it already includes the operations structure
5907           and filesystem specific context.  It is given as argument
5908           now to the silc_sftp_server_start.  This made the interface
5909           a bit cleaner.  Affected file lib/silcsftp/silcsftp[_fs].h,
5910           lib/silcsftp/sftp_fs_memory.c and sftp_server.c.
5911
5912 Thu Oct 11 22:19:26 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5913
5914         * Changed the backup router adding and getting interfaces
5915           in the server.  The router that will be replaced by the
5916           specified backup router is now sent as argument.  Affected
5917           files silcd/serverconfig.[ch], silcd/backup_router.[ch], and
5918           silcd/server.c.
5919
5920         * Added silc_net_addr2bin_ne to return the binary form of
5921           the IP address in network byte order.  Affected files
5922           lib/silcutil/[unix/win32].silc[unix/win32]net.[ch].
5923
5924 Thu Oct 11 12:14:19 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5925
5926         * Check for existing server ID in silc_server_new_server
5927           and in silc_server_connect_to_router_final and remove the
5928           old entry if it exists.  Affected file silcd/packet_receive.c,
5929           silcd/server.c.
5930
5931         * Send the channel message always to only one router, either
5932           in upstream or downstream.  Affected file is
5933           silcd/packet_send.c.
5934
5935 Tue Oct  9 17:45:43 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5936
5937         * Wrote the definition of the backup resuming protocol to the
5938           protocol specification.
5939
5940         * Removed one redundant channel key generation from normal
5941           server during joining procedure.  Removed one redundant
5942           channel key sending from server to router during joining
5943           procedure.  Affected file silcd/command.c.
5944
5945         * Made minor bugfixes to the backup router resuming protocol.
5946           Affected file silcd/server_backup.c, server.c.
5947
5948 Mon Oct  8 16:47:42 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5949
5950         * Added --disable-asm configuration option.  Affected files
5951           configure.in.pre, lib/silcmath/mpi/configure.in.  A patch
5952           by salo.
5953
5954         * Implemented the backup resuming protocol that is used to
5955           resume the primary router position in the cell after the
5956           primary router comes back online.  Affected files
5957           silcd/server_backup.[ch], silcd/server, silcd/packet_receive.c,
5958           and silcd/server_util.[ch].
5959
5960 Sun Oct  7 12:29:25 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5961
5962         * Sleep two (2) seconds after sending QUIT command to server.
5963           Affected file lib/silcclient/command.c.
5964
5965         * Assure that if outgoing data buffer is pending do not force
5966           send any data.  Affected file silcd/packet_send.c.
5967
5968         * Assure that if outgoing data buffer is pending do not force
5969           send any data.  Affected file lib/silcclient/client.c.
5970
5971         * Implemented the backup router support when the primary router
5972           goes down.  The servers and routers can now use the backup
5973           router as new primary router without loosing connectivity.
5974
5975 Sat Oct  6 21:18:54 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5976
5977         * Added new SILC_IDLIST_STATUS_DISABLED flag for entries
5978           in the server to indicate disabled entry.  All data read
5979           from the connection will be ignored and no data is sent
5980           for entry that is disabled.  Affected files are
5981           silcd/idlist.h, silcd/server.c.
5982
5983 Fri Oct  5 00:03:29 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5984
5985         * Created SFTP client and server test programs in the
5986           lib/silcsftp/tests directory.
5987
5988 Wed Oct  3 23:31:42 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5989
5990         * Implemented memory filesystem (virtual filesystem) for
5991           SFTP server.  Affected file lib/silcsftp/silcsftp_fs.h,
5992           sftp_fs_memory.c.
5993
5994 Sun Sep 30 22:10:57 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5995
5996         * Implemented the SFTP (SSH File Transfer Protocol) to the
5997           lib/silcsftp.  It includes SFTP client and SFTP server
5998           implementations.
5999
6000 Sun Sep 30 10:35:44 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6001
6002         * Moved lib/silccore/silcprotocol.[ch] to the
6003           lib/silcutil library.
6004
6005         * Added silc_buffer_format_vp and silc_buffer_unformat_vp to
6006           take variable argument list pointer as argument.  Affected
6007           file lib/silcutil/silcbuffmt.[ch].
6008
6009         * Added silc_buffer_set function that is used to set data
6010           to a SilcBuffer that is not allocated at all (SilcBufferStruct).
6011           Affected file lib/silcutil/silcbuffer.h.
6012
6013         * Changed various routines in the core library to use the new
6014           silc_buffer_set instead of allocating new buffer only for
6015           temporary purposes.
6016
6017         * Added 64-bit value formatting and unformatting support to the
6018           silc_buffer_[un]format routines.  Affected file is
6019           lib/silcutil/silcbuffmt.[ch].
6020
6021           Added also 64-bit macros: SILC_GET64_MSB and SILC_PUT64_MSB,
6022           to includes/bitmove.h.
6023
6024 Fri Sep 28 21:30:10 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6025
6026         * Fixed channel user mode saving in client library.  Affected
6027           file lib/silcclient/command[_reply].c.
6028
6029 Thu Sep 27 22:52:30 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6030
6031         * Defined the file transfer to the SILC Protocol.  Added
6032           new packet type SILC_PACKET_FTP and defined File Transfer
6033           Payload.  The mandatory file transfer protocol is SFTP
6034           (SSH File Transfer Protocol).  Affected file in addition
6035           of the internet draft is lib/silccore/silcpacket.h.
6036
6037         * Deprecated the SILC_PACKET_CELL_ROUTERS and defined new
6038           packet SILC_PACKET_RESUME_ROUTER instead.  The new packet
6039           is used as part of backup router protocol when the primary
6040           router of the cell is back online and wishes to resume
6041           the position as primary router.
6042
6043         * Redefined the MAC generation keys in the protocol.  The
6044           same key is not used anymore in both direction.  Both
6045           direction will now use different keys for sending and
6046           receiving.  This fixes a potential security flaw.  This
6047           change causes incompatibilities in the protocol.
6048
6049         * Redefined also the MAC computation from the packet.
6050           An packet sequence number is now added to the MAC
6051           computation.  This prevents possible replay attacks against
6052           the protocol.  This change too causes incompatibilities
6053           in the protocol.
6054
6055           Added `sequence' field to the SilcPacketContext to hold
6056           the current sequence number for the packet.
6057
6058 Wed Sep 26 20:15:22 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6059
6060         * Added `created' field to the SilcIDListData in the file
6061           silcd/idlist.h to indicate the time when the entry was
6062           created.
6063
6064         * Added `created' field to the SilcChannelEntry too.  Affected
6065           file silcd/idlist.h.
6066
6067         * Added `creation_time' aguments to all the announcement functions
6068           in the server.  If it is provided then only the entries that
6069           was created after the provided time frame are actually
6070           announced.  Affected file silcd/server.[ch].
6071
6072         * The protocol says that the Channel ID's IP address must be
6073           based on the router's IP address.  Added check for this in
6074           the silc_server_new_channel when processing incoming New Channel
6075           Payload.  Affected file silcd/packet_receive.c.
6076
6077         * Print out the correct version with --version in SILC client.
6078           Affected file irssi/src/silc/core/silc-core.c.
6079
6080 Mon Sep 24 17:19:00 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6081
6082         * Fixed WHOWAS command to check for completnes of the client
6083           entry always, not just when the command is coming from client.
6084           Affected file silcd/command.c.
6085
6086         * Added new function silc_server_packet_queue_purge to purge the
6087           outgoing data queue to the network.  After the function returns
6088           it is guaranteed that the outgoing packet queue is empty.
6089           Affected file silcd/packet_send.[ch].
6090
6091         * Purge the outgoing packet queue in the rekey protocol's final
6092           callback to assure that all rekey packets go to the network
6093           before quitting the protocol.  Affected file silcd/server.c.
6094
6095         * Added silc_client_packet_queue_parse as similar function as
6096           in server to the client library.  The affected file is
6097           lib/silcclient/client.c.
6098
6099 Sun Sep 23 15:15:53 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6100
6101         * Splitted silcd/server.c and created silcd/server_util.[ch]
6102           for utility functions.
6103
6104         * Added new socket flag SILC_SF_DISABLED to indicate that the
6105           connection is open but nothing can be sent to or received from
6106           the connection.  Affected file lib/silcutil/silsockconn.[ch].
6107           The checking for disabled socket is checked in the low level
6108           silc_socket_write and silc_socket_read functions.
6109
6110 Thu Sep 20 23:11:28 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6111
6112         * Allow only nicknames and channel names that fits into the
6113           7-bit unsigned char ASCII set.  Affected file silcd/command.c.
6114
6115 Thu Sep 20 18:04:12 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6116
6117         * When processing JOIN command reply in server check that if
6118           the channel exists in our global list we'll move it the local
6119           list.  Affected file silcd/command_reply.c.
6120
6121         * Fixed the check whether client is joined on the channel already
6122           in JOIN command.  Affected file lib/silcclient/command.c.
6123
6124         * Fixed the JOIN command reply to check whether the channel
6125           already exists.  Affected file lib/silcclient/command_reply.c.
6126
6127 Wed Sep 19 22:58:32 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6128
6129         * Added silc_ske_status_string to map the SKE error numbers
6130           to readable strings.  The affected files are
6131           lib/silcske/silcske[_status].[ch].
6132
6133 Tue Sep 18 22:50:41 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6134
6135         * Do not show the private channels on the WHOIS channel list
6136           as it is not allowed by the protocol.  The affected file is
6137           silcd/server.c.
6138
6139 Sun Sep 16 12:32:58 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6140
6141         * Assure that the packet length digged from the actual packet
6142           is something sensible in the silc_packet_decrypt_rest_special
6143           in lib/silccrypt/silcpacket.c.
6144
6145         * Free and NULL the allocated pointer in silc_hmac_alloc if
6146           the HMAC allocation fails.  The affected file is
6147           lib/silccrypt/silchmac.c.
6148
6149         * Print the selected security properties to the log files in
6150           the server.  Affected file silcd/protocol.c.
6151
6152         * Add SKE's reference counter even if calling the completion
6153           callback manually.  Otherwise it goes negative, although it
6154           does not cause any problems.  The affected file is
6155           lib/silcske/silcske.c.
6156
6157         * Remove the client entry with short timeout after giving the
6158           KILL command.  Affected file lib/silcclient/command.c.
6159
6160         * Fixed to send error reply in WHOIS and IDENTIFY commands in
6161           case all found clients are already disconnected (WHOWAS would
6162           found them) in the server.  Affected file silcd/command.c.
6163
6164         * Update the last_receive (time of last data received) to be
6165           updated only when received private or channel message so that
6166           the idle time showed in WHOIS makes more sense.
6167
6168         * Added boolean field `valid' in to the SilcClientEntry in the
6169           client library to indicate whether the entry is valid or not.
6170           This fixes the nickname change bug on channel when changing
6171           the nickname to be same than the old (like nick to Nick) the
6172           nickname formatter doesn't set the new nick anymore to Nick@host.
6173           Affected file lib/silcclient/idlist.[ch].
6174
6175         * Now actually fixed the nickname changing on disconnection.
6176           Added new function silc_change_nick to the Irssi SILC Client.
6177           Affected file irssi/src/silc/core/client_ops.c,
6178           irssi/src/silc/core/silc-nicklist.[ch].
6179
6180 Sat Sep 15 13:29:17 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6181
6182         * Check that the public key exists in the GETKEY command before
6183           trying to encode it.  Affected file silcd/command.c.
6184
6185         * Print some notifications on received public keys with GETKEY
6186           command in the Irssi SILC Client.  Affected files are
6187           irssi/src/fe-common/silc/module-formats.[ch],
6188           irssi/src/silc/core/client_ops.c.
6189
6190         * Use IDENTIFY command to resolve the server information in the
6191           GETKEY command instead of INFO command.  Affected file
6192           lib/silcclient/command.c.
6193
6194         * All command reply functions in the client library now calls
6195           the pending command reply callbacks even if an error has
6196           occurred.  The server has done this a long time and now it was
6197           time to move the client library to this as well.  Now all
6198           errors can be delivered back to the pending command reply
6199           callbacks if necessary.  Affected files are
6200           lib/silcclient/command[_reply].[ch].
6201
6202         * Change the nickname on disconnection back to the username
6203           because in reconnect the server will enforce it to it anyway.
6204           Affected file irssi/src/silc/core/silc-servers.c.
6205
6206         * Fixed a config file parsing bug in the Irssi SILC client.
6207           Affected file irssi/src/silc/core/clientconfig.c.
6208
6209 Thu Sep 13 23:11:18 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6210
6211         * When printing the channel mode on JOIN, verify that the
6212           channel key and channel's HMAC are valid.  Affected file
6213           irssi/src/silc/core/client_ops.c.
6214
6215 Thu Sep 13 20:24:52 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6216
6217         * Added defines SILC_DEFAULT_CIPHER, SILC_DEFAULT_HMAC,
6218           SILC_DEFAULT_HASH and SILC_DEFAULT_PKCS in the file
6219           lib/silccrypt/[silccipher.h|silchmac.h|silchash.h|silcpkcs.h].
6220
6221         * Removed channel key rekey task deleting from the function
6222           silc_server_save_channel_key.  Affected file silcd/server.c.
6223           Added explicit timeout task context instead that is used to
6224           delete the task if we are registering a new task before the
6225           new task has elapsed.
6226
6227         * When channel key rekey occurs the client library now saves
6228           the old channel key for a short period of time (10 seconds) and
6229           is able to use it in case some is still sending channel
6230           messages encrypted with the old key after the rekey.  Affected
6231           file lib/silcclient/[idlist.h|client_channel.c].
6232
6233 Sun Sep  9 15:49:16 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6234
6235         * Added check to the silc_server_new_id_real to not accept
6236           new ID if it is the sender's own ID.  Affected file is
6237           silcd/packet_receive.c.
6238
6239         * Assure that we do not announce ourself or the one we've
6240           sending our announcements when we're router and are announcing
6241           servers to our primary router.  Affected file silcd/server.c.
6242
6243         * Fixed silc_server_command_identify_check_client to assemble
6244           correct WHOIS packet.  It send corrupted WHOIS packet and
6245           caused problem with router to router connections.  Affected
6246           file silcd/command.c.
6247
6248           Fixed also silc_server_command_whois_check the same way
6249           as for the IDENTIFY command.
6250
6251         * Added new SilcIDListStatus to the server in the SilcIDListData
6252           structure.   The status now includes the current status of
6253           the entry (like registered, resolved etc.).  Affected file
6254           silcd/idlist.[ch].  Defined a bunch of different status types
6255           as well.  This replaced the old boolean registered field as well.
6256
6257           Added resolve_cmd_ident field to the SilcClientEntry structure
6258           too so that if the entry is for example being resolved so
6259           another command may attach to the same pending command reply
6260           without requiring to resolve the same entry again.  This concept
6261           should optimize the WHOIS and the IDENTIFY resolving under
6262           heavy load by taking away unnecessary resolving for entries
6263           that are being resolved already.
6264
6265           Added support for adding multiple pending commands for one
6266           command idenfier.  Affected file silcd/command[_reply].[ch].
6267
6268         * Fixed WHOIS and IDENTIFY save to remove the cache entry
6269           before deleting the data.  Otherwise the hash table will have
6270           freed data in comparison functions.  Affected file is
6271           silcd/command_reply.c.
6272
6273         * Fixed silc_idlist_replace_client_id to add the new entry to
6274           the cache with NULL nickname.  Otherwise there will be invalid
6275           memory as the nickname after the nickname is freed.  Affected
6276           file silcd/packet_receive.c.
6277
6278         * Fixed the silc_idlist_get_clients_by_hash.  The entries was
6279           saved into wrong slots because the previous number of entries
6280           was not taken into account.  Affected file silcd/idlist.c.
6281           Fixed same thing in silc_idlist_get_clients_by_nickname too.
6282
6283         * If we are router and we receive JOIN notify to a channel that
6284           does not have any users then notified client is marked as the
6285           channel founder, as it is it.  The affected file is
6286           silcd/packet_receive.c
6287
6288         * Added to the extended hash table API's table_del_*ext functions
6289           the destructor as argument too, so that the caller can decide
6290           which destructor to use or whether to use destructor at all.
6291           Affected file lib/silcutil/silchashtable.[ch].
6292
6293         * Fixed ID Cache purging.  It actually deleted the entries from
6294           the hash table after the data was freed.  The hash table ended
6295           up comparing freed memory.  The affected file is
6296           lib/silccore/silcidcache.c.
6297
6298 Sat Sep  8 10:22:10 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6299
6300         * Fixed Irssi SILC client's KILL command's HELP syntax.
6301
6302         * The USERS command now resolves the detailed user information
6303           if the userinfo field is missing.  Affected file is
6304           lib/silcclient/command_reply.c.
6305
6306         * Do not print error in silc_file_read if the read file does
6307           not exist.  Just silently return NULL.  Affected file is
6308           lib/silcutil/silcutil.c.
6309
6310         * Fixed the silc_log_output to not wine about NULL filename
6311           and to not create some bogus " " filename.  Affected file is
6312           lib/silcutil/silclog.c.
6313
6314 Fri Sep  7 22:16:38 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6315
6316         * Fixed various printing bugs on the user interface in the
6317           Irssi SILC Client.  Minor changes that were forgotten from
6318           the release.
6319
6320 Fri Sep  7 17:28:37 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6321
6322         * Fixed the configure.in.pre and the compilation and distribution
6323           environment to support the new autoconf 2.52.  That version is
6324           now required to compile the CVS trunk.
6325
6326 Thu Sep  6 12:47:37 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6327
6328         * Renamed function silc_parse_nickname to silc_parse_userfqdn
6329           to generally parse user@fqdn format strings.  Affected file
6330           lib/silcutil/silcutil.c.
6331
6332         * Added nickname_format and nickname_force_format fields to the
6333           SilcClientParams structure.  The first one defines the format
6334           for the nicknames that the library will enforce if the receives
6335           multiple same nicknames.  The second one is boolean value and
6336           can be used to force the library to always enforce the format
6337           to the nicknames regardles whether there are multiple nicknames
6338           or not.  This configurable formatting was employed to flexibly
6339           support accessing multiple nicknames from the user interface.
6340           The userinterface can now set the nicknames to what ever format
6341           they prefer.  Affected file lib/silcclient/silcapi.h.
6342
6343           Added function silc_client_nickname_format to the file
6344           lib/silcclient/idlist.c.  It performs the nickname formatting.
6345
6346           Added new field `hostname´ to the SilcClientEntry context.
6347           It holds the hostname of the client.  Affected file is
6348           lib/silcclient/idlist.h.
6349
6350         * Irssi SILC Client sets the nicknames in nick@hostn format.
6351           Fe. priikone@otaku, priikone@otaku2 etc.  Affected file
6352           irssi/src/silc/core/silc-core.c.
6353
6354           The WHOIS printing now also shows both the real nickname and
6355           the formatted nickname so that user knows how to access the
6356           user if there are multiple same nicknames cached.  Affected
6357           file irssi/src/silc/core/client_ops.c.  Changed the WHOIS
6358           printing formatting too to take the hostname now as a separate
6359           argument.  The Affected file is
6360           irssi/src/fe-common/silc/modules-formats.[ch].
6361
6362         * Changed the silc_client_get_clients_local to accept the formatted
6363           nickname as argument.  It accepts the real nickname too but the
6364           formatted nickname can be used to find the true entry from
6365           multiple entries.  Affected file lib/silcclient/silcapi.h and
6366           lib/silcclient/idlist.c.
6367
6368         * Added nickname_format_parse field to the SilcClientParams.
6369           It is a callback function provided by the application to parse
6370           the nickname out of the formatted nickname string. The library
6371           calls it to get the nickname from the formatted string. Since
6372           the application generally knows better the format of the nickname
6373           string it parses it instead of the library, even though library
6374           encodes the formatted string.  If the callback function is not
6375           provided then the library will use the string as is.  The
6376           affected file is lib/silcclient/silcapi.h.
6377
6378         * All the nickname strings passed to the client library in
6379           commands are now expected to be formatted nickname strings.
6380           If the command does not support the formatted nickname string
6381           it will assume that the sent string is the actual nickname.
6382           Affected file lib/silcclient/command.c.
6383
6384 Tue Sep  4 22:31:28 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6385
6386         * Added public key authentication support to OPER and SILCOPER
6387           commands in the client library.  Affected file is
6388           lib/silcclient/command.c.
6389
6390 Tue Sep  4 12:39:17 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6391
6392         * Changed the get_auth_methdod client operation to be asynchronous.
6393           It can be async if the application resolves the authentication
6394           method from the server during the negotiation.  Added new
6395           SilcGetAuthMeth completion callback that the application will
6396           call after resolving the authentication method.
6397
6398           Added function silc_client_request_authentication_method that
6399           the application can use to resolve the authentication method
6400           from the server.  Added also SilcConnectionAuthRequest callback
6401           that the library will call after the server has replied.  The
6402           application can call this function if it does not know the
6403           current authentication method.
6404
6405           Affected files are lib/silcclient/client.c and
6406           lib/silcclient/silcapi.h.
6407
6408         * The Irssi SILC client now automatically resolves the authentication
6409           method incase any configuration information is not present (and
6410           currently there never is).  The affected file is
6411           irssi/src/silc/core/client_ops.c.
6412
6413         * Fixed public key authentication from the client library.
6414           Affected file lib/silcclient/protocol.c.  Changed also the
6415           protocol specification about the public key authentication in
6416           the connection authentication protocol.  The actual data to be
6417           signed is now computed with a hash function before signing.
6418
6419         * Fixed the public key authentication from the server as well.
6420           Affected file silcd/protocol.c.
6421
6422         * Removed the mlock()'s from the memory allocation routines.
6423           Affected file lib/silcutil/silcmemory.c.  The ./configure does
6424           not check anymore for the mlock().  Affected file is
6425           configure.in.pre.
6426
6427         * Fixed USERS command in server to allow the execution of the
6428           command for private and secret channels if the client sending
6429           the command is on the channel.  Affected file silcd/command.c.
6430
6431         * Fixed silc_client_get_clients_local to return the clients
6432           count correctly.  It could return wrong value.  Affected file
6433           lib/silcclient/idlist.c.
6434
6435 Mon Sep  3 20:09:59 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6436
6437         * Fixed the lib/silcmath/mpi/mpi.h to always use 32-bit data
6438           types.  The assembler optimizations seemed not to like 64-bit
6439           data types.  The assmebler optimizations thus are now enabled
6440           also for BSD systems as opposed to only enable them for Linux.
6441
6442         * Do not check for threads at all on BSD systems.  Affected
6443           file configure.in.pre.
6444
6445         * Removed -n and -h options from the Irssi SILC Client since
6446           they are not used in silc.
6447
6448         * Fixed the prime generation to assure that the first digit
6449           of the generated random number is not zero since our conversion
6450           routines does not like number strings that starts with zero
6451           digit.  If zero digit is seen the random number is regenerated.
6452           This caused some corrupted RSA keys when the zero first digit
6453           was met.  Affected file lib/silcmath/silcprimegen.c.
6454
6455 Sun Sep  2 17:17:24 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6456
6457         * Fixed WIN32 configuration in the ./configure script.
6458           Fixed to include xti.h on environments that has it.
6459           Patches by Carsten Ilchmann and andrew.
6460
6461 Sat Sep  1 00:29:33 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6462
6463         * Changed the silc_id_create_client_id to be collision
6464           resistant.  It is now assured that there cannot be created
6465           two same client ID's.  I suspect that some weird bugs in
6466           the server were actually caused by duplicate Client IDs.
6467           Affected file silcd/serverid.[ch].  A router receiving
6468           new ID now also assures and informs the sending server
6469           if the ID caused collision.
6470
6471         * Changed the silc_id_create_channel_id to also assure that
6472           there are no collisions.
6473
6474 Wed Aug 29 17:55:01 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6475
6476         * Statement about ignoring the Mutual Authentication flag when
6477           performing rekey with PFS was a bit misleading.  It is ignored
6478           if it was set in the initial negotiation, it cannot be even
6479           set in the rekey.  Fixed in the ke-auth draft.  Started the
6480           new versions of the protocol drafts in the doc/.
6481
6482 Sun Aug 26 14:59:15 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6483
6484         * Fixed a bug in silc_client_command_identify_save when saving
6485           new channel information.  The channel name was no duplicated
6486           and caused crash on exit.  Affected file is
6487           lib/silcclient/command_reply.c.
6488
6489 Fri Aug 17 23:07:45 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6490
6491         * Fixed the getkey command handling in the server.  Send just
6492           empty OK reply to the sender if the key could not be fetched
6493           (but everything else was ok, like the key just was not available).
6494           Changed the public key parameter to optional in the protocol
6495           specs so that empty OK reply can be sent.  Affected file
6496           silcd/command.c.
6497
6498           Added a message to Irssi SILC client to tell to user if the
6499           server did not return a public key.
6500
6501 Tue Aug 14 07:29:27 CEST 2001  Pekka Riikonen <priikone@silcnet.org>
6502
6503         * Fixed a channel key regeneration bug.  It registered new
6504           timeout tasks exponentially until all system resources were
6505           used.  Affected file silcd/server.c.
6506
6507 Sun Aug 12 20:48:14 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6508
6509         * Added the SILC Document generator to the scripts/silcdoc.
6510           It can be used to generate the Toolkit Reference Manual out
6511           of the source tree.  Internally it will also use the RoboDoc
6512           generator now imported in util/robodoc.
6513
6514 Sun Aug 12 12:28:17 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6515
6516         * Added couple of return's in rekey protocol if error orccurred
6517           during the protocol.  The execution must be terminated.
6518           Affected file silcd/protocol.c.  Also, terminate the protocol
6519           always with timeout.
6520
6521 Sat Aug 11 12:36:02 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6522
6523         * The client's Client ID was created initally from the wrong
6524           nickname (it could have been in format nick@host) in the
6525           silc_server_new_client.  Affected file silcd/packet_receive.c
6526
6527 Sat Aug 11 00:29:57 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6528
6529         * Added some SILC_LOG_ERROR's to various error conditions
6530           if client could not be added to ID cache.  Affected files
6531           silcd/packet_receive.c and silcd/server.c.
6532
6533         * When client's sock->user_data is freed, NULL also the
6534           client->router and client->connection pointers.  Added check
6535           for these pointers being NULL to various places around the
6536           code.  Affected file silcd/server.c.
6537
6538         * Added client->data.registered == TRUE checks to various
6539           places around the code to assure that unregistered client's
6540           are not handled when it is not allowed.  Affected file
6541           silcd/server.c.
6542
6543         * Added `bool registered' fields to all
6544           silc_idlist_[server|client]_get_* routines to indicate whether
6545           the fetched client needs to be registered or not.  Affected
6546           file silcd/idlist.[ch].
6547
6548         * Add your own entry as registered to the ID cache in the
6549           server.  Affected file server.c.
6550
6551         * Fixed a bug in silc_server_new_server.  The SilcServer was
6552           set as the new server's context instead of SilcServerEntry.
6553           This naturally caused some weird bugs.
6554
6555         * Added "updated" field the SilcChannelEntry which indicates
6556           the time since the channel entry was last accessed.  This
6557           can be used to determine whether it is necessary to
6558           announce the channel after backup resuming protocol.
6559           Affected files silcd/idlist.[ch].
6560
6561 Thu Aug  9 18:28:37 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6562
6563         * Do not delete the channel rekey task when adding it
6564           for in silc_server_create_channel_key.
6565
6566         * Changed the silc_server_create_channel_key to return
6567           TRUE or FALSE to indicate the success of the channel key
6568           creation.
6569
6570 Thu Jul 26 11:32:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6571
6572         * Fixed MSVC++ project files and added missing files to
6573           Makefiles under win32/.
6574
6575 Wed Jul 25 18:43:54 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6576
6577         * Do not add TCP_NODELAY flag if the operating system
6578           does not have it defined.  Affected files are
6579           lib/silcutil/[unix/win32]/silc[unix/win32]net.c.
6580
6581         * Fixed buffer overflow from Irssi SILC Client.  Affected
6582           file irssi/src/fe-common/core/themes.c.
6583
6584         * Fixed double free in client library in the file
6585           lib/silcclient/client.c when disconnecting from server.
6586
6587         * Applied double free patch from cras to Irssi SILC client.
6588           Affected files irssi/src/core/[modules/expandos].c
6589
6590         * Fixed the disconnection handling to Irssi SILC Client.
6591           The application must call silc_client_close_connection
6592           in ops->connect client operation in case of failure of
6593           the connection.  Affected file is
6594           irssi/src/silc/core/client_ops.c.
6595
6596         * Do not set sock->protocol to NULL in the function
6597           silc_client_close_connection after executing the protocol's
6598           final callback since the sock might not be valid anymore.
6599           Affected file lib/silcclient/client.c.
6600
6601 Wed Jul 25 16:04:35 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6602
6603         * Do not enable SILC_THREADS if the linking with libpthread
6604           did not happen.  Affected file configure.in.pre.
6605
6606         * Added notion to protocol specification that server must
6607           verify the sent authentication payload with CMODE when
6608           setting the channel founder key.  Implemented it to the
6609           server.  Affected file silcd/command.c.
6610
6611 Mon Jul 23 18:31:43 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6612
6613         * Added _EXTRA_DIST SILC distribution variable to the
6614           distributions file.  It is used to conditionally add extra
6615           files or directories to the specific distribution.  Affected
6616           files ./prepare, Makefile.am.pre and distributions.
6617
6618           Removed the `_' from the start of the distribution names.
6619           It is redundant.
6620
6621         * Added README.WIN32 for instructions to compile the Toolkit
6622           under WIN32.
6623
6624 Mon Jul 23 10:12:37 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6625
6626         * Fixed a double free in disconnection in the server.  Affected
6627           file is silcd/server.c.
6628
6629         * Fixed the lib/silcske/groups.c to work now also with GMP
6630           MP library.  The string conversion did not work when using
6631           specific base and the base is indicated in the string as well.
6632
6633         * Created win32/ directory which now includes MSVC++ specific
6634           stuff so that toolkit (DLLs) may be compiled with MSVC++.
6635           It will appear only in the toolkit distribution
6636
6637 Sun Jul 22 19:40:30 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6638
6639         * Changed the key material distribution function in case when
6640           the hash output is too short.  The data is now concatenated
6641           a bit differently than it used to.  Made the change to the
6642           SKE protocol specification.
6643
6644         * Added better GMP detection to configure.in.pre.  A patch
6645           by salo.
6646
6647 Fri Jul 20 13:16:00 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6648
6649         * Fixed a minor bug in SKE that might cause some problem on
6650           some platforms.  Affected file lib/silcske/silcske.c.
6651
6652         * Added the cookie checking for initiator in the SKE.  It checks
6653           that the responder returns the sent cookie unmodified.  The
6654           affected file is lib/silcske/silcske.c.  Added new SKE
6655           error type INVALID_COOKIE that can be sent during the
6656           negotiation.  Fixed some memory leaks as well.
6657
6658         * Added the "invalid cookie" error message to Irssi SILC client's
6659           message formats.
6660
6661 Thu Jul 19 21:44:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6662
6663         * Added `task_max' field to the SilcClientParams to indicate
6664           the maximum tasks the scheduler can handle.  If set to zero,
6665           default values are used.  Affected file lib/silcclient/silcapi.h.
6666
6667         * Fixed memory leaks in silc_client_close_connection.  Affected
6668           file lib/silcclient/client.c.
6669
6670         * Added silc_client_del_client_entry to client library to free
6671           all memory of given client entry.  Affected file is
6672           lib/silcclient/idlist.[ch].
6673
6674         * Added new functions silc_client_del_channel and
6675           silc_client_del_server to delete channel and server entries.
6676           Affected file lib/silcclient/[silcapi.h/idlist.c].
6677
6678         * Removed silc_client_del_client_by_id from silcapi.h.
6679
6680         * Fixed the INFO command to return the server's own info
6681           correctly when querying by Server ID.  Affected file is
6682           silcd/command.c.
6683
6684 Thu Jul 19 14:47:30 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6685
6686         * Removed the non-blocking settings in WIN32 code in the
6687           silc_sock_[read/write] and added SleepEx instead.  Affected
6688           file lib/silcutil/win32/silcwin32sockconn.c.  The availability
6689           of input data is now checked with FIONREAD and ioctlsocket.
6690
6691 Wed Jul 18 18:34:01 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6692
6693         * Call silc_schedule_task_del_by_context in the
6694           silc_protocol_cancel instead of silc_schedule_task_del_by_callback.
6695           Affected file lib/silccore/silcprotocol.c.
6696
6697         * Call silc_protocol_cancel for active protocols in the
6698           silc_server_close_connection if the funtion
6699           silc_server_free_sock_user_data has not been called.
6700           Affected file silcd/server.c.
6701
6702         * Generic tasks cannot be deleted using the del_by_fd
6703           task deleting function since generic tasks does not match
6704           any specific fd.  Affected file lib/silcutil/silcschedule.[ch].
6705
6706         * Added a notion to SILCOPER help file that the SILCOPER works
6707           only on router server, not on normal server.
6708
6709 Wed Jul 18 09:40:04 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6710
6711         * Added for WIN32 support for the new scheduler as well.
6712           Affected file lib/silcutil/win32/silcwin32schedule.c.
6713
6714         * Fixed the SHA1 implementation to work on various platforms.
6715
6716 Tue Jul 17 23:04:10 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6717
6718         * Rewrote the SILC Scheduler entirely.  Removed the old SILC Task
6719           API.  It is part of the scheduler now.  Everything else is
6720           as previously but some functions has changed their names.
6721           Checkout the lib/silcutil/silcschedule.h for the interface.
6722           Updated all applications to use the new interface.  Affected
6723           files are lib/silcutil/silcschedule.[ch].
6724
6725 Tue Jul 17 16:53:30 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6726
6727         * Found a bug in the SKE implementation.  The HASH value,
6728           specified by the protocol, was not computed correctly.  The
6729           public key of the responder was not added to the computation
6730           even though it is mandatory.  Affected file lib/silcske/silcske.c.
6731           This unfortunately causes incompatibilities with older
6732           clients and servers.
6733
6734         * Added WIN32 specific network init and uninit functions:
6735           silc_net_win32_init and silc_net_win32_uninit to init and uninit
6736           the Winsock2.  Affected file lib/silcutil/silcnet.h and
6737           lib/silcutil/win32/silcwin32net.c.
6738
6739         * Set the socket always to nonblocking mode on WIN32 after
6740           reading data or writing data.  Affected file is
6741           lib/silcutil/win32/silcwin32sockconn.c.
6742
6743 Mon Jul 16 22:55:26 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6744
6745         * Fixed various compilation problems under WIN32.  Affected
6746           files lib/silcutil/win32/silcwin32thread.c and
6747           lib/silcutil/win32/silcwin32schedule.c.
6748
6749         * Removed all _internal.h #includes from public header
6750           files.  Internal headers must never be included from
6751           public headers.
6752
6753           Removed also the lib/silcske/payload_internal.h file.
6754
6755         * All include files that may be needed (public and some others
6756           included by the public headers) by application developers are
6757           now copied to the ./includes directory.  It does not copy any
6758           internal headers.  Affected file Makefile.defines.pre and all
6759           Makefile.am's under lib/ and subdirs.
6760
6761 Thu Jul 12 17:49:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6762
6763         * Do not change the ~/.silc directory's permissions automatically.
6764           Affected file irssi/src/silc/core/clientutil.c.
6765
6766 Thu Jul 12 10:18:40 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6767
6768         * Do not cancel the protocol in silc_server_close_connection
6769           it might cause recursion.  Now cancelled in the function
6770           silc_server_free_sock_user_data.  Affected file silcd/server.c.
6771
6772         * Fixed the silc_server_remove_clients_by_server to regenerate
6773           the channel keys correctly finally.  Added also new function
6774           silc_server_remove_clients_channels to actually do it.
6775           Affected file silcd/server.c.
6776
6777         * Fixed the silc_server_new_channel to not crash by giving
6778           wrong router to the new channel.  Affected file is
6779           silcd/packet_receive.c.
6780
6781 Wed Jul 11 18:31:57 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6782
6783         * Added SilcClientParams structure to the lib/silcclient/silcapi.h
6784           which is given as argument to the silc_client_alloc now.
6785           It can be used to configure the client and set various parameters
6786           that affect the function of the client.
6787
6788         * The USERS command in server did not check whether the channel
6789           is private or secret.  Affected file silcd/command.c.
6790
6791         * Added new argument to the USERS command in protocol specification.
6792           The USERS command now can take the channel name as argument
6793           as well.  Added support for this in client and server and
6794           updated the protocol specs.
6795
6796         * Completed the GETKEY command in client. It can be now used
6797           to fetch also servers public key not only some clients.
6798           Affected files lib/silcclient/command[_reply].c.
6799
6800         * Added silc_client_get_server to return server entry by the
6801           server name.  Affected files lib/silcclient/silcapi.h and
6802           idlist.c.
6803
6804         * Redefined the IDENTIFY command in protocol specification to be
6805           more generic.  It now can be used to query information about
6806           any entity in the SILC Network, including clients, servers and
6807           channels.  The query may be based either the entity's name
6808           or the ID.  Added support for this in both client and server.
6809
6810           Affected files silcd/command.c and lib/silcclient/command.c
6811           and command_reply.c.
6812
6813         * Optimized the WHOIS and WHOWAS commands in the server. Removed
6814           the _from_client and _from_server functions.  Affected file
6815           silcd/command.c.
6816
6817         * Added silc_client_get_channel_by_id_resolve to the file
6818           lib/silcclient/silcapi.h to resolve channel information by
6819           its ID.  Added also silc_client_get_channel_by_id that
6820           does not resolve it from the server.
6821
6822 Tue Jul 10 18:05:38 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6823
6824         * Added SilcServerEntry context into the client library
6825           to represent one server.  The INFO command now allocates
6826           these to save the resolved server info.  For now on the
6827           client library will also keep information about servers,
6828           connected and resolved with INFO.
6829
6830           The INFO command now allocates the SilcServerEntry context
6831           and saves the server info there.  The COMMAND_REPLY in
6832           the INFO now returns the parameters to application in
6833           same order as defined in the protocol specification.
6834
6835           The entries are cached in the client->server_cache.
6836
6837         * The INFO command is now issued after received the Client ID
6838           from the server.  Affected file lib/silcclient/client.c.
6839
6840         * The CMODE_CHANGE notify may now return also an SilcServerEntry
6841           to the application as the mode changer might be server.
6842           It is guaranteed that NULL is not returned anymore to the
6843           application.  Affected file lib/silcclient/client_notify.c.
6844
6845           The ID Type is now also passed to the application so that
6846           it can check whether the returned entry is SilcClientEntry
6847           or SilcServerEntry.
6848
6849           Added new function silc_client_get_server_by_id to return
6850           the server entry by ID.  Affected files are the
6851           lib/silcclient/silcapi.h and lib/silcclient/idlist.c.
6852
6853         * Do not create the channel in the Irssi SILC Client when issuing
6854           the JOIN command but when received the sucessful JOIN command
6855           reply.  Otherwise the channel might get created even though we
6856           could not join it.  The Affected file is
6857           irssi/src/silc/core/[silc-channels.c/client_ops.c].
6858
6859         * Fixed a channel joining bug in router.  The router must also
6860           check the channel modes, invite and ban lists etc. when serving
6861           the JOIN command sent by normal server.  Affected file is
6862           silcd/command.c.  The router now resolves the client's
6863           information from the server who sent the JOIN command if it
6864           does not know it, and processes the JOIN command only after
6865           that.
6866
6867         * Changed the SilcCommandCb to take new argument; void *context2.
6868           Affected file lib/silccore/silccommand.h
6869
6870           The second argument in the command callbacks in the server now
6871           includes the SilcServerCommandReplyContext if the command was
6872           called as pending command callback from the command reply.
6873           Otherwise it is NULL. When called as pending the status of the
6874           command reply will be checked and if it was erronous the
6875           error will be sent to the original sender of the command.
6876           This way the client always receives the error messages even
6877           though the server was actually the one who received the error
6878           when it resent the command to router, for example.  Affected
6879           files silcd/command[_reply].[ch].
6880
6881         * Fixed sending WHOWAS command's error message to client if
6882           the requested client could not be found.  It was missing.
6883           silcd/command.c.
6884
6885         * Changed the CMODE and CUMODE commands reply arguments in the
6886           protocol specification.  The Channel ID is now sent in both
6887           of the commands to identify the channel.  Implemented this
6888           new feature to the client and server.  Affected files
6889           lib/silcclient/command_reply.c and silcd/command.c.
6890
6891         * Made better checks for invite and ban lists in the JOIN
6892           command in server.  Affected file silcd/command.c.
6893
6894 Mon Jul  9 18:28:34 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6895
6896         * The server now performs the incoming host IP/DNS lookup
6897           using the silc_socket_host_lookup and thus does not block
6898           the server anymore.  Affected file silcd/server.c.
6899
6900         * Completed the multi-thread support for SILC Scheduler in
6901           the lib/silcutil/silcschedule.c.
6902
6903         * Fixed the configure.in.pre to detect the pthread correctly
6904           on various systems.
6905
6906         * Fixed a deadlock in silc_task_queue_wakeup in the file
6907           lib/silcutil/silctask.c.
6908
6909 Mon Jul  9 13:40:03 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6910
6911         * Added new function silc_schedule_wakeup that is used in
6912           multi-threaded environment to wakeup the main thread's
6913           schduler. It needs to be used when a thread adds a new task
6914           or removes a task from task queues. After waking up, the
6915           scheduler will detect the task queue changes. If threads
6916           support is not compiled in this function has no effect.
6917           Implemented the wakeup mechanism to both Unix and WIN32
6918           systems.  Affected files are lib/silcutil/silcschedule.[ch],
6919           lib/silcutil/unix/silcunixschedule.c and the
6920           lib/silcutil/win32/silcwin32schedule.c.
6921
6922         * Added new function silc_task_queue_wakeup to wakeup the
6923           scheduler by the specified task queue.  Affected file
6924           lib/silcutil/silctask.[ch].
6925
6926         * The silc_socket_host_lookup_start now wakes up the scheduler
6927           after adding the timeout task.  Affected file is
6928           lib/silcutil/silcsockconn.c.
6929
6930         * The silc_socket_host_lookup is synchronous now if the threads
6931           support is not compiled in.  However, the callback is still
6932           called asyncronously through the scheduler, anyway.  Affected
6933           file lib/silcutil/silcsockconn.c.
6934
6935 Mon Jul  9 00:24:45 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6936
6937         * Added new function silc_socket_host_lookup to perform
6938           asynchronous IP and FQDN lookups for the socket connection.
6939           Affected files lib/silcutil/silcsockconn.[ch].
6940
6941 Sun Jul  8 18:44:53 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6942
6943         * Added SILC_MUTEX_DEFINE to define the mutex on environments
6944           that may or may not compile the mutex support in.
6945
6946           Changed the silc_mutex_alloc interface. It allocates the
6947           mutex now to the sent pointer and returns TRUE or FALSE.
6948
6949           Affected file lib/silcutil/silcmutex.h.
6950
6951         * Wrote the SILC Task Queue interface to support multi-threads.
6952           Affected file lib/silcutil/silctask.[ch].
6953
6954         * Wrote the SILC Scheduler to support multi-threads.  Affected
6955           file lib/silcutil/silcschedule.c.
6956
6957 Sun Jul  8 11:16:01 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6958
6959         * Implemented the SILC Mutex API and SILC Thread API for WIN32
6960           in lib/silcutil/win32/.
6961
6962 Sun Jul  8 00:18:15 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6963
6964         * Defined SILC Mutex API and SILC Thread API and implemented
6965           them for Unix.  Affected files are
6966           lib/silcutil/silcmutex.h, lib/silcutil/silcthread.h,
6967           lib/silcutil/unix/silcunixmutex.c and
6968           lib/silcutil/unix/silcunixthread.c.
6969
6970 Sat Jul  7 14:40:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6971
6972         * Fixed the silc_server_remove_clients_by_server's channel
6973           key re-generation.  The hash table handling was incorrect
6974           and would not work with many channels.  Affected file is
6975           silcd/server.c.
6976
6977         * Fixed some memory leaks around the server code.
6978
6979         * Rewrote the silc_server_get_users_on_channel to support IPv6
6980           based Client ID's.  Affected file silcd/server.c.
6981
6982         * Defined the SILC_MESSAGE_FLAG_SIGNED to the protocol
6983           specification.  However, a separate document must be written
6984           to define the detailed signing procedure and the payload
6985           associated with the flag.  Defined the flag to the
6986           lib/silccore/silcchannel.h as well.
6987
6988 Fri Jul  6 18:26:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6989
6990         * Changed the dynamic tables to static size tables in the
6991           lib/silccrypt/silchmac.c.
6992
6993         * Removed GCC dependencies from the code.  A patch by cras.
6994
6995 Fri Jul  6 09:39:35 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6996
6997         * Do not show the error "Error receiving packet bla bla"
6998           in server if it really was not an error (-2 means that reading
6999           is pending).  Affected file silcd/server.c.
7000
7001 Thu Jul  5 21:22:32 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7002
7003         * Fixed a possible crash in silc_server_remove_clients_by_server
7004           in silcd/server.c.  Fixed there also some memory leaks.
7005
7006         * Fixed the silc_idlist_replace_client_id.  It could replace
7007           wrong key in the hash table.  Affected file silcd/idlist.c.
7008
7009         * Do not check whether there are global users on the channel
7010           if the channel->global_users is FALSE.  Affected functions
7011           silc_server_remove_from_one_channel and
7012           silc_server_remove_from_channels in silcd/server.c.  Also,
7013           do not check if the removed client is local as we can be
7014           sure that global client was not removed from the channel
7015           and checking for global users is not needed.
7016
7017         * The silc_server_remove_clients_by_server now re-generates
7018           the channel keys correctly for those channels that had
7019           clients removed from them.  Affected file silcd/server.c.
7020
7021 Tue Jul  3 11:39:20 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7022
7023         * Found the reason of random crashes in the server.  We weren't
7024           ignoring the SIGPIPE signal (which can be sent in write())
7025           and it crashed the server.  Affected file silcd/silcd.c.
7026
7027 Fri Jun 29 20:05:25 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7028
7029         * Assure that sock->user_data is not NULL in the function
7030           silc_server_packet_send in silcd/packet_send.c.
7031
7032         * Disconnect the remote connection if it could not be added
7033           to any ID lists in the server.  The affected file is
7034           silcd/server.c.
7035
7036         * Check in silc_server_packet_send[_real/dest] that the
7037           socket is not disconnecting and ignore the data if it is.
7038           Affected file silcd/packet_send.c.
7039
7040         * Define inline to __inline on native WIN32 compilation.
7041           Affected file includes/silcwin32.h.
7042
7043         * Added some explicit type casts for inline code since MSVC
7044           require them.  Affected files lib/silcutil/silcbuffer.h,
7045           lib/trq/silcdlist.h and lib/trq/silclist.h.
7046
7047         * Print warning in log files from now on if the packet
7048           decryption fails.  Affected file silcd/server.c.
7049
7050 Thu Jun 28 21:30:39 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7051
7052         * Changed the `say' client operation's interface to accept
7053           new `type' argument to indicate the type of the message sent
7054           by the library.  The application may filter the library's
7055           messages according the type.  The affected file is the
7056           lib/silcclient/silcapi.h.
7057
7058         * Added two new functions to lib/silcclient/silcapi.h:
7059           silc_client_del_client and silc_client_del_client_by_id.
7060           Affected file lib/silcclient/idlist.c.
7061
7062         * Moved the clientincludes.h from includes/ to silc/ and
7063           serverincludes.h from includes/ to silcd/.
7064
7065         * The modes for the CMODE and CUMODE are now passed as
7066           uint32 for application with COMMAND_REPLY.  The affected
7067           file is lib/silcclient/command_reply.c.
7068
7069 Wed Jun 27 22:24:47 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7070
7071         * /WHOIS without arguments shows client's own information.
7072           Affected file lib/silcclient/command.c.
7073
7074         * Changed PING to not accept any arguments.  The specs
7075           says that client can ping only the connected server so
7076           requiring an argument is not needed.  Affected file is
7077           lib/silcclient/command.c.
7078
7079 Wed Jun 27 00:10:33 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7080
7081         * Fixed a fatal bug in private message sending and reception
7082           encryption and decryption when using private message keys.
7083           The implementation was incorrect and did not follow the
7084           specification.  It causd that some of the message were
7085           lost since it did not use the sending and receiving keys
7086           as the protocol suggests.  This has been fixed and will cause
7087           incompatibilities with older clients when sending private
7088           message encrypted with private message keys.  Affected files
7089           lib/silcclient/client_prvmsg.c, lib/silcclient/client_keyagr.c
7090           and various other in Irssi SILC Client.
7091
7092           Added `responder' boolean argument to the functions
7093           silc_client_add_private_message_key[_ske] to indicate when
7094           the key is added as responder or initiator of the key
7095           negotiation.
7096
7097 Tue Jun 26 19:23:07 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7098
7099         * Removed the silc_ske_check_version function and created
7100           a SilcSKECheckVersion callback.  Added also a function
7101           silc_ske_set_callbacks that is now used to set all SKE
7102           callbacks.  The callback functions are not given to
7103           the SKE functions anymore, but this function is used to
7104           set the callbacks.
7105
7106         * Fixed the WIN32 DLL generation in lib/Makefile.am.pre.
7107
7108         * Added `silc_version' argument to the silc_client_alloc
7109           to define the version of the application for the library.
7110           The library will use the version string to compare it
7111           against the remote host's (usually a server) version
7112           string.  Affected file lib/silcclient/silcapi.h
7113
7114         * Added the KE protocol context to Key Agreement context
7115           in client library so that we can abort the SKE if it
7116           is in process when we get timeout.  Affected file is
7117           lib/silcclient/client_keyagr.c.
7118
7119         * Do not resolve the client ID forever if it returns in the
7120           first time that such client does not exist.  This was done
7121           for example with private message.  Affected file is
7122           lib/silcclient/client_prvmsg.c.
7123
7124 Mon Jun 25 21:42:51 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7125
7126         * Do not add regex.h for WIN32.  The affected file
7127           includes/silcincludes.h.
7128
7129         * Added WIN32 DLL generation to lib/Makefile.am.pre.  It might
7130           not work yet 100%.  It generates the DLL's automatically
7131           when compiling with --with-win32 under cygwin.
7132
7133 Sun Jun 24 19:49:23 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7134
7135         * lib/contrib/regex.c is not compiled on WIN32.
7136
7137         * Added silc_net_get_socket_opt function to the
7138           lib/silcutil/silcnet.h.
7139
7140         * Added includes/silcwin32.h for WIN32 specific includes
7141           and definitions.
7142
7143         * Do not use ptime structure or any of the posix process
7144           functions on WIN32 in lib/silccrypt/silrng.c.
7145
7146         * Added silc_gettimeofday to provide generic function
7147           for struct timeval on all platforms.  Added the function
7148           to lib/silcutil/silcutil.h.
7149
7150 Sun Jun 24 12:19:52 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7151
7152         * Moved the lib/silccore/silcsockconn.[ch] to the utility
7153           library as they clearly belong there.  As a plus side we
7154           can make the actual socket connection routines platform
7155           specific.
7156
7157           Added also new generic function silc_socket_read and
7158           silc_socket_write (that used to be silc_packet_[read/write].
7159           The implementation of these are platform specific.
7160
7161         * Added WIN32 specific routines of silc_socket_[read/write]
7162           to lib/silcutil/win32/silcwin32sockconn.c.
7163
7164 Sat Jun 23 16:01:00 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7165
7166         * Added preliminary support for native WIN32 compilation under
7167           cygwin (using the -mno-cygwin option for GCC) to the
7168           ./configure.in.pre.  The --with-win32 now prepares the
7169           compilation for native WIN32.
7170
7171         * Rewrote the SILC Scheduler interface in the file
7172           lib/silcutil/silcschedule.h.  The scheduler is now context
7173           based and does not have anymore any global static scheduler.
7174           Moved the Unix scheduler to the lib/silcutil/unix/ directory
7175           and created lib/silcutil/win32 directory for WIN32 based
7176           scheduler.
7177
7178         * Added Unix specific network routines to the
7179           lib/silcutil/unix/silcunixnet.c and the old
7180           lib/silcutil/silcnet.c includes now only generic routines.
7181
7182           Added WIN32 specific network routines to the
7183           lib/silcutil/win32/silcwin32net.c.
7184
7185         * Added Unix specific utility functions from the
7186           lib/silcutil/silcutil.c to lib/silcutil/unix/silcunixutil.c.
7187
7188         * Added WIN32 SILC Scheduler to the file
7189           lib/silcutil/win32/silcwin32schedule.c. The code is of course
7190           untested.
7191
7192 Fri Jun 22 10:44:14 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7193
7194         * Do not handle JOIN notify in the server if the target client
7195           is not registered (idata->registered == FALSE).  The affected
7196           file is silcd/packet_receive.c.
7197
7198         * Update the nickrec->founder in event_cumode in the Irssi SILC
7199           client.  Affected file irssi/src/silc/core/silc-channels.c.
7200
7201         * Fixed the CUMODE_CHANGE notify handling in the server when
7202           server and router are announcing their clients on channels.
7203           Now the mode changes are saved and notified correctly.  The
7204           affected file is /silcd/packet_receive.c.
7205
7206         * Fixed silc_idlit_replace_[server/client/channel]_id functions.
7207           They really did not replace the cache entry in the ID Cache.
7208           Now they do that.  Affected file silcd/idlist.c.
7209
7210         * Fixed the KICK notify handling in the Irssi SILC client to
7211           update the channel records so that the kicked client does not
7212           appear to be on the channel.  The affected file is
7213           irssi/src/silc/core/silc-channels.c.
7214
7215         * Always update the conn->current_channel when executing command
7216           on a channel.  Affected file irssi/src/silc/core/silc-servers.c.
7217
7218         * Fixed the KILL notify handling in Irssi SILC client to remove
7219           the killed client on all channels.
7220
7221 Thu Jun 21 17:10:08 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7222
7223         * Fixed the silc_parse_command_line to remove extra spaces
7224           from the start and end of the arguments.  Affected file is
7225           lib/silcutil/silcutil.c.
7226
7227         * Cancel and free any active protocol in the function
7228           silc_server_close_connection.  Affected file silcd/server.c.
7229
7230         * Cancel and free any active protocol in the function
7231           silc_client_close_connction.  Affected file is
7232           lib/silcclient/client.c.
7233
7234         * Do not execute the KILL command for clients that are in
7235           history (ie. they are not in the network).  Affected file is
7236           silcd/command.c.
7237
7238         * Fixed KILL notify handling, client does not crash anymore.
7239           Affected file irssi/src/silc/core/silc-channels.c.
7240
7241         * Reduced the default packet buffer size from 2048 to 1024 in
7242           lib/silccore/silcpacket.c.
7243
7244         * Added SILC_SKE_STATUS_FREED SKE status type and a reference
7245           counter to the SKE context that is incresed when the SKE library
7246           performs async operation outside the library.  If the outside
7247           process frees the SKE context and FREED status will be set
7248           and the library will detect after the sync operation that the
7249           libary is freed.  The affected files are
7250           lib/silcske/silcske[_status].[ch].
7251
7252         * Resolve the client entry information in the function
7253           silc_client_channel_message to assure that NULL pointer is not
7254           passed as client entry to the application. */
7255
7256         * Fixed the task timeout calculation to assure that there is
7257           never negative timeouts.  The affected file is
7258           lib/silcutil/silcschedule.c.
7259
7260         * Fixed the channel user mode notification sending in server.
7261           It was sent point-to-point to the router (or to server by router)
7262           but it needs to be destined to a channel.  The routines now
7263           supports sending the channel user mode notifys to the channels
7264           when announcing clients and channels.  Affected files are
7265           silcd/server.c and silcd/packet_receive.c.
7266
7267         * Fixed the CHANNEL_CHANGE notify handling in the client libary.
7268           It did not actually replace the old channel entry in the cache.
7269           Affected file lib/silcclient/client_notify.c.
7270
7271 Tue Jun 19 22:10:36 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7272
7273         * Fixed a possible crash in silc_packet_send_prepare.  It now
7274           assures always that there is enough space in the buffer and
7275           at the tail area of the buffer (for MAC).
7276
7277           Fixed the inbound buffer reallocation in silc_packet_read.
7278           It was old code and did not handle the reallocation correctly.
7279           Affected
7280
7281           The affected file is lib/silccore/silcpacket.c.
7282
7283         * Fixed buffer overflow in silc_parse_nickname in the file
7284           lib/silcutil/silcutil.c.
7285
7286 Tue Jun 19 13:40:09 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7287
7288         * make install generates new server keys only if there is not
7289           keys already.
7290
7291 Mon Jun 18 18:49:07 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7292
7293         * Set SILC_MESSAGE_FLAG_NOREPLY when sending the away message.
7294           Added check that if the NOREPLY is set then we will not send
7295           the away message.  This avoids infinite loop of away messages
7296           if both clients are away.  The affected file is
7297           lib/silcclient/client_prvmsg.c.
7298
7299         * Fixed client crash if /NICK was given without arguments.
7300           Affected file lib/silcclient/command.c.
7301
7302         * Server does not send the invite list in INVITE command back
7303           to the client if the list was not altered.  Added this notion
7304           to the protocol spec as well.  Affected file silcd/command.c.
7305
7306           Fixed possible crash in INVITE command by checking the
7307           value of silc_server_get_client_route command.
7308
7309         * Fixed the INVITE notify type handling.  The arguments are now
7310           taken in correct order and client does not crash.  The affected
7311           file is irssi/src/silc/core/silc-channels.c.
7312
7313           Removed the "Inviting xxx to channel" message from the
7314           client library away and let the application handle it.
7315           Affected file lib/silcclient/command.c.  Added that message
7316           to Irssi SILC client's message formats.
7317
7318         * Fixed CMODE command crash in client.  It now checks the
7319           amount of arguments correctly and does not crash.  The affected
7320           file is lib/silcclient/command.c.
7321
7322         * Do not create new channel automatically in silc_channels_join
7323           but check whether the channel by that name already exists.
7324           Affected file irssi/silc/core/silc-channels.c.
7325
7326         * Do not send the SERVER_SIGNOFF to router if the disconnected
7327           entity was the router.  Affected file silcd/server.c.
7328
7329         * Added the handling of the SERVER_SIGNOFF notify to the Irssi
7330           SILC client as it was missing from there.
7331
7332           Added the handling of the KICK notify to the Irssi SILC client
7333           as it was missing.  Added "you have been kicked" message to
7334           Irssi SILC client's message modules formats.
7335
7336           Added the handing of the KILL notify to the Irssi SILC client
7337           as it was missing.  Added the kill message module formats
7338           as well.
7339
7340           The affected file is irssi/src/silc/core/silc-channels.c.
7341
7342         * The router did not save the channel mode the server announced.
7343           Affected file silcd/packet_receive.c.
7344
7345         * Fixed a possible crash in INFO command in server.  If the
7346           server did not provide the server info it crashed.  Affected
7347           file silcd/command.c.
7348
7349 Sun Jun 17 15:26:05 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7350
7351         * Fixed the GETKEY command in the server to check also the
7352           global list.  Otherwise the GETKEY would not work correctly
7353           in normal SILC server.  Affected file silcd/command.c.
7354
7355 Sat Jun 16 18:00:00 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7356
7357         * Fixed GETKEY crash, it crashed if the command did not succseed.
7358
7359 Tue Jun 12 21:36:18 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7360
7361         * Redefined the SILC MP API in lib/silcmath/silcmp.h. The API
7362           is now real and not just an macro interface to GMP.
7363
7364           Removed the entire GMP from the source tree and imported new
7365           NSS MPI library instead.  Reason for removing GMP is that it is
7366           extremely large and compiles extremely slow.  The NSS MPI
7367           is only a few files and compiles in less than 10 seconds.
7368           The speed is also about the same as GMP.  The MPI is imported
7369           to lib/silcmath/mpi.
7370
7371           If the system has GMP installed we will still use the GMP.
7372           If it is not then the NSS MPI will be compiled.
7373
7374 Mon Jun 11 18:07:24 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7375
7376         * Merged a long nickname (127 characters long) crash bugfix from
7377           Irssi CVS tree.  Affected file irssi/src/core/misc.c.
7378
7379         * Merged a freed memory reference bugfix from Irssi CVS tree.
7380           Affected file irssi/src/core/commands.c.
7381
7382 Sun Jun 10 16:08:35 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7383
7384         * Added the server's public key sving and verification to the
7385           server when performing the SKE.  This was missing and the
7386           remote server's (or router's) public key was accepted without
7387           checking whether we have it previously or trust it at all.
7388           Affected file silcd/protocol.c.
7389
7390 Sat Jun  9 20:17:30 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7391
7392         * Check in the silc_server_timeout_remote if protocol is active
7393           and make sure that the protocol's final callback is called so
7394           that all memory if freed.  Affected file silcd/server.c.
7395
7396 Sat Jun  9 12:51:27 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7397
7398         * silc_server_whois_send_reply crashed the server if the nickname
7399           was 127 characters long.  Affected file silcd/command.c.
7400
7401 Thu Jun  7 16:29:56 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7402
7403         * Added sanity check to the silc_server_new_client. If the hostname
7404           is provided inside username then check that the provided hostname
7405           really is the same as the resolved one.  If the hostname was not
7406           resolved then check it from the public key.  Affected file is
7407           silcd/packet_receive.c.
7408
7409         * Fixed a fatal bug in Irssi SILC client. Do not send QUIT command
7410           if the server disconnected us and the connection is not valid
7411           anymore.  Affected file irssi/src/silc/core/silc-channels.c.
7412
7413         * Moved the silc_client_[chmode|chumode|chumode_char] away from
7414           the library to the lib/silcutil/silcutil.[ch].
7415
7416 Thu Jun  7 08:57:16 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7417
7418         * Close log file after open.  Affected file
7419           lib/silcutil/silclog.c.
7420
7421         * Check whether sock == NULL in silc_client_send_packet and return
7422           if it is.  Affected file lib/silcclient/silcclient.c.
7423
7424         * Check rec->entry == NULL in the Irssi SILC Client before
7425           sending the channel message.  Affecte file is
7426           irssi/src/silc/core/silc-servers.c.
7427
7428 Tue Jun  5 08:08:21 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7429
7430         * Merged a splitted window bugfix from Irssi CVS tree.  The
7431           affected file is irssi/src/fe-text/textbuffer-view.c.
7432
7433         * Fixed the ME, ACTION and NOTICE printing in Irssi Client.
7434           It did not print nickname.
7435
7436         * Improved the distributions system a bit.
7437
7438 Mon Jun  4 17:57:16 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7439
7440         * Merged /WINDOW bugfix from irssi CVS tree. Affected file is
7441           irssi/src/fe-text/gui-window.c.
7442
7443         * Fixed a fatal bug in Irssi SILC client. Crashed if sent message
7444           to in-active server.  The affected file is
7445           irssi/src/silc/core/client_ops.c.
7446
7447         * Resolve the client in USERS command reply if the entry does
7448           not have username resolved.  The affected file is
7449           lib/silcclient/command_reply.c.  Also, changed the IDENTIFY
7450           command to WHOIS command to really resolve stuff.  The USERS
7451           is not used any more in any critical section so WHOIS can
7452           be used even though it might be slower than IDENTIFY.
7453
7454         * Changed the lib/silcutil/silchashtable.h header to ROBODoc
7455           format.
7456
7457 Sun Jun  3 14:21:32 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7458
7459         * Changed the protocol API a bit more consistent in the
7460           lib/silccore/silcprotocol.[ch].
7461
7462         * Changed the following headers to ROBODoc format:
7463
7464                 lib/silccore/silcpayload.h
7465                 lib/silccore/silcprotocol.h
7466                 lib/silccore/silcsockconn.h
7467
7468           All core library headers are now formatted.
7469
7470 Sat Jun  2 10:45:09 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7471
7472         * Fixed a bug in Irssi SILC client; do not show that you are
7473           server/router operator if you really are not.  Affected file is
7474           irssi/src/silc/core/client_ops.c.
7475
7476         * Renamed silc_command_free_payload to silc_command_payload_free.
7477           Affected file lib/silccore/silccommand.h
7478
7479         * Added silcmath.h to include the prototoypes of various routines
7480           in the lib/silcmath.  Removed the old modinv.h, mpbin.h and
7481           silcprimegen.h.
7482
7483         * Changed the following headers to ROBODoc format:
7484
7485                 lib/silccore/silcchannel.h
7486                 lib/silccore/silccommand.h
7487                 lib/silccore/silcid.h
7488                 lib/silccore/silcidcache.h
7489                 lib/silccore/silcmode.h
7490                 lib/silccore/silcnotify.h
7491                 lib/silccore/silcpacket.h
7492                 lib/silcmath/silcmath.h
7493
7494 Fri Jun  1 22:19:37 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7495
7496         * Added checking to the server code not to start the server if
7497           ciphers and stuff are not configured properly.  Affected files
7498           silcd/serverconfig.[h] and silcd/server.c.
7499
7500         * Changed the layout of the header files of the public interfaces
7501           in the SILC libraries.  The new layout supports ROBODoc
7502           documentation tool (and some others) so that it is easy to create
7503           a library reference manual.  All the other headers and source
7504           code must still follow the CodingStyle document.  Also source
7505           code must not include these ROBODoc stuffs, only the headers.
7506           Furthermore, all public interface headers must now be named
7507           by using `silc' prefix, example: silcapi.h, silccipher.h.
7508           Some files were renamed due to this.  All the other headers
7509           must not be used as public interfaces.  I will update the
7510           CodingStyle document later.  Changed following headers, so far:
7511
7512                 lib/silcclient/silcapi.h
7513                 lib/silccore/silcauth.h
7514                 lib/silccore/silcprivate.h
7515                 lib/silccrypt/silcdh.h
7516
7517 Fri Jun  1 10:28:09 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7518
7519         * Updated TODO.
7520
7521         * Removed silc_client_packet_send_flush from the client library
7522           as it is not needed.  Affected file lib/silcclient/client.[ch].
7523
7524         * Added printing of message of unresolved authentication method
7525           to the Irssi SILC client.  Added it to the module formats.
7526           Removed the same message from the client library.
7527
7528 Thu May 31 13:57:33 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7529
7530         * Added new distribution feature, DISTLABEL.  Every distribution
7531           can define own preprocessor label that can be used in the
7532           source code.  For example: #ifdef SILC_DIST_CLIENT.  Affected
7533           file distributions, acconfig.h.pre and prepare.
7534
7535 Tue May 29 22:16:40 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7536
7537         * Added Makefile.defines_int to include the actual definitions
7538           for Makefile.defines.in.  Tested the new distribution system,
7539           created distributions and tested installation.
7540
7541         * Added AWAY message printing to the Irssi SILC client.  Added
7542           the messages to the irssi/src/fe-common/silc/module-formats.[ch].
7543
7544         * Added SCONNECT command to call the SILC's CONNECT command.
7545           Cannot use CONNECT directly since Irssi uses that internally.
7546           Affected file irssi/src/silc/core/silc-servers.c.
7547
7548           Added ACTION local command.  It is same as ME command but takes
7549           the channel as mandatory argument.
7550
7551           Rewrote some of the Irssi's help files to suite for SILC
7552           protocol.
7553
7554 Mon May 28 19:05:22 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7555
7556         * Added Makefile.defines[.in] that should for now on be included
7557           in all Makefile.am file in the source tree.  That file includes
7558           all common compilation definitions for SILC source tree.
7559
7560 Mon May 28 10:30:51 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7561
7562         * Minor changes to the ./prepare script to change the package
7563           name according the distribution name to the configure.in.
7564
7565 Sun May 27 22:24:57 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7566
7567         * Created new distribution system.  Added file `distributions'
7568           that defines all the distributions that can be created out of
7569           the SILC source tree.  The ./prepare script now reads that
7570           file to determine how to prepare the distributions.  The
7571           first argument to the ./prepare is the name of the distribution
7572           and second is the version of the distribution.  If given
7573           without arguments it creates the default (toolkit) distribution
7574           with the default version (defined in ./prepare).
7575
7576           All Makefile.am files that are subject to the distributions
7577           are now named as Makefile.am.pre.  These are ./Makefile.am
7578           and lib/Makefile.am.  Others may be changed later.
7579
7580 Sun May 27 15:57:17 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7581
7582         * Added invite list, ban list, some key management and connection
7583           error message printing to module formats in the Irssi SILC client.
7584
7585         * Added new silc_client_set_away_message to set the away message
7586           that is back to the person who sent private message.  The
7587           affected file lib/silcclient/silcapi.h and the
7588           lib/silcclient/client_prvmsg.c.
7589
7590 Sun May 27 12:39:48 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7591
7592         * Fixed the private message sending in the Irssi SILC client,
7593           added local command KEY to the Irssi SILC client.
7594
7595           Added key management and key agreement message formats to the
7596           irssi/src/fe-common/silc/module-formats.[ch].
7597
7598           Added USERS (alias WHO) printing, server/router operator
7599           indication and LIST command printing to the module formats.
7600
7601 Sat May 26 17:43:42 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7602
7603         * Fixed channel joining notify handling, cumode notify handling
7604           from Irssi SILC client.
7605
7606         * Added SILC specific module-formats to the Irssi SILC client so
7607           that SILC specific message hilighting, colors etc is possible.
7608           Affected file irssi/src/fe-common/silc/module-formats.[ch].
7609
7610           Added channel mode, channel user mode, actions, notices,
7611           whois and whowas printing to the the module-formats.c.
7612
7613         * Fixed a bug in channel deletion in the server.  The channel
7614           is not left to the cache even if the channel founder auth mode
7615           is set when there are no users anymore on the channel.  Affected
7616           file silcd/server.c.
7617
7618         * The silc_net_localhost now resolves the entire hostname including
7619           the domain name.  Affected file lib/silcutil/silcnet.c.
7620
7621 Sat May 26 12:13:37 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7622
7623         * Changed the ask_passphrase client operation to be ascynchronous.
7624           It has now a completion callback and a context that the
7625           application must call after it has got the passphrase from
7626           the user.  Affected files lib/silcclient/silcapi.h,
7627           lib/silcclient/protocol.c, lib/silcclient/command.c and
7628           silc/client_ops.c.
7629
7630           Added SilcAskPassphrase callback that the application calls
7631           to deliver the passphrase to the library.
7632
7633         * Changed the SKE protocol's SilcSKEVerifyCb to be asynchronous.
7634           The public key verification and especially a certificate
7635           verification is asynchronous procedure.
7636
7637           Added new SILC_SKE_STATUS_PENDING status to indicate the
7638           request is pending and a callback will be called to finalize
7639           the request.
7640
7641           Added also SILC_SKE_STATUS_PUBLIC_KEY_NOT_PROVIDED status to
7642           indicate that remote end did not send its public key (or
7643           certificate), even though we require it.  Added check for this
7644           condition in the SKE.  This was a security bug, now fixed.
7645
7646           Defined new SilcSKEVerifyCbCompletion callback that is called
7647           when the verification process is completed.
7648
7649           The affected files lib/silcske/silcske_status.h and
7650           lib/silcske/silcske.[ch].
7651
7652         * Changed the verify_public_key client operation to be async
7653           as well.  Defined SilcVerifyPublicKey callback that is used to
7654           indicate the success of the public key verification process.
7655
7656           Changed the server and client to use the new async client
7657           operations.
7658
7659         * Changed the Irssi SILC client's internal scheduler to be called
7660           twice as many times as it used to be.  As a result the client
7661           should be a bit faster now.  Affected file is
7662           irssi/src/silc/core/silc-core.c.
7663
7664         * Added support to Irssi SILC client of asynchronous public key
7665           verification and passphrase inquiry.  Affected file is
7666           irssi/src/silc/core/silc-core.c.
7667
7668 Fri May 25 14:38:38 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7669
7670         * Do not say "You have left channel %s" in client library.
7671           Moved it to the application.  Affected files are
7672           lib/silcclient/command.c and silc/client_ops.c.
7673
7674         * Fixed silc_client_get_clients.  Command context was not
7675           duplicated and was freed memory in the callback.  Affected
7676           file lib/silcclient/idlist.c.
7677
7678         * Do not say "you are now talking..." on JOIN command in the
7679           client library.  The appliation must handle it.
7680
7681         * Do not say ".. changed topic to" in command reply in the
7682           client libary.  The application must handle it.
7683
7684         * Fixed TOPIC command sending in the client library.
7685
7686         * Fixed a memory leak in silc_client_command_free in the file
7687           lib/silcclient/command.c.
7688
7689 Thu May 24 19:08:55 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7690
7691         * Imported a modified version of Irssi client to the source tree.
7692           The Irssi will be used to create a new client called
7693           Irssi SILC.  Imported to irssi/.
7694
7695           Added silc_core_init_finish function to the Irssi.  Affected
7696           file irssi/configure.in.
7697
7698           A lot changes in the Makefile.ams around the irssi tree.
7699
7700 Tue May 22 22:23:49 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7701
7702         * Do not rehash if the new size is same as the old size of the
7703           hash table, in the silc_hash_table_rehash*.  The affected file
7704           lib/silcutil/silchashtable.c.
7705
7706         * Replaced hash_table_del_by_context calls from the server
7707           (when channel->user_list and client->channels) to the
7708           hash_table_del as it is sufficient and faster.
7709
7710 Tue May 22 17:27:16 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7711
7712         * Added silc_hash_table_list, silc_hash_table_get and the
7713           SilcHashTableList structure to provide an alternative way to
7714           traverse the hash table.  The affected files are
7715           lib/silcutil/silchashtable.[ch].
7716
7717         * Changed the server's idlist routines to use the hash table
7718           routines to optimize the code.
7719
7720 Mon May 21 21:46:20 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7721
7722         * Replaced the client entry's `channel' list and channel entry's
7723           `user_list' list to hash tables for optimized lookup.  Changed
7724           the code to use the hash table interface around the code.
7725           Affected file lib/silcd/idlist.[ch].
7726
7727         * Added `auto_rehash' boolean argument to the function
7728           silc_hash_table_alloc to indicate whether the hash table should
7729           auto-rehash when it thinks is appropriate time.  It will
7730           increase the hash table size if the there is twice as much
7731           entries in the table than the size of the table, and will
7732           decrease the size if there are twice as less entries than
7733           the size of the table.
7734
7735 Mon May 21 09:51:11 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7736
7737         * Fixed silc_xxx_get_supported to not crash at some circumstances.
7738
7739 Sun May 20 13:45:58 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7740
7741         * silc_idcache_purge_by_context deletes the entry now by context
7742           as it is supposed to do.  Affected file lib/silccore/idcache.c.
7743
7744         * Send the ERR_NO_SUCH_NICK in the WHOIS command reply if the
7745           client is not anymore valid (WHOWAS givens the info) and not
7746           the ERR_NO_SUCH_CLIENT_ID if the nickname still exists.
7747
7748 Sat May 19 16:30:03 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7749
7750         * Removed the `data' and `data_len' arguments from the ID Cache
7751           interfaces and added `name' argument.  ID Cache does not handle
7752           anymore the binary data only a names associated with given ID.
7753
7754         * When hashing a Client ID with silc_hash_id the entire ID is
7755           not hashed anymore, instead only the hash of the Client ID is
7756           hashed.  This way we can access the Client ID from the cache
7757           with Client ID but with the hash of the ID (which is a hash of
7758           the nickname) as well without any difference in performance.
7759
7760           Added also silc_idcache_find_by_id_one_ext to do one on one
7761           searching when we have the actual ID.  Added also function
7762           silc_hash_client_id_compare.  The affected files are
7763           lib/silccore/idcache.[ch] and lib/silcutil/silcutil.[ch].
7764
7765         * When hashing the name associated with a ID it is always done
7766           in lowercase.  This way we can access the cache without worrying
7767           about case-sensitivity, even though, for example nicknames are
7768           case sensitive.
7769
7770         * Fixed a bug in server with channel message sending.  It put
7771           wrong ID type as destination ID.  The affected file
7772           silcd/packet_send.c.
7773
7774         * silc_idcache_del_by_context now deletes from all hash tables
7775           by context.  Affected file lib/silccore/idcache.c.
7776
7777 Fri May 18 17:42:00 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7778
7779         * Changed the client library to use the new ID Cache interface.
7780           Changes around the source tree.
7781
7782         * Added silc_hash_table_rehash_ext to rehash with specific
7783           hash function.  Affected file lib/silcutil/silchashtable.[ch].
7784
7785         * Added silc_hash_string_compare to compare two strings in the
7786           hash table.  Affected file lib/silcutil/silcutil.[ch].
7787
7788 Fri May 18 11:18:45 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7789
7790         * Added new function silc_idcache_del_by_context into the
7791           lib/silccore/idcache.[ch].
7792
7793         * Changed the server's ID list routines to use the new ID Cache
7794           interface.  Changes around the source tree.
7795
7796 Fri May 18 08:35:31 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7797
7798         * Added silc_hash_table_del[_by_context]_ext functions in to the
7799           lib/silcutil/silchashtable.[ch].
7800
7801           Removed silc_hash_table_find_all* routines and added new
7802           silc_hash_table_find_foreach to replace them.
7803
7804           Added silc_hash_table_replace_ext function as extended
7805           replacing function.  Separated the simple hash table interface
7806           from the extended hash table interface in the file
7807           lib/silcutil/silchashtable.h.
7808
7809         * Fixed minor bugs and changed it to use some of the new
7810           hash table functions in lib/silccore/idcache.c
7811
7812 Thu May 17 18:15:12 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7813
7814         * Added new function silc_hash_table_find_all to return all keys
7815           in the hash table by the specified key.  As the hash table is
7816           collision resistant it also makes it possible to have several
7817           duplicate keys in the hash table.  This function may be used to
7818           find all of the keys from the hash.
7819
7820           Added user_context arguments to the SilcHashFunction,
7821           SilcHashCompare and SilcHashDestructor to deliver user specified
7822           context.
7823
7824           Added new fuctions silc_hash_table_find[_all]_ext to do
7825           extended lookup with specified hash and compare functions and
7826           specified user contexts.
7827
7828           Added new function silc_hash_table_add_ext to add the key
7829           with specified hash function and user context.
7830
7831           Added new function silc_hash_table_foreach to traverse all
7832           entrys in the hash table.  Added SilcHashForeach callback
7833           function.
7834
7835           Added new function silc_hash_table_del_by_context to delete
7836           the entry only if the context associated with the key matches.
7837
7838           Affected files are lib/silcutil/silchashtable.[ch].
7839
7840         * Removed silc_hash_[server/client/channel]_id and added just
7841           silc_hash_id to the lib/silcutil/silcutil.[ch].  Added also
7842           silc_hash_id_compare to compare two ID's using as the hash table
7843           comparison function.  Added also silc_hash_data to hash
7844           binary data and silc_hash_data_compare to compare it.
7845
7846         * Removed silc_idlist_find_client_by_hash as it is not needed
7847           anymore.  Affected file silcd/idlist.[ch].
7848
7849         * Rewrote the entire ID Cache system (in lib/silccore/idcache.[ch])
7850           to use internally the SilcHashTable.  The new ID Cache is a lot
7851           faster than the old one.  Some of the ID Cache interface was also
7852           rewritten and obsolete and stupid functions were removed.
7853
7854 Wed May 16 23:03:30 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7855
7856         * Added entry_count field to the SilcHashTable to keep the number
7857           of the entries in the table.  Implemented the function
7858           silc_hash_table_rehash.  Added new function
7859           silc_hash_table_count.  Affected file lib/silcutil/silchashtable.c.
7860
7861           Fixed a minor bug in silc_hash_table_free.
7862
7863         * Added silc_hash_string, silc_hash_uint, silc_hash_ptr,
7864           silc_hash_client_id, silc_hash_server_id and silc_hash_channel_id
7865           into the lib/silcutil/silcutil.[ch].
7866
7867 Wed May 16 20:02:47 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7868
7869         * Implemented a collision resistant hash table into the
7870           lib/silcutil/silchashtable[ch].  See the header and the source
7871           for the SilcHashTable API.
7872
7873 Tue May 15 22:05:46 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7874
7875         * Merged dotconf version 1.0.2 into lib/dotconf.
7876
7877 Sun May 13 19:32:09 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7878
7879         * Do not compile anything in lib/silcsim/* if the SIM support
7880           is not enabled.  The tree should now compile without problems
7881           under cygwin.
7882
7883 Thu May 10 22:49:51 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7884
7885         * Compiled the SILC under cygwin.  Compiled and tested briefly
7886           without problems.  More tests needed.  The SIMs didn't compile
7887           though.
7888
7889         * Added various #ifdef HAVE_* stuff to lib/silccrypt/silrng.c.
7890
7891         * Fixed possible crash in silc_get_username in the
7892           lib/silcutil/silcutil.c.
7893
7894 Tue May  8 09:04:03 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7895
7896         * Fixed a va_arg in silc/client_ops.c.
7897
7898         * Oops, RC5 routines were named AES and caused some problems
7899           when not using SIM's.  Affected file lib/silccrypt/rc5.c.
7900
7901 Sun May  6 13:59:48 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7902
7903         * Added new SilcIDIP structure into the lib/silccore/id.h and
7904           replaced the old `ip' fields from all SILC ID's to that type.
7905           This is a step towards IPv6 support.
7906
7907           The silc_id_get_len takes now the ID as an extra argument.
7908           The silc_id_id2str, silc_id_str2id and silc_id_dup now supports
7909           both IPv4 and IPv6 based ID's.
7910
7911           The affected files are lib/silccore/id.[ch] and other files
7912           around the tree using these routines.
7913
7914         * Removed the ID length arguments in server from various
7915           silc_server_send_notify_* routines -> they are not needed
7916           anymore.
7917
7918 Sat May  5 13:56:33 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7919
7920         * Fixed memory leak in silc_encode_pem_file in the file
7921           lib/silcutil/silcutil.c.
7922
7923 Thu May  3 21:23:50 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7924
7925         * Check minor version as well in the SKE.  Affected files are
7926           silcd/protocol.c and lib/silcclient/protocol.c.
7927
7928         * Added --identifier option to the server so that an identifier
7929           can be when creating the public key for the server.  Affected
7930           file is silcd/silcd.c.
7931
7932         * Fixed minor decoding bug in silc_pkcs_decode_identifier in
7933           lib/silccrypt/silcpkcs.c.
7934
7935 Wed May  2 20:50:49 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7936
7937         * Register default ciphers and stuff when using -C option with
7938           the server.  Affected file sildc/silcd.c.
7939
7940         * Put back the servers public key filename format, it is better
7941           than the new one.  For now, the client keys are saved with the
7942           new filename format.  The affected file silc/client_ops.c.
7943
7944         * Implemented the Cipher API for the rest of the ciphers that
7945           did not implement it or implemented it the wrong way.
7946
7947 Wed May  2 13:31:26 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7948
7949         * Register default ciphers and stuff when using the -S option
7950           in the client.  Affected file silc/silc.c.  Same also when
7951           creating new key pair with -C option.
7952
7953 Tue May  1 14:18:13 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7954
7955         * Fixed the silc_verify_public_key client operation function to
7956           save the public keys differently.  The fingerprint is now
7957           used as filename and not the hostname.  This way also the
7958           client keys are saved uniquely and not with hostnames.  The
7959           affected file is silc/client_ops.c.
7960
7961         * Trimmed the silc_hash_fingerprint function to remove extra
7962           whitespaces from the end of the fingerprint.  The affected
7963           file is lib/silccrypt/silchash.c.
7964
7965         * Updated TODO.
7966
7967         * Added silc_cipher_register_default function to register all
7968           default ciphers.  It can be used when configuration files
7969           does not exist and the application does not want any specific
7970           ciphers in any specific order.
7971
7972           The SilcDList is now used as silc_cipher_list dynamically
7973           allocated cipher list.  Removed the static list all together
7974           and now all ciphers must be allocated to the dynamic list.
7975           The silc_cipher_alloc routine was changed to check only the
7976           dynamic list.
7977
7978           All silc_cipher_* routines that used to return int returns
7979           now bool.
7980
7981           The affected files lib/silccrypt/silccrypt.[ch].
7982
7983         * The same thing was done to silc_hash_* as for silc_cipher_*
7984           routines.  Affected files lib/silccrypt/silchash.[ch].
7985
7986         * The same thing was done to silc_pkcs_* as for silc_cipher_*
7987           routines.  Affected files lib/silccrypt/silcpkcs.[ch].
7988           Added also silc_pkcs_[un]register[_default] functions.
7989           Removed the data_context from the PKCS API.
7990
7991         * Added silc_hmac_register_default function to register default
7992           hmacs.  Affected files lib/silccrypt/silchmac.[ch].  Added also
7993           SILC_ALL_HMACS macro that can be used with silc_hmac_unregister
7994           to unregister all hmacs at once.
7995
7996         * Register the default ciphers, hash functions, PKCSs and HMACs
7997           if client's configuration file does not exist.  The affected
7998           file silc/silc.c.
7999
8000         * The client did not load the hash functions from the SIM
8001           modules at all.  Added support for this.  Affected file is
8002           silc/clientconfig.c.
8003
8004         * When decoding public key with silc_pkcs_public_key_decode, check
8005           the supported algorithm only if PKCS are registered.  Affected
8006           file lib/silccrypt/silcpkcs.c.  The same was done with the
8007           silc_pkcs_private_key_decode.
8008
8009         * Fixed the SILC List routines to keep the list always in order.
8010           It used to change the list's order when traversing the list but
8011           not it preserves the order.  Affected file lib/trq/silclist.h.
8012
8013 Mon Apr 30 17:29:03 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8014
8015         * Added the client library to use the SilcSocketConnection's
8016           reference counter (by silc_socket_dup) to prevent the bug that
8017           the socket object may be freed underneath async operation.
8018
8019         * The name resolv library checking fixes in the configure.in.pre.
8020           The patch by salo.
8021
8022         * Created new version of the protocol drafts for future
8023           development. The -03 drafts are the ones that will be changed
8024           in the trunk now and the -02 will remain as they are.
8025
8026         * Send list of CUMODE notifys to the router when announcing
8027           the channel users to the router.  Affected file silcd/server.c.
8028           If the router receiving channel founder CUMODE for a channel
8029           that already has channel founder it will send CUMODE notify
8030           to the sender to remove the channel founder rights from the
8031           announced client.  Affected file silcd/packet_receive.c.
8032
8033         * The CUMODE notify may now use Server ID as well as the entity
8034           who changes the mode.  Updated protocool specs.
8035
8036         * Updated INSTALL and README files.
8037
8038 Sun Apr 29 23:17:50 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8039
8040         * New web pages in the http://silc.pspt.fi.  The pages was
8041           designed by salo.
8042
8043         * Updated CREDITS.
8044
8045 Sun Apr 29 13:33:41 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8046
8047         * Implemented the [DenyConnectin] config section in the server.
8048           Added silc_server_config_denied_conn to check whether incoming
8049           connection is denied.  Affected file silcd/serverconfig.[ch].
8050
8051         * Do not check the ports when checking the incoming configuration
8052           data if the port is 0, meaning any.  Affected file is
8053           silcd/serverconfig.c.
8054
8055 Fri Apr 20 18:58:43 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8056
8057         * Fixed buffer overflow in silc_string_compare in the file
8058           lib/silcutil/silcutil.c.
8059
8060         * Fixed double free in silc_server_command_leave in the file
8061           silcd/command.c.
8062
8063 Fri Apr 20 14:00:11 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8064
8065         * Fixed the version checking in the server.  Affected file is
8066           silcd/protocol.c.
8067
8068 Thu Apr 19 19:52:46 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8069
8070         * Fixed the configuration data fetching when accepting new
8071           connections in the server.  Affected file silcd/server.c.
8072
8073 Thu Apr 19 11:40:20 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8074
8075         * Added `sender_entry' argument to the function
8076           silc_server_packet_relay_to_channel so that we can check
8077           whether some destination actually belongs to the same route
8078           the sender belongs (ie, we must not resend the packet to the
8079           sender).  Affected file silcd/packet_send.[ch].
8080
8081         * Added `servername' field to the SilcClientEntry in the server
8082           to hold the name of the server where client is from.  Affected
8083           file is silcd/idlist.h.
8084
8085 Wed Apr 18 22:19:03 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8086
8087         * Moved the channel message encrypting in the router betwen
8088           router connections from silc_server_channel_message to the
8089           silc_server_packet_relay_to_channel since we want to check
8090           whether we have anybody channel before encrypting anything.
8091           Affected files silcd/packet_[receive/send].c.
8092
8093 Tue Apr 17 21:18:19 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8094
8095         * Fixed the [AdminConnection] server config section to support
8096           multiple entries.  Affected file silcd/serverconfig.c.
8097
8098         * Added support into the server to check the validity of the
8099           incoming connection before executing any KE or authentication
8100           protocols.
8101
8102         * The connection configuration is now saved to the KE and
8103           connection auth protocol contexts and not fetched anymore in
8104           the protocol.  Affected files silcd/server.c, silcd/protocol.[ch].
8105
8106         * The local hosts listenning address and port is also resolved
8107           now when starting the server.  We want to have the socket object
8108           to include the real address and port for the listener.  Added
8109           new function silc_net_check_local_by_sock into the files
8110           lib/silcutil/silcnet.[ch].
8111
8112         * Fixed a broadcast bug in server -> do not broadcast if we
8113           are standalone.
8114
8115         * Fixed a routing bug.  Do not route broadcast packets ever.
8116           Broadcast packets must be processed always and not routed since
8117           they may be destined to some other host than yourself and thus
8118           would get routed without no good reason.  Affected file is
8119           silcd/server.c.
8120
8121         * Added function silc_server_config_is_primary_route to check
8122           whether primary router connection has been configured (a router
8123           configuration that we are initiating).  If there is not, we
8124           will assume that there is only two routers in the SILC network
8125           and we will use the incoming router connection as our primary
8126           route.  Affected files silcd/serverconfig.[ch], silcd/server.c.
8127
8128         * Changed the order of the broadcasting.  Broadcast _after_ the
8129           packet has been processed not before.  Affected file is
8130           silcd/server.c.
8131
8132         * Fixed a [ClientConnection] parsing bug.  The port was never
8133           parsed correctly thus resulting to port 0.  Affected file
8134           silcd/serverconfig.c.
8135
8136         * Fixed silc_server_send_notify_args -> it ignored the `broadcast'
8137           argument and did not set the broadcast packet flag.  Affected
8138           file silcd/packet_send.c.  Fixed same bug in the function
8139           silc_server_send_notify as well.
8140
8141         * If we receive NEW_ID packet for our own ID in the server, ignore
8142           the packet.
8143
8144 Mon Apr 16 12:10:33 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8145
8146         * Updated TODO.
8147
8148         * Removed the nickname from the Private Message Payload.
8149           Updated the code and the protocol specs.
8150
8151         * Updated protocol specs for submitting to the IETF.
8152
8153         * Tweaked the Random Number Generator a bit.  Affected file
8154           lib/silccrypt/silcrng.c.  Exported a new function
8155           silc_rng_[global]_add_noise which can be used to add more
8156           noise to the RNG.
8157
8158 Sat Apr 14 16:21:32 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8159
8160         * Do not parse packets with different timeout when protocol
8161           is active -> may cause problem with rekey.  Affected file
8162           silcd/server.c.
8163
8164         * When server receives signoff notify it must not create
8165           new channel key if the client is on any channels since the
8166           sender of the signoff notify will create it.
8167
8168 Fri Apr 13 17:12:46 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8169
8170         * Added printing of error messages during SKE protocol from the
8171           failure packet sent by server during SKE.  Affected file
8172           silc/client_ops.c.
8173
8174         * Removed the client's failure_callback handling with timeout
8175           and handle it immediately when received.
8176
8177         * The SKE library returned wrong type in SUCCESS and FAILURE
8178           packets.  They must be 32 bit MSB not 16 bit MSB.
8179
8180 Fri Apr 13 00:09:08 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8181
8182         * Ok, rewrote the logic of the re-key and now it seems to work.
8183           I tested it on high traffic with frequent re-keys without
8184           problems.  Added hmac_receive (and renamed hmac to hmac_send)
8185           in SilcClientConnection in lib/silcclient/client.h and
8186           in SilcIDListData in silcd/idlist.h.  Also, removed the
8187           SilcPacketParserContext's cipher and hmac fields as they are
8188           not needed anymore and actually caused some problems when
8189           the ciphers and hmac's changed underneath the packet parser.
8190
8191 Thu Apr 12 14:42:51 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8192
8193         * If re-key protocol is active then process the incoming packets
8194           synchronously since we must assure that icoming packets encrypted
8195           with the old key is processed before the new keys is set to
8196           use.  This is true other packets than for REKEY packets.
8197           Affected file silcd/server.c.  The same was done to client library
8198           as well, affected file lib/silcclient/client.c.
8199
8200 Thu Apr 12 12:01:52 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8201
8202         * Fixed bug in client and server to accept the force send if
8203           the packet is send from silc_[server/client]_packet_process
8204           function.  Otherwise the packets are never delivered, oops.
8205
8206 Wed Apr 11 22:10:15 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8207
8208         * Disable force sending of packets when REKEY protocol is active.
8209           We must assure that no packet is sent directly when rekey is
8210           performed.  All packets must be sent through packet queue.
8211           Added macro SILC_SERVER_IS_REKEY to silcd/server.h and
8212           SILC_CLIENT_IS_REKEY to lib/silcclient/client.h.  Affected
8213           function is silc_[server/client]_packet_send_real to check
8214           the situation.
8215
8216         * Replaced the SIM paths from example config files to
8217           /usr/local/modules.  Also, make install creates now
8218           /usr/local/silc/logs directory to hold all the SILC server
8219           logs.
8220
8221 Wed Apr 11 16:59:59 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8222
8223         * Made the configure.in.pre work on Solaris.  Patch by salo.
8224
8225         * Made all ciphers compatible with non-x86 machines.  Defined
8226           CBC mode macros into lib/silccrypt/ciphers_def.h.
8227
8228 Tue Apr 10 20:32:44 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8229
8230         * Fixed the make install.
8231
8232 Tue Apr 10 16:20:34 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8233
8234         * When MAC computation fails the silc_packet_decrypt returned 0
8235           even though it was supposed to return -1.  Fixed this.  The
8236           affected file is lib/silccore/silcpacket.c.
8237
8238         * Do not replace the config files in /etc/silc (in make install)
8239           if they already exist.  Affected file ./Makefile.am.
8240
8241         * Do not send re-key packets immediately but through packet queue.
8242           Affected file silcd/protocol.c and lib/silcclient/protocol.c.
8243
8244         * Changed silc_net_check_host_by_sock to return FALSE if the
8245           IP/DNS could not be resolved.  Though, it returns the IP address
8246           now even if it could not resolve it (but returns also FALSE).
8247           Affected file lib/silcutil/silcnet.[ch].
8248
8249 Mon Apr  9 21:54:44 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8250
8251         * Added silc_pkcs_decode_identifier to decode the public key's
8252           identifier.  Affected file lib/silccrypt/silpkcs.[ch].
8253           Added also silc_pkcs_free_identifier.  Added also new context
8254           SilcPublicKeyIdentifier.
8255
8256         * Added -S option to the silc client.  It is used to dump the
8257           contents of the specified public key file.
8258
8259         * Changed the PKCS api to return the public key length when
8260           setting the public key.
8261
8262         * Fixed a fatal bug in the public and private key file loading.
8263           Affected file lib/silccrypt/silcpkcs.c.
8264
8265         * Execute the packet parsing for client with zero (0) timeout
8266           if the protocol is active.  Affected file silcd/server.c.
8267
8268 Sun Apr  8 19:30:56 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8269
8270         * Made the key generation options to the silcd program.  Added
8271           -C option, equivalent to client's option.
8272
8273         * Added new [ServerKeys] config section to the server.  It
8274           configures the server's public and private key.
8275
8276         * Defined generic Public Key Payload into the protocol
8277           specification to send specific type of public keys and
8278           certificates.
8279
8280         * Defined new command SILC_COMMAND_GETKEY to fetch a client's
8281           public key or certificate.
8282
8283         * Implemented the GETKEY command to the server and to the
8284           client library and on user interface.
8285
8286 Sun Apr  8 01:37:21 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8287
8288         * Made preliminary `make install' work.
8289
8290 Thu Apr  5 17:42:30 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8291
8292         * Added SilcServerRekey context into silcd/idlist.h.
8293
8294         * Added the PFS support as defined in the specification to the
8295           SKE protocol.  Affected files lib/silcske/*.c.
8296
8297         * Added `ske_group' field to the SilcServerRekey context to hold
8298           the number of the SKE group that is used with PFS in re-key.
8299           Affected file silcd/idlist.h.
8300
8301         * Added PFS re-key support to the server.  Affected file is
8302           silcd/protocol.c.
8303
8304         * Added silc_protocol_cancel to cancel execution of the next
8305           state of the protocol.  Affected file is
8306           lib/silccore/silcprotocol.[ch].
8307
8308         * Added the re-key support with and without PFS to the client
8309           library.  Re-key is performed once in an hour, by default.
8310
8311           Added new protocol type SILC_PROTOCOL_CLIENT_REKEY.
8312           Added silc_client_rekey_callback and silc_client_rekey_final.
8313           Affected files are lib/silcclient/protocol.[ch] and
8314           lib/silcclient/client.[ch].
8315
8316         * Removed the `hmac_key' and `hmac_key_len' fields from the
8317           SilcClientConnection structure; not needed.  Affected file is
8318           lib/silcclient/client.h.
8319
8320         * Updated TODO.
8321
8322 Wed Apr  4 16:32:31 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8323
8324         * Do not ask whether user wants to use the negotiated private key
8325           for private messages, just use it.  Affected file is
8326           silc/local_command.c.
8327
8328         * Added `send_enc_key' and `enc_key_len' fields to the
8329           SilcIDListData structure since they are needed in the re-key
8330           phase.  Affected file is silcd/idlist.[ch].
8331
8332         * Implemented the simple re-key protocol into the server.
8333           Affected files silcd/server.c and silcd/protocol.[ch].  The
8334           re-key will be performed once in an hour, by default.
8335
8336           Added new protocol type SILC_PROTOCOL_SERVER_REKEY.
8337           Added silc_server_rekey, silc_server_rekey_callback and
8338           silc_server_rekey_final.
8339
8340         * Removed Tunneled flag from the protocol.  Updated the code
8341           and the specifications.
8342
8343         * Adde `pfs' field to the SilcIDListData to indicate whether
8344           the PFS is to be performed in the re-key.  Affected file is
8345           silcd/idlist.h.
8346
8347 Tue Apr  3 21:52:42 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8348
8349         * Defined uint8, int8, uint16, int16, uint32, int32, uint64 and
8350           int64 of at least the xintXX size.  If void * is less that 4
8351           bytes uint32 * will be used.  Defined bool as boolean.
8352
8353         * Changed _ALL_ unsigned long and unsigned int to uint32,
8354           unsgined short to uint16 in the source tree.
8355
8356         * Fixed a fatal bug in silc_server_remove_clients_by_server.  Do
8357           not handle clients that has entry->data.registered == FALSE.
8358           They are not in the network anymore.  Affected file is
8359           silcd/server.c.
8360
8361 Tue Apr  3 16:39:19 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8362
8363         * Implemented the sending of the SERVER_SIGNOFF notify in the
8364           server.  Affected file is silcd/server.c.
8365
8366         * Added silc_server_send_notify_args into silcd/packet_send.[ch].
8367           Added also silc_notify_payload_encode_args into the
8368           lib/silccore/silcnotify.[ch].
8369
8370         * Implemented ther SERVER_SIGNOFF notify handling in the server.
8371           Affected file silcd/packet_receive.c.
8372
8373         * Implemented the SERVER_SIGNOFF notify handling in the client
8374           library.  Affected file lib/silcclient/client_notify.c.  Also,
8375           implemnted the printing of the SERVER_SIGNOFF info to the
8376           application.  Affected file silc/client_ops.c.
8377
8378         * The silc_idlist_del_server now returns TRUE or FALSE to indicate
8379           if the deleting was successful.  Affected file silcd/idlist.[ch].
8380
8381         * Added support for public key authentication in the connection
8382           authentication protocol in the client library.  Affected file
8383           lib/silcclient/protocol.c.
8384
8385         * Changed the server's silc_idlist_get_clients_by_* interface
8386           to support already allocated array so that new entries may be
8387           added to pre-allocated array.  Affected file silcd/idlist.[ch].
8388           This fixes some bugs with WHOIS, WHOWAS and IDENTIFY commands
8389           and command replies.
8390
8391         * All command reply functions in the server now calls the
8392           pending command callback even if error occured.  This way the
8393           error will be delivered to the client as well.  Affected files
8394           silcd/command.c and silcd/command_reply.c.
8395
8396         * Fixed INFO command to return local server's info if no server
8397           was provided.  Affected file lib/silcclient/command.c.
8398
8399         * Removed RESTART command for good.  Updated the code and the
8400           protocol specs.
8401
8402         * Rewrote parts of the task system.  It is a bit simpler now.
8403           Removed unsued task priorities. The affected files are
8404           lib/silcutil/silctask.[ch].
8405
8406 Mon Apr  2 20:02:33 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8407
8408         * Moved the USERS printing from the library to the application.
8409           Affected files lib/silcclient/command.c and silc/client_ops.c.
8410
8411 Mon Apr  2 13:13:23 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8412
8413         * Updated TODO.
8414
8415         * Added channel key re-key support.  The re-key is perfomed
8416           only by the router and is done once in an hour.  Added `rekey'
8417           field to the SilcChannelEntry in the server.  Affected files
8418           silcd/server.c and silcd/idlist.h.
8419
8420         * Added silc_task_unregister_by_context into the file
8421           lib/silcutil/silctask.[ch].
8422
8423 Sun Apr  1 19:49:34 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8424
8425         * Added SILC_UMODE_GONE mode to indicate when the client is not
8426           present in the SILC network.  Added also support to the local
8427           command AWAY that will set this mode.  Added support of showing
8428           "xxx is gone" in WHOIS command.  The USERS command shows the
8429           gone status as well.
8430
8431         * Fixed setting server and router operator privileges in the
8432           server's UMODE command.  Affected file silcd/command.c.
8433
8434         * Merged the SKE KE1 and KE2 payloads into one payload.  The
8435           new KE payload is equivalent to the old KE2 payload.
8436
8437           Cleaned up the SKE Start Payload parsing.  It now uses the
8438           simple buffer unformatting to do the parsing.  A lot faster
8439           now.
8440
8441           Added new Mutual Authentication flag (SILC_SKE_SP_FLAG_MUTUAL)
8442           to the SKE that is used to indicate whether both of the SKE
8443           parties should perform authentication.  By default only the
8444           responder performs authentication.  By setting this flag also
8445           the initiator must do authentication.  By default it is unset
8446           since in normal SKE case, client to server connection, only
8447           the responder should do authentication.  When doing SKE between
8448           two clients both should perform authentication.  Updated the
8449           code and the protocol specs.
8450
8451         * A little fix to IDENTIFY command in the server.  Search the
8452           client first by hash not nickname.  Affected file is
8453           silcd/command.c.
8454
8455         * Fixed the silc_client_close_connection to support closing
8456           the client to client connections wihtout deleting too much
8457           data.  Affected file lib/silcclient/client.c.
8458
8459         * Fixed a fatal bug in server and client; if KE1 or KE2 packets
8460           are received if protocol used to be active but is not anymore
8461           the application would crash due to NULL pointer dereference.
8462           Affected files silcd/server.c and lib/silcclient/client.c.
8463
8464         * Added `hash' field to the SilcClientConnection to include
8465           the hash function negotiated in the SKE protocol.
8466
8467         * Added new channel mode SILC_CMODE_FOUNDER_AUTH that is used
8468           to set the channel founder authentication data.  A client can
8469           claim the founder rights later by providing the authentication
8470           data to the CUMODE command using SILC_CUMODE_FOUNDER mode.
8471           This way the channel founder can regain the channel founder
8472           privileges even it is left the channel.  This works only on
8473           local server and the client must be connected to the same
8474           server to be able to regain the founder rights.  Updated the
8475           protocol specs accordingly.
8476
8477           Added support to the CMODE command in the client to set the
8478           founder auth data.  Read the README to see how to set it.
8479
8480           Added support to the CUMODE command to claim the founder
8481           rights.  Read the README to see how to do it.
8482
8483           Added support for the founder authentication to the Channel
8484           Entry in the server.  Affected file silcd/idlist.h.
8485
8486           Added support for the SILC_CMODE_FOUNDER_AUTH mode in the
8487           server's CMODE command.  Affected file silcd/command.c.
8488
8489         * Added the following new functions into lib/silccore/silcauth.[ch]:
8490           silc_auth_get_method and silc_auth_get_data.
8491
8492         * The server now saves the remote hosts public key to the
8493           SilcIDListData pointer.  Affected file silcd/protocol.c.
8494
8495         * The normal server now does not remove the channel entry from
8496           the cache if the founder authentication data is set.  It used
8497           to remove it if the founder was the last one on the channel on
8498           the server and left the channel.  The auth data is saved and
8499           if the channel is re-joined later the old entry is used with
8500           the old auth data.  Affected files silcd/command_reply.c and
8501           silcd/server.c.
8502
8503         * Removed the `pkcs' field from the SilcIDListData structure
8504           in the server; it is not used.  Affected file silcd/idlist.h.
8505
8506 Sat Mar 31 15:38:36 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8507
8508         * Fixed packet processing on slow links.  Partial packets were
8509           never re-processed because the incoming data buffer was cleared
8510           by the application.  Application must not directly clear the
8511           sock->inbuf, the packet processing routines handle it.  Fixed
8512           this in client library and in server.
8513
8514 Fri Mar 30 16:35:27 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8515
8516         * Fixed the WHOIS and IDENTIFY send reply function to really
8517           check whether to send list or just one entry.  Affected file
8518           silcd/command.c.
8519
8520         * Cleaned up the LEAVE command's channel key distribution.  The
8521           affected file silcd/command.c.
8522
8523         * Changed CMODE_CHANGE's <Client ID> to <ID Payload> as server
8524           can enforce the channel mode as well.  In that case the ID
8525           includes the ID of the server.  The code now enforces the
8526           mode change if the router have different mode than the server.
8527
8528         * The notify client operation with CMODE_CHANGE notify can now
8529           return NULL client_entry pointer if the CMODE was not changed
8530           by client.  Application must check for this.
8531
8532         * Added <Server ID> argument to INFO command to support server
8533           info fetching by Server ID.
8534
8535         * Added silc_server_announce_get_channel_users to get assembled
8536           packets of channel users of the specified channel.  Affected
8537           file silcd/server.[ch].
8538
8539         * Fixed bug in CHANNEL_CHANGE notify in the server.  The new ID
8540           was freed underneath the ID Cache.
8541
8542         * Re-announce clients when the server received CHANNEL_CHANGE
8543           notify from the router.  Affected file silcd/packet_send.c.
8544
8545 Thu Mar 29 19:10:28 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8546
8547         * Fixed a fatal bug when client does /join 1 2 3 4 5 6 the server
8548           crashed since it did not handle the fact that there is no cipher
8549           called "3" and didn't check the error condition.  Now fixed.
8550
8551         * Added SILC_MESSAGE_FLAG_REQUEST message flag as generic request
8552           flag.  It can be used to send message requests.
8553
8554 Thu Mar 29 12:26:25 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8555
8556         * Implemented the RESTART command in the client.
8557
8558         * Added SILC_MESSAGE_FLAG_NOTICE message flag for informational
8559           notice type messages.  Added notice printing to the user
8560           interface.
8561
8562         * The channel keys are not re-generated if the channel's mode
8563           is PRIVKEY, ie private key on the channel exists.  Affected
8564           files silcd/server.c and silcd/command.c.
8565
8566         * Fixed a little bug in channel message delivery when channel
8567           private keys are set in the server.  Affected file is
8568           silcd/packet_send.c.
8569
8570         * Changed the setting on channel->on_channel = TRUE from the
8571           silc_client_save_channel_key to the JOIN command reply.  The
8572           key payload is not received if the private channel key is set.
8573           Affected file lib/silcclient/command_reply.c and the
8574           lib/silcclient/client_channel.c.
8575
8576         * When the CMODE_CHANGE notify is sent and the channel private
8577           key mode is removed the channel key must be re-generated in
8578           other cells as well.  Added this support for the router in the
8579           silcd/packet_receive.c.
8580
8581         * Added new local command NOTICE to send notice message on
8582           channel.  Affected file silc/local_command.[ch].
8583
8584 Wed Mar 28 23:55:54 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8585
8586         * Added new local command ME to the client.  It is used to send
8587           message to a channel with SILC_MESSAGE_FLAG_ACTION to indicate
8588           some action.  Affected file silc/local_command.[ch].
8589
8590         * Changed channel_message and private_message client operations
8591           to deliver the message flags to the application.  Added also
8592           the `flags' arguments to the silc_client_send_channel_message
8593           and silc_client_send_private_message functions.  Affected file
8594           silcapi.h.
8595
8596 Wed Mar 28 20:50:47 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8597
8598         * Redefined the Private Message Payload to support private message
8599           keys and to support the new private message flags.  Updated
8600           the protocol specs.  Flags makes it possible to have for example
8601           CTCP style messages.
8602
8603         * Added new type SilcPrivateMessagePayload and defined an API
8604           for it in the lib/silcclient/silcprivate.[ch].
8605
8606         * Tested private message private keys successfully.  Tested the
8607           private message key set, unset and list commands with the new
8608           KEY command.
8609
8610         * Redefined the Channel Message Payload to include the channel
8611           message flags (equal with private message flags) to support
8612           for example CTCP style messages.
8613
8614         * Defined some of the message (for channel and private message)
8615           flags.  Updated the protocol specs and added the flags to the
8616           lib/silccore/silcchannel.h.  The type is SilcMessageFlags.
8617
8618 Wed Mar 28 15:52:36 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8619
8620         * Added SilcKeyAgreementStatus type to the key agreement routines
8621           to indicate the current status and error if one occured.
8622           The status types are defined in the lib/silcclient/silcapi.h.
8623
8624         * Added new local command KEY that is used to set and unset private
8625           keys for channels, set and unset private keys for private messages
8626           with remote clients and to send key agreement requests and
8627           negotiate the key agreement protocol with remote client.  The
8628           key agreement is supported only to negotiate private message keys,
8629           it currently cannot be used to negotiate private keys for channels,
8630           as it is not convenient for that purpose.
8631
8632         * Fixed a minor pending callback setting bug in the function
8633           silc_client_get_client_by_id_resolve, now the function works.
8634           Affected file lib/silcclient/idlist.c.
8635
8636         * Added function silc_net_get_local_port to get local bound
8637           port by socket.  Added to lib/silcutil/silcnet.[ch].
8638
8639         * Added `sockets' and `sockets_count' fields to the SilcClient
8640           object.  They hold the sockets of the listenning sockets in
8641           the client.  Listenning sockets may be for example the key
8642           agreement server.  Affected file lib/silcclient/client.[ch].
8643           Added functions the silc_client_add_socket and the
8644           silc_client_del_socket.  They are exported to the application
8645           as well.
8646
8647         * Added ~./silc/clientkeys to support other client's public keys.
8648
8649         * Renamed verify_server_key client operation to verify_public_key
8650           and added one argument to indicate the type of the connection
8651           (server, client etc.).
8652
8653 Tue Mar 27 22:22:38 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8654
8655         * Added silc_server_connection_auth_request to handle the
8656           incoming CONNECTION_AUTH_REQUEST packet.  Affected file is
8657           silcd/packet_receive.[ch].
8658
8659         * Added silc_server_send_connection_auth_request into the
8660           silcd/packet_send.c to send the connection auth request packet.
8661
8662         * Cleaned up the silcd/protocol.c a bit and fixed some memory
8663           leaks.
8664
8665         * Fixed the public key authentication in responder side in the
8666           server.  The `auth_data' pointer includes the SilcPublicKey
8667           not the path to the public key.  Affected file silcd/protocol.c.
8668
8669         * Implemented the public key authentication in the initiator side
8670           in the server.  Affected file silcd/protocol.c.
8671
8672         * Removed the [RedirectClient] config section from the server
8673           configuration.  Is not needed and I don't want to implement it.
8674
8675 Tue Mar 27 12:49:56 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8676
8677         * Cleaned up the CMODE command in the server.  It now works
8678           correctly and supports all the modes defined in the protocol.
8679           Affected file is silcd/command.c.
8680
8681         * Added `hmac_name' field to the SilcChannelEntry in the server
8682           to hold the default HMAC of the channel.  It can be set when
8683           creating the channel (with JOIN command).  Affected files
8684           silcd/idlist.[ch].
8685
8686         * Added <cipher> and <hmac> argument to the CMODE_CHANGE notify
8687           type to indicate the change of the current cipher and hmac
8688           on the channel.  Client can safely ignore the <cipher> argument
8689           (if it chooses to do so) since the CHANNEL_KEY packet will
8690           force the channel key change anyway.  The <hmac> argument is
8691           important since the client is responsible of setting the new
8692           HMAC and the hmac key into use.
8693
8694         * Fixed the CMODE command in the client library as well.
8695
8696         * Tested CMODE command in router environment successfully.
8697
8698 Mon Mar 26 14:39:48 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8699
8700         * Show the version of the remote client (or server) when connecting
8701           to the server.  It is logged to the log file.  Affected file
8702           is silcd/protocol.c.
8703
8704         * Fixed the KILLED notify handling in the client library.  The
8705           client must be removed from all channels when receiving the
8706           KILLED notify.
8707
8708           Also, do not remove the client entry when giving the KILL
8709           command but when the KILLED notify is received.
8710
8711         * Removed silc_idlist_find_client_by_nickname from the server.
8712           Not needed anymore.  Affected files silcd/idlist.[ch].
8713
8714         * Implemented the CHANNEL_CHANGE notify type handling to the
8715           server.  Affected file silcd/server.c.
8716
8717         * Updated TODO.
8718
8719 Mon Mar 26 12:11:14 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8720
8721         * Added silc_server_send_notify_invite to send the INVITE
8722           notify between routers.
8723
8724         * Implemented the INVITE command correctly to the server.
8725
8726         * Implemented the INVITE notify type handling in the server.
8727
8728         * Implemented the INVITE command to the client library and on the
8729           user interface.
8730
8731 Sun Mar 25 20:27:09 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8732
8733         * Added function silc_server_get_client_resolve to find the
8734           client entry by ID from all ID lists and then resolve it
8735           (using WHOIS) if it cannot be found.  Affected file is
8736           silcd/server.[ch].
8737
8738 Sun Mar 25 13:52:51 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8739
8740         * Implemented the BAN command to the client library.
8741
8742         * The JOIN command in the server now checks the invite list
8743           and the ban list.
8744
8745         * Changed the silc_command_reply_payload_encode_va and the
8746           silc_command_payload_encode_va to support that if argument is
8747           NULL it ignores and checks the next argument.  Affected file
8748           lib/silccore/silccommand.c.
8749
8750         * Added silc_server_send_notify_ban to send the BAN notify
8751           type between routers.
8752
8753         * Chaned the silc_notify_payload_encode to support that if
8754           argument is NULL it ignores and checks the next argument.
8755           Affected file lib/silccore/silcnotify.c.
8756
8757         * Tested ban lists in router environment successfully.
8758
8759 Sat Mar 24 14:47:25 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8760
8761         * Implemented BAN command to the server, in silcd/command.[ch].
8762
8763         * Removed the BAN and INVITE_LIST modes from the CMODE command
8764           in the server code.
8765
8766         * Added function silc_string_match to regex match two strings.
8767           Affected files lib/silcutil/silcutil.[ch].
8768
8769 Fri Mar 23 22:02:40 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8770
8771         * Redefined parts of the SilcChannelEntry in the server to support
8772           the new ban and invite lists.
8773
8774 Fri Mar 23 16:25:11 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8775
8776         * Redefined the INVITE command.  The same command can be used to
8777           invite individuals to the channel but also to manage the invite
8778           list of the channel (to add to and remove from the invite list).
8779           Updated the protocol specs.
8780
8781         * Added new command SILC_COMMAND_BAN that can be used to manage
8782           the ban list of the channel.  Updated the protocol specs.
8783
8784         * Removed the channel modes: the SILC_CMODE_BAN and the
8785           SILC_CMODE_INVITE_LIST as they were a bit kludge to be included
8786           in the CMODE command.  The equivalent features are now available
8787           using INVITE and BAN commands.  Updated the protocol specs.
8788
8789         * Added new SILC_NOTIFY_TYPE_BAN notify type to notify routers
8790           in the network about change in the current ban list.  The notify
8791           type is not used by the client.
8792
8793         * Redefined parts of the SILC_NOTIFY_TYPE_INVITE command to
8794           support the invite lists.
8795
8796 Thu Mar 22 22:52:23 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8797
8798         * Added new function silc_string_regexify that converts string
8799           including wildcard characters into regex string that can
8800           be used by the GNU regex library.  Added into the file
8801           lib/silcutil/silcutil.[ch].
8802
8803           Added silc_string_regex_combine to combine to regex strings
8804           into one so that they can be used as one regex string by
8805           the GNU regex library.  Added into the file
8806           lib/silcutil/silcutil.[ch].
8807
8808           Added silc_string_regex_match to match two strings.  It returns
8809           TRUE if the strings match.  Added into lib/silcutil/silcutil.[ch].
8810
8811 Thu Mar 22 15:29:42 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8812
8813         * Imported GNU regex to the soruce tree into lib/contrib.
8814           Fixed some compiler warning from the regex.c.
8815
8816 Wed Mar 21 15:27:58 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8817
8818         * Fixed MOTD command in the server to work in router environment.
8819
8820         * Fixed the MOTD command in the client library to support
8821           the server argument in the command.
8822
8823         * Added `nickname_len' argument to the silc_idlist_add_client
8824           in the server, as the `nickname' argument may be binary data
8825           (it may be hash).
8826
8827         * Added silc_idlist_get_channels to return all channels from
8828           the ID list.
8829
8830         * Implemented LIST command to the server.  Affected file is
8831           silcd/command.c.
8832
8833         * Implemented the LIST command to the client library and on the
8834           user interface.
8835
8836         * Added [<user count>] argument to the LIST command reply.
8837           With private channels the user count is not shown.
8838
8839         * Updated TODO and README.
8840
8841 Tue Mar 20 21:05:57 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8842
8843         * The client entry's data.registered must be TRUE even with
8844           global client entry on global client list.  The data.registered
8845           is used to check whether the client is anymore in the network,
8846           for example with WHOWAS command so it must be valid.
8847
8848         * Fixed the WHOWAS command in the server.  It now actually works
8849           in router environment.  Added function into silcd/command_reply.c
8850           silc_server_command_reply_whowas_save.
8851
8852         * Added silc_idlist_purge function to the silcd/idlist.c
8853           to periodically purge the ID Cache.
8854
8855         * Fixed INFO command in the server.  It works now in router
8856           environment.  Added <server name> argument to the INFO command
8857           reply.  Updated the protocol specs.
8858
8859         * Fixed minor bug in silc_idcache_purge to not purge if the
8860           expire value is zero.
8861
8862         * Fixed various bugs in WHOIS and IDENTIFY command handling as
8863           they were buggy because of the WHOWAS information.
8864
8865         * Fixed local command MSG to handle the async resolving of
8866           the remote client properly.  It used to fail the first MSG.
8867           Affected file silc/local_command.c.
8868
8869         * Added `data_len' field to SilcIDCache context.
8870
8871 Tue Mar 20 16:29:00 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8872
8873         * Update TODO.  Todo in commands in the server.
8874
8875 Tue Mar 20 15:45:14 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8876
8877         * Added new notify type SILC_NOTIFY_TYPE_UMODE_CHANGE that is
8878           used by routers as broadcast packet to inform other routers
8879           about the changed user mode.
8880
8881           Implemented the notify handling in the server.  Affected file is
8882           silcd/packet_receive.c.  Added the function
8883           silc_server_send_notify_umode to the silcd/packet_send.[ch].
8884
8885         * Added new generic Channel Payload and deprecated the New Channel
8886           Payload.  The New Channel Payload is now the generic Channel
8887           Payload.
8888
8889         * Added new argument `mode' to the silc_server_send_new_channel
8890           as it is required in the Channel Payload now.
8891
8892         * Renamed the SilcChannelPayload to SilcChannelMessagePayload
8893           and created a new and real SilChannelPayload to represent the
8894           new generic Channel Payload.  Implemented the encode/decode
8895           for Channel Payload.  Affected file lib/silccore/silcchannel.[ch].
8896
8897         * Added silc_server_get_client_channel_list to return the list
8898           of channels the client has joined for WHOIS command reply.
8899           Affected file silcd/server.[ch].
8900
8901         * Implemented the channel list sending in the WHOIS command reply
8902           in server and in the client.
8903
8904           Implemented the channel list displaying on the user interface
8905           as well.  Affected file silc/client_ops.c.
8906
8907         * Added silc_channel_payload_parse_list to parse list of Channel
8908           Payloads.  It returns SilcDList list of SilcChannelPayloads.
8909           Client for example can use this function to parse the list of
8910           channels it receives in the WHOIS command reply.  The caller
8911           must free the list by calling silc_channel_payload_list_free.
8912           Affected files lib/silccore/silcchannel.[ch].
8913
8914 Mon Mar 19 21:39:15 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8915
8916         * Added one new argument <user mode> to the WHOIS command reply
8917           to return the mode of the user in SILC.  Updated the protocol
8918           specs.
8919
8920           Implemented it to the server and client.
8921
8922 Mon Mar 19 18:43:06 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8923
8924         * Fixed the mode printing on the user interface on joining.
8925           Affected file silc/client_ops.c.
8926
8927         * Implemented the UMODE command and user modes in general to the
8928           client library and to the user interface.
8929
8930         * Implemented the UMODE command to the server.
8931
8932         * The server now sends UNKNOWN_COMMAND error status if client sends
8933           unknown command.  Affected file silcd/command.c.
8934
8935         * All server commands now handle the command identifier the right
8936           way when sending the command reply to the client.  The client can
8937           use to identify the command replies with the identifier.
8938
8939 Mon Mar 19 16:13:07 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8940
8941         * Added silc_server_get_client_route to resolve the route to
8942           the client indicated by the client ID.  Affected file is
8943           silcd/server.[ch].
8944
8945         * Added silc_server_relay_packet as general function to relay
8946           packet to arbitrary destination.  This deprecates functions
8947           like _send_private_message_key, _relay_notify etc.  Affected
8948           file is silcd/packet_send.[ch].
8949
8950           Removed silc_server_send_key_agreement,
8951           silc_server_send_private_message_key and
8952           silc_server_packet_relay_notify functions from the file
8953           silcd/packet_send.[ch].
8954
8955         * Updated TODO.
8956
8957         * Implemented the SILC_NOTIFY_TYPE_KILLED notify handling in the
8958           server.  Affected file silcd/packet_receive.[ch].
8959
8960         * Implemented the KILL command to the client.  Implemented the
8961           SILC_NOTIFY_TYPE_KILLED notify handling in the client library.
8962           Affected files lib/silcclient/command[_reply].c and
8963           lib/silcclient/client_notify.c.  Implemented the KILL notify
8964           printing in the user inteface.
8965
8966         * Fixed a lot silc_parse_nick memory leaks from the client
8967           library in the file lib/silcclient/command.c.
8968
8969         * Changed the silc_server_send_notify_on_channels's `sender'
8970           argument from SilcSocketConnection to SilcClientEntry to
8971           check the sender as entry and not as connection object and not
8972           to send to the client provided as argument.  The affected file
8973           is silcd/packet_send.[ch].
8974
8975         * The notify packets that are destined directly to the client used
8976           to not to be processed by the server.  Now changed that and the
8977           server processes all notify packets.  After relaying the packet
8978           to the client the notify packet is processed in the server.
8979
8980         * The silc_server_free_client_data now checks whether there is
8981           pending outgoing traffic for the client and purges the data to
8982           the network before removing the client entry.
8983
8984 Sun Mar 18 21:02:47 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8985
8986         * Added SILC_NOTIFY_TYPE_KILLED notify type.  It is sent when
8987           an client is killed from the SILC Network.  Updated the protocol
8988           specs accordingly.
8989
8990           Added new function silc_server_send_notify_killed to the
8991           silcd/packet_send.[ch].
8992
8993         * Added function silc_server_packet_relay_notify to relay notify
8994           packets that are destined directly to a client.  In this case
8995           the server does not process the notify packets but merely relays
8996           it to the client.  Affected file silcd/packet_send.[ch].
8997
8998           Added also silc_server_packet_process_relay_notify to check
8999           whereto relay the notify.  Affected file is
9000           silcd/packet_receive.[ch].
9001
9002         * Implemented the KILL command to the server.
9003
9004         * Updated TODO.
9005
9006         * Added the backup schema desgined last fall to the protocol
9007           specs for everyone to see.  The specification is in the
9008           *-spec-xx.txt draft and the packet type definitions for the
9009           backup routers is in *-pp-xx.txt draft.  Thusly, added also
9010           new packet type SILC_PACKET_CELL_ROUTERS.
9011
9012         * A big security problem in the implementation discovered.  The
9013           signoff of an client did not cause new channel key generation
9014           which it of course should've done.  The channel keys must be
9015           always re-generated when client leaves (or signoffs) the channel.
9016           The silc_server_remove_from_channels funtion now handles
9017           the channel key re-generation.
9018
9019         * Added `sender' argument to the silc_server_send_notify_on_channels
9020           to not to send the client provided as argument.  Affected file
9021           silcd/packet_send.[ch].
9022
9023 Fri Mar 16 15:52:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9024
9025         * Implemented OPER and SILCOPER commands into the server and
9026           the client library.
9027
9028         * Added silc_auth_verify and silc_auth_verify_data to verify
9029           the authentication directly from the authentication payload.
9030           It supports verifying both passphrase and public key based
9031           authentication.  Affected file lib/silccore/silcauth.[ch].
9032
9033         * Added `hash' field to the SilcIDListData structure.  It is the
9034           hash negotiated in the SKE protocol.  Affected file is
9035           silcd/idlist.[ch].
9036
9037         * Slight redesigning of the SilcAuthPayload handling routines.
9038           Do not send SilcPKCS but SilcPublicKey as argument.
9039
9040         * Implemented the public key authentication support to the
9041           serverconfig.  The public key is loaded from the provided path
9042           and saved as authentication data to void * pointer.  Thus,
9043           changed the unsigned char *auth_data to void *auth_data;
9044
9045         * Fixed SHUTDOWN command to send the reply before the server
9046           is shutdown. :)  Affected file silcd/command.c.
9047
9048         * Fixed fatal bug in CONNECT command.  The hostname was invalid
9049           memory and server crashed.  Affected file silcd/command.c.
9050
9051         * Fixed fatal bug in CLOSE command.  The server_entry became
9052           invalid but was referenced later in the command.  Affected file
9053           silcd/command.c.
9054
9055 Thu Mar 15 12:46:58 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9056
9057         * Fixed fatal bug in failure packet handling.  Server ignored
9058           the failure and thus crashed when it came.
9059
9060         * Updated TODO.
9061
9062 Wed Mar 14 20:37:35 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9063
9064         * Added new SILC_CF_LAG_STRICT command flag that strictly forces
9065           that the command may be executed only once in (about) 2 seconds.
9066           The old SILC_CF_LAG flag is same but allows command bursts up
9067           to five before limiting.
9068
9069           Added the support for CF_LAG and CF_LAG_STRICT flags to the
9070           server code.  Various commands now includes the CF_LAG_STRICT
9071           flag to disallow any kind of miss-use of the command.
9072
9073         * Fixed the silc_buffer_unformat to not to allocate any data
9074           if the length of the data is zero.  It used to allocate the
9075           length + 1.  Affected file lib/silcutil/silcbuffmt.c.
9076
9077 Wed Mar 14 16:10:30 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9078
9079         * Changed the format of AdminConnection configuration section
9080           in the server.  Added username of the admin to the format.
9081           Affected files silcd/serverconfig.[ch].
9082
9083           Added silc_server_config_find_admin into silcd/serverconfig.[ch]
9084           to return admin configuration data by host, username and/or
9085           nickname.
9086
9087 Wed Mar 14 13:18:16 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9088
9089         * Implemented WHOWAS command to the server.  Added the functions:
9090
9091           silc_server_command_whowas_parse,
9092           silc_server_command_whowas_send_reply,
9093           silc_server_command_whowas_from_client and
9094           silc_server_command_whowas_from_server
9095
9096         * Added <Client ID> argument to the WHOWAS command reply.  Updated
9097           the protocol specs accordingly.
9098
9099         * Implemented WHOWAS command and command_reply to the client
9100           library.
9101
9102           Implemented the WHOWAS printing on the user interface.
9103
9104 Tue Mar 13 22:17:34 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9105
9106         * Added new argument to the WHOWAS command reply, the real name.
9107           It is an optional argument.  Updated the protocol specs.
9108
9109         * Added SilcIDCacheDestructor callback that is registered when
9110           the SilcIDCache is allocated.  The callback is called when
9111           an cache entry in the ID Cache expires, or is purged from the
9112           cache.  Added into lib/silccore/idcache.[ch].
9113
9114           Added silc_idlist_client_destructor to the silcd/idlist.[ch]
9115           to destruct the client entries when the cache entry expires.
9116           Other ID Cache's in server and in the client library ignores
9117           the destructor.
9118
9119         * If the ID Cache entry's `expire' field is zero then the entry
9120           never expires.  Added boolean `expire' argument to the
9121           silc_idcache_add function in the lib/silccore/idcache.[ch].
9122           If it is TRUE the default expiry value is used.
9123
9124         * Added silc_server_free_client_data_timeout that is registered
9125           when client disconnects.  By default for 5 minutes we preserve
9126           the client entry for history - for WHOWAS command.
9127
9128 Tue Mar 13 13:26:18 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9129
9130         * Added support to the server to enforce that commands are not
9131           executed more than once in 2 seconds.  If server receives
9132           commands from client more frequently, timeout is registered
9133           to process the commands.  Affected file silcd/command.c.
9134           Added new function silc_server_command_process_timeout.
9135
9136         * Changed NICK_NOTIFY handling in client library to check that
9137           if the client's nickname was changed, so there is no need to
9138           resolve anything from the server.
9139
9140         * Removed error printing from the WHOIS and IDENTIFY commands.
9141           If error occurs then it is ignored silently in the client library.
9142           The application, however, may map the received error to
9143           human readable error string.  The application currently maps
9144           the NO_SUCH_NICKNAME error to string.
9145
9146         * Made the command status message public to the application.  Moved
9147           them from lib/silcclient/command_reply.c to
9148           lib/silcclient/command_reply.h.  The application can map the
9149           received command status to the string with the
9150           silc_client_command_status_message function.
9151
9152         * Added check to the server to check that client's ID is same
9153           as the Source ID in the packet the client sent.  They must
9154           match.
9155
9156 Tue Mar 13 12:49:21 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9157
9158         * Added dist-bzip hook to the Makefile.am to make bzip2
9159           compressed distributions.
9160
9161 Mon Mar 12 18:43:38 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9162
9163         * Server now enforces the maximum length for the nickname and
9164           the channel as protocol specification dictates.  128 bytes for
9165           nickname and 256 bytes for channel name.
9166
9167         * Moved the WHOIS printing to the application.  The client libary
9168           does not print out the WHOIS information anymore, the application
9169           must do it.  Renamed silc_client_command_reply_whois_print to
9170           the silc_client_command_reply_whois_save.
9171
9172           The client's idle time is also sent to the application now, and
9173           the idle is shown on screen.
9174
9175         * Added silc_client_command_reply_identify_save to save the
9176           received IDENTIFY entries.
9177
9178         * Do not check for channel private keys in message sending and
9179           reception if the channel does not have the PRIVKEY mode set.
9180           Affected file lib/silclient/client_channel.c.
9181
9182 Sun Mar 11 20:25:06 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9183
9184         * Fixed a minor bug if WHOIS and IDENTIFY command parsing that
9185           just surfaced after chaning the JOIN procedure.
9186
9187 Sun Mar 11 14:59:05 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9188
9189         * Added silc_client_get_clients_by_list to get client entries
9190           from Client ID list, that is returned for example by JOIN
9191           and USERS command replies.  The application should use this
9192           function for example when JOIN command reply is received to
9193           resolve the clients already on the channel (library does not
9194           do that anymore as USERS command reply is not used in the JOIN
9195           procedure anymore).  Affected files lib/silcclient/silcapi.h and
9196           lib/silcclient/idlist.c.
9197
9198         * JOIN command reply and USERS command reply returns now SilcBuffer
9199           pointers instead of unsigned char pointers when returning
9200           the client list and mode list.
9201
9202         * Added <Client ID> argument to the JOIN command reply, mainly
9203           for the server to identify for which client the command was
9204           originally sent.  Updated protocol specs accordingly.
9205
9206         * Added SilcDlist private_key pointer to the SilcChannelEntry
9207           in the client to support the channel private keys.  Affected
9208           file is lib/silcclient/idlist.h.
9209
9210         * Added SilcChannelPrivateKey argument to the function
9211           silc_client_send_channel_message so that application can choose
9212           to use specific private ke if it wants to.  If it is not provided,
9213           the normal channel key is used, unless private keys are set.
9214           In this case the first (key that was added first) is used
9215           as the encryption key.
9216
9217         * Implemented the support for channel private key handling.
9218           Implemented the following functions:
9219
9220           silc_client_add_channel_private_key,
9221           silc_client_del_channel_private_keys,
9222           silc_client_del_channel_private_key,
9223           silc_client_list_channel_private_keys and
9224           silc_client_free_channel_private_keys
9225
9226           Affected file lib/silcclient/client_channel.c.
9227
9228         * Added the support for the private keys in the channel message
9229           sending and encryption and in the message reception and
9230           decryption.  Affected funtions are
9231           silc_client_send_channel_message and silc_client_channel_message.
9232
9233 Sat Mar 10 21:36:22 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9234
9235         * Added SKE's key verify callback to the client library's
9236           KE protocol context. Affected files lib/silcclient/protocol.[ch].
9237
9238         * Removed the statement that server (or router) must send USERS
9239           command reply when joining to the channel so that the client
9240           knows who are on the channel.  Instead, the client list and
9241           client's mode list is now sent in the JOIN command reply to the
9242           client who joined channel.  This is better solution.
9243
9244         * Added function silc_server_get_users_on_channel and function
9245           silc_server_save_users_on_channel to the silcd/server.[ch].
9246
9247         * Removed function silc_server_command_send_users from the
9248           silcd/command.c.
9249
9250         * Do not show topic on the client library anymore.  The topic is
9251           sent in the command reply notify to the application and the
9252           application must show the topic now.
9253
9254 Sat Mar 10 00:07:37 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9255
9256         * Added client searching by nickname hash into the IDENTIFY and
9257           WHOIS commands in the server as they were clearly missing from
9258           them.  Affected file is silcd/command.c.
9259
9260         * Fixed a bug in private message receiving in the client library.
9261           The remote ID was freed and it wasn't supposed, now it is
9262           duplicated.
9263
9264 Fri Mar  9 12:40:42 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9265
9266         * Minor fix to the channel payload; allocate the data area, as it
9267           needs to be of specific length.
9268
9269         * If the key agreement port is zero then the operating
9270           system will define the bound port.  Affected files are
9271           lib/silcclient/silcapi.h and lib/silcclient/client_keyagr.c.
9272
9273         * Added new function silc_channel_payload_decrypt into the file
9274           lib/silccore/silcchannel.[ch].
9275
9276         * Moved the channel message etc, check from silc_packet_decrypt
9277           to applications.  The library calls now a generic
9278           SilcPacketCheckDecrypt callback which is to return TRUE or FALSE
9279           when the packet is either normal or special.  This was done to
9280           allow more wide range of checking that was not allowed when
9281           the code was in library.  Now applications can do virtually any
9282           checks to the packet and return to the library the decision how
9283           the packet should be processed.  Affected files are
9284           lib/silccore/silcpacket.[ch].
9285
9286           Added silc_server_packet_decrypt_check to the server and
9287           silc_client_packet_decrypt_check to the client library.
9288
9289         * Added silc_server_packet_send_srcdest into silcd/packet_send.[ch]
9290           to send with specified source and destination information.
9291
9292         * Channel message delivery between routers was broken after the
9293           channel key distribution was fixed earlier.  The channel key
9294           was used be to distributed to other routers as well which is not
9295           allowed by the protocol.  Now this is fixed and channel keys
9296           really are cell specific and the channel message delivery between
9297           routers comply with the protocol specification.
9298
9299         * Fixed various commands in server to check also the global list
9300           for the channel entry and not just the local list.  The affected
9301           file silcd/command.c.
9302
9303 Thu Mar  8 21:39:03 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9304
9305         * Added assert()s to buffer formatting and unformatting routines
9306           to assert (if --enable-debug) when error occurs.  Affected
9307           file: lib/silcutil/silcbuffmt.c.
9308
9309         * Changed to auto-reconnect to check whether the remote host is
9310           router and register the re-connect timeout if it is.  It used
9311           to check that whether we are normal server, but router must do
9312           auto-reconnect with another router as well.  Affected file
9313           silcd/server.c.
9314
9315         * Removed the [<key len>] option from CMODE command as the cipher
9316           name decides the key length, nowadays.  See the defined ciphers
9317           from the protocol specification.
9318
9319         * Added [<hmac>] option to the CMODE command to define the HMAC
9320           for the channel.  Added SILC_CMODE_HMAC channel mode.
9321
9322         * Added [<hmac>] option for the JOIN command so that user can
9323           select which HMAC is used to compute the MACs of the channel
9324           messages.
9325
9326         * Added Hmac field to the Channel Message Payload.  The integrity
9327           of plaintext channel messages are now protected by computing
9328           MAC of the message and attaching the MAC to the payload.  The
9329           MAC is encrypted.  Now, it is clear that this causes some
9330           overhead to the size of the packet but rationale for this is that
9331           now the receiver can verify whether the channel message decrypted
9332           correctly and also when private keys are set for the channel the
9333           receiver can decrypt the packet with several keys and check from
9334           the MAC which key decrypted the message correctly.
9335
9336         * Added silc_cipher_encrypt and silc_cipher_decrypt into the
9337           lib/silccrypt/silccipher.[ch].
9338
9339         * Added silc_hash_len to return the digest length into the
9340           lib/silcrypt/silchash.[ch].
9341
9342         * Rewrote parts of Silc Channel Payload interface in the
9343           lib/silccore/silcchannel.[ch].  The encode function now also
9344           encrypts the packet and parse function decrypts it.
9345
9346 Wed Mar  7 20:58:50 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9347
9348         * Fixed a minor formatting bug in the SKE's key material processing.
9349           It actually might have processed the keys wrong way resulting
9350           into wrong keys.
9351
9352         * Redefined the mandatory HMAC algorithms and added new algorithms.
9353           Added hmac-sha1-96 and hmac-md5-96 which are normal hmac-sha1
9354           and hmac-md5 truncated to 96 bits.  The mandatory is now
9355           hmac-sha1-96.  Rest are optional (including the one that used
9356           to be mandatory).  Rationale for this is that the truncated HMAC
9357           length is sufficient from security point of view and can actually
9358           make the attack against the HMAC harder.  Also, the truncated
9359           HMAC causes less overhead to the packets.  See the RFC2104 for
9360           more information.
9361
9362         * Added new [hmac] configuration section.  The SKE used to use
9363           the hash names (md5 and sha1) in the SKE proposal as HMCAS which
9364           is of course wrong.  The official names that must be proposed in
9365           the SKE are the ones defined in the protocol specification
9366           (hmac-sha1-96 for example).  The user can configure any hmac
9367           using any hash function configured in the [hash] section.  At
9368           least, the mandatory must be configured.
9369
9370           Rewrote the HMAC interface in lib/silccrypt/silchmac.[ch].
9371
9372         * Added HMAC list to the SKE proposal list.  It has now both
9373           hash algorithm list and HMAC list.  This makes the protocol
9374           incompatible with previous versions.  The SKE now seems to work
9375           the way it is supposed to work, for the first time actually.
9376
9377         * Defined plain Hash algorithms to the protocol specification.
9378           Added sha1 and md5.
9379
9380 Tue Mar  6 15:36:11 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9381
9382         * Implemented support for key agreement packets into the server.
9383           Added functions silc_server_key_agreement and
9384           silc_server_send_key_agreement.  Other than these functions,
9385           server has nothing to do with this packet.
9386
9387         * Added support for private message key packets into the server.
9388           Added functions silc_server_private_message_key and
9389           silc_server_send_private_message_key.
9390
9391         * Updated TODO.
9392
9393         * Changed the silc_[client|server]_protocol_ke_set_keys to be
9394           called in the protocol's final callback instead in the END
9395           protocol state.  This makes a little more sense and in the same
9396           time in client we can use the same protocol routines for normal
9397           key exchange and to key agreement packet handling as well.
9398
9399         * Added to both client's and server's KE protocol context the
9400           SilcSKEKeyMaterial pointer to save the key material.  We will
9401           bring the key material to the protocol's final callback by doing
9402           this.  The final callback must free the key material.
9403
9404         * Added SKE's packet_send callback into client's KE protocol
9405           context so that the caller can choose what packet sending function
9406           is used.  This way we can use different packet sending when
9407           doing normal SKE when doing key agreement packet handling (in
9408           the key agreement packet handling we do not want to encrypt
9409           the packets).
9410
9411         * Implemented the responder side of the key agreement routines
9412           in the client.  The client can now bind to specified port and
9413           accept incoming key negotiation.  The key material is passed
9414           to the application after the protocol is over.
9415
9416         * Implemented the processing of incoming Key Agreement packet
9417           in the client.  Added function silc_client_key_agreement to
9418           process the packet.
9419
9420         * Implemented the intiator side of the key agreement routines
9421           in the client.  The client can now initiate key agreement with
9422           another remote client.  The key material is passed to the
9423           application after the protocol is over.
9424
9425         * Created client_keyagr.c to include all the key agreement
9426           routines.
9427
9428         * Added macro SILC_TASK_CALLBACK_GLOBAL which is equal to the
9429           SILC_TASK_CALLBACK except that it is not static.
9430
9431         * Created client_notify.c and moved the Notify packet handling
9432           from the client.[ch] into that file.
9433
9434         * Created client_prvmsg.c and moved all private message and
9435           private message key routines from the client.[ch] into that file.
9436
9437         * Create client_channel.c and moved all channel message and
9438           channel private key routines from the client.[ch] into that file.
9439
9440         * Changed silc_client_get_client_by_id_resolve to resolve with
9441           WHOIS command instead of IDENTIFY command, in the file
9442           lib/silclient/idlist.c.
9443
9444 Mon Mar  5 18:39:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9445
9446         * Implemented the SKE's responder side to the Client library.
9447
9448         * When FAILURE is received to the protocol do not trust it
9449           blindly.  Register a timeout to wait whether the remote closes
9450           the connection as it should do it, only after that process the
9451           actual failure.  This was changed to both client and server.
9452
9453         * Added client_internal.h to include some of the structures
9454           there instead of client.h in lib/silcclient/.
9455
9456         * Added function silc_task_unregister_by_callback to unregister
9457           timeouts by the callback function.
9458
9459 Sat Mar  3 19:15:43 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9460
9461         * Some "Incomplete WHOIS info" errors has been appearing on the
9462           log files.  Took away the entry->userinfo check from WHOIS
9463           reply sending.  The entry->userinfo is now " " if client did not
9464           provide one.  I thought this was fixed earlier but something
9465           is wrong still.  Let's see if the error still appears.
9466
9467 Wed Feb 28 20:56:29 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9468
9469         * Fixed a minor bug in the login when the channel key is
9470           re-generated in the server.  It used to generate the key in
9471           wrong order and thus caused problems in the channel traffic.
9472
9473         * Fixed a minor bug in channel key distsribution after
9474           KICK command.  The key was not sent to the router even though
9475           it should've been.
9476
9477 Tue Feb 27 20:24:25 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9478
9479         * Added silc_ske_process_key_material_data as generic routine
9480           to process any key material as the SILC protocol dictates.  The
9481           function is used by the actual SKE library but can be used by
9482           applications as well.  This relates to the private message keys
9483           and the channel private keys since they must be processed the
9484           same way the normal SILC session keys.  The protocol dictates
9485           this.  Affected files: lib/silcske/silcske.[ch].
9486
9487           Added also silc_ske_free_key_material to free the
9488           SilcSKEKeyMaterial structure.
9489
9490         * Defined silc_cipher_set_key function to set the key for
9491           cipher without using the object's method function.  The affected
9492           files: lib/silccrypt/silccipher.[ch].
9493
9494         * Implemented silc silc_client_add_private_message_key,
9495           silc_client_add_private_message_key_ske,
9496           silc_client_del_private_message_key,
9497           silc_client_list_private_message_keys and
9498           silc_client_free_private_message_keys functions in the
9499           client library.
9500
9501           Added functions silc_client_send_private_message_key to send
9502           the Private Message Key payload and silc_client_private_message_key
9503           to handle incoming Private Message Key payload.
9504
9505         * Added Cipher field to the Private Message Key payload to set
9506           the cipher to be used.  If ignored, the default cipher defined
9507           in the SILC protocol (aes-256-cbc) is used.
9508
9509 Tue Feb 27 13:30:52 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9510
9511         * Removed lib/silcclient/ops.h file.
9512
9513           Redefined parts of the SILC Client Library API. Created new
9514           file silcapi.h that deprecates the ops.h file and defines the
9515           published Client Library API.  Defined also private message key
9516           API and channel private key API into the file.
9517
9518           This is the file that the application must include from the
9519           SILC Client Library.  Other files need not be included by
9520           the application anymore.
9521
9522         * Added new key_agreement client operation callback and also
9523           defined the Key Agreement library API for the application.
9524
9525 Tue Feb 27 11:28:31 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9526
9527         * Added new packet type: SILC_PACKET_KEY_AGREEMENT.  This packet
9528           is used by clients to request key negotiation  between another
9529           client in the SILC network.  If the negotiation is started it
9530           is performed using the SKE protocol.  The result of the
9531           negotiation, the secret key material, can be used for example
9532           as private message key.
9533
9534           Implemented the Key Agreement payload into the files
9535           lib/silccore/silauth.[ch].
9536
9537 Mon Feb 26 12:13:58 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9538
9539         * Redefined ciphers for the SILC protocol.  Added some new ciphers
9540           and defined the key lengths for the algorithms.  Changed the
9541           code accordingly.  The default key length is now 256 bits.
9542
9543         * Fixed SKE key distribution function silc_ske_process_key_material
9544           when the key length is more than 128 bits.  The default key
9545           length in SILC is now 256 bits.
9546
9547         * Added new command status type: SILC_STATUS_ERR_UNKOWN_ALGORITHM
9548           to indicate unsupported algorithm.
9549
9550         * Renamed rijndael.c to aes.c and all functions as well.
9551
9552         * Fixed a long standing channel key setting bug in client library.
9553           Weird that it has never surfaced before.
9554
9555         * Fixed bug in channel deletion.  If the entire channel is removed
9556           then it must also delete the references of the channel entry
9557           from the client's channel list as the client's channel entry and
9558           the channel's client entry share same memory.
9559
9560 Sun Feb 25 20:47:29 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9561
9562         * Implemented CONNECT and SHUTDOWN commands in the client.
9563
9564         * Implemented CLOSE command to the client.
9565
9566         * Added the function silc_idlist_find_server_by_name into the
9567           files silcd/idlist.[ch].
9568
9569           Added the function silc_idlist_find_server_by_conn into the
9570           files silcd/idlist.[ch].
9571
9572 Sat Feb 24 23:45:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9573
9574         * DIE command was renamed to SHUTDOWN.  Updated the both code
9575           and protocol specs.
9576
9577         * Defined SILC_UMODE_NONE, SILC_UMODE_SERVER_OPERATOR and
9578           SILC_UMODE_ROUTER_OPERATOR modes into lib/silccore/silcmode.h.
9579
9580         * Implemented CONNECT, CLOSE and SHUTDOWN commands to the server
9581           side.
9582
9583         * Added function silc_server_create_connection function to create
9584           connection to remote router.  My server implementation actually
9585           does not allow router to connect to normal server (it expects
9586           that normal server always initiates the connection to the router)
9587           so the CONNECT command is only good for connecting to another
9588           router.
9589
9590 Sat Feb 24 16:03:45 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9591
9592         * Added SILC_NOTIFY_TYPE_KICKED to indicate that the client
9593           or some other client was kicked from the channel.
9594
9595           Implemented the handling of the notify type to both client
9596           and server.
9597
9598           Implemented silc_server_send_notify_kicked to send the KICKED
9599           notify.  It is used to send it to the server's primary router.
9600
9601         * Implemented the KICK command into server and client.
9602
9603         * Added `query' argument to the silc_idlist_get_client function
9604           to indicate whether to query the client from server or not if
9605           it was not found.
9606
9607         * Added new command status type SILC_STATUS_ERR_NO_CHANNEL_FOPRIV
9608           to indicate that the client is not channel founder.
9609
9610         * Updated TODO.
9611
9612 Sat Feb 24 00:00:55 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9613
9614         * Removed the rng context from SilcPacketContext structure and
9615           changed that the packet routine uses the Global RNG API.
9616
9617 Fri Feb 23 11:22:57 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9618
9619         * Added support for quit message that client can "leave" on the
9620           channel when it quits the SILC.  It is ditributed inside the
9621           SILC_NOTIFY_TYPE_SIGNOFF notify type.
9622
9623           Added silc_server_free_client_data that will take the
9624           signoff message as argument.
9625
9626         * Changed SKE routines to use the silc_pkcs_sign/verify routines.
9627
9628 Thu Feb 22 23:05:36 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9629
9630         * Updated parts of the protocol specification to keep it up
9631           to date.
9632
9633 Thu Feb 22 15:08:20 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9634
9635         * Added List flag (SILC_PACKET_FLAG_LIST) to indicate list of
9636           payloads in one packet.
9637
9638         * Deprecated following packet types: NEW_ID_LIST, NEW_CHANNEL_LIST,
9639           NEW_CHANNEL_USER_LIST, SET_MODE and SET_MODE_LIST.  List packets
9640           use now the new List flag.
9641
9642         * Also deprecated the following packet types: REPLACE_ID,
9643           NEW_CHANNEL_USER and REMOVE_CHANNEL_USER packet types.
9644
9645         * Added list support for Notify packet in server.
9646
9647         * Added silc_server_send_notify_channel_change to send the
9648           CHANNEL_CHANGE notify type to replace channel ID's.  Deprecates
9649           the silc_server_send_replace_id.
9650
9651         * Added silc_server_send_notify_nick_change to send the
9652           NICK_CHANGE notify type.  Deprecates the function
9653           silc_server_send_replace_id.
9654
9655         * Added silc_server_send_notify_join to send the JOIN notify type.
9656           Deprecates the function silc_server_send_new_channel_user.
9657
9658         * Added silc_server_send_notify_leave to send LEAVE notify type.
9659           Deprecates the function silc_server_send_remove_channel_user.
9660
9661         * Added silc_server_send_notify_cmode and
9662           silc_server_send_notify_cumode to send CMODE and CUMODE notify
9663           types.  Deprecates the silc_server_send_set_mode function.
9664
9665         * Added SERVER_SIGNOFF notify type to indicate that server has
9666           quit.  This means that all clients on the channel from that
9667           server will drop.  This can be also used when netsplit happens.
9668
9669           Deprecated REMOVE_ID packet type since it is not needed anymore
9670           even from server.
9671
9672           Added silc_server_send_notify_server_signoff to send the
9673           SERVER_SIGNOFF notify type.  Deprecates the function
9674           silc_server_send_remove_id.
9675
9676           Added also silc_server_send_notify_signoff to send the
9677           SIGNOFF notify type.
9678
9679         * Employed the PKCS #1. It is the mandatory way to do RSA in the
9680           SILC protocol from this day on.  Changed the protocol
9681           specification as well.
9682
9683         * Added silc_server_send_notify_topic_set to send TOPIC_SET
9684           notify type.  It is used between routers to notify about
9685           topic changes on a channel.
9686
9687         * Added silc_id_dup into lib/silccore/id.[ch] to duplicate
9688           ID data.
9689
9690         * Partly updated the protocol specification to comply with the
9691           changes now made.  It is still though a bit outdated.
9692
9693         * The JOIN notify type now takes one extra argument <Channel ID>.
9694           The packet used to be destined to the channel but now the
9695           JOIN type may be sent as list thus it is impossible to
9696           destine it to any specific channel.  By adding this argument
9697           it is again possible.
9698
9699 Wed Feb 21 22:39:30 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9700
9701         * Added CREDITS file.  The CHANGES and CREDITS file will appear
9702           in the distribution as well.
9703
9704 Wed Feb 21 14:17:04 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9705
9706         * Implemented CMODE_CHANGE, CUMODE_CHANGE and TOPIC_SET notify
9707           types in the server's silcd/packet_receive.c.
9708
9709         * Implemented CMODE and CUMODE to work in router environment.
9710
9711         * Fixed minor encoding and decoding buglet from the
9712           lib/silccore/silcmode.c.
9713
9714         * Fixed buffer overflow from lib/silcclient/command.c in USERS
9715           command parsing.
9716
9717 Wed Feb 21 12:44:00 EET 2001  Mika Boström <bostik@lut.fi>
9718
9719         * Changed all SilcConfigServer* and silc_config_server* to
9720           SilcServerConfig* and silc_server_config*, respectively.
9721           Patch by Bostik.
9722
9723 Wed Feb 21 00:10:00 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9724
9725         * Associated the ID (client or server ID) to the Authentication
9726           Payload to avoid any possibility of forging.  Updated the
9727           protocol specification and the code accordingly.
9728
9729 Tue Feb 20 14:14:14 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9730
9731         * The RSA key length is now save to the RsaKey context in the
9732           key generation process in lib/silccrypt/rsa.c.  The key length
9733           is now used to figure out the maximum size of the block allowed
9734           to be encrypted/signed.
9735
9736         * Added silc_mp_mp2bin_noalloc into lib/silcmath/mpbin.[ch].  It
9737           is equivalent to the silc_mp_mp2bin but does not allocate any
9738           memory.
9739
9740         * Changed silc_mp_mp2bin API to take length argument.  If it is
9741           non-zero then the buffer is allocated that large.  If zero, then
9742           the size is approximated using silc_mp_sizeinbase, which however
9743           is not relieable.
9744
9745         * Created Global RNG API which is global RNG that application can
9746           initialize.  After initializing, any routine anywhere in the
9747           code (including library) can use RNG without allocating a new
9748           RNG object.  This was done to allow this sort of use of the
9749           RNG in code that has no chance to allocate RNG object.  All
9750           applications currently allocate this and many routines in the
9751           library use this.  Affected file lib/silccrypt/silcrng.[ch].
9752
9753         * Removed the RNG kludge from lib/silcmath/primegen.c and changed
9754           it to use the Global RNG API.
9755
9756         * Defined Authentication Payload into protocol specification that
9757           is used during SILC session to authenticate entities.  It is
9758           used for example by client to authenticate itself to the server
9759           to obtain server operator privileges.
9760
9761           Implemented this payload into the lib/silccore/silcauth.[ch].
9762           Implemented also routines for public key based authentication
9763           as the new protocol specification dictates.
9764
9765           Moved definitions of different authentication methods from
9766           lib/silccore/silcprotocol.h into lib/silccore/silcauth.h.
9767
9768         * Added silc_pkcs_encrypt, silc_pkcs_decrypt, silc_pkcs_sign,
9769           silc_pkcs_verify and silc_pkcs_sign_with_hash and
9770           silc_pkcs_verify_with_hash functions into the file
9771           lib/silccrypt/silcpkcs.[ch].
9772
9773 Mon Feb 19 19:59:28 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9774
9775         * The client entry's userinfo pointer must be always valid.
9776           Otherwise the [<unknown>] bug will surface beacuse the WHOIS
9777           will fail since it requires the userinfo.  Now, the userinfo
9778           is allocated as "" if actual userinfo does not exist.  Actually,
9779           it must exist and it is totally Ok to drop client connections
9780           that does not announce the userinfo.  However, we will make
9781           this workaround for now.
9782
9783         * Added silc_net_get_remote_port into lib/silcutil/silcnet.[ch]
9784           to return the remote port by socket.
9785
9786 Mon Feb 19 14:26:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9787
9788         * Changed SILC_SERVER_COMMAND_EXEC_PENDING macro to the name
9789           SILC_SERVER_PENDING_EXEC and added an new macro
9790           SILC_SERVER_PENDING_DESTRUCTOR which is called to free the
9791           data or when error occurs while processing the pending command.
9792
9793           Added new argument `destructor' into silc_server_command_pending
9794           and to the SilcServerCommandPending object.  This destructor is
9795           now called after calling the pending callback or if error occurs
9796           immediately.  If error occurs the actual pending callback won't
9797           be called at all - only the destructor.  The destructor may be
9798           NULL if destructor is not needed.
9799
9800           All this applies for client library code as well.  Similar
9801           changes were made there as well for the pending commands.
9802
9803           In the client, the application must now allocate the
9804           SilcClientCommandContext with the silc_client_command_alloc
9805           function.
9806
9807         * Added reference counter to the SilcServerCommandContext.  Added
9808           function silc_server_command_alloc and silc_server_command_dup
9809           functions.
9810
9811           Same type of functions added to the client library for the same
9812           purpose as well.
9813
9814         * Removed the cmd_ident from IDListData away since it is now
9815           global for all connections.  It is the command identifier used
9816           in command sending and with pending commands.  The affected file
9817           is silcd/idlist.h.
9818
9819         * Added reference counter to the SilcSocketConnection objecet to
9820           indicate the usage count of the object.  The object won't be
9821           freed untill the reference counter hits zero.  Currently only
9822           server uses this, and client ignores it.  The client must be
9823           set to use this too later.  The affected files are
9824           lib/silccore/silcsockconn.[ch].  Added also the function
9825           silc_socket_dup to increase the reference counter.
9826
9827           This was mainly added because it is possible that the socket
9828           is removed underneath of pending command or other async
9829           operation.  Now it won't be free'd and proper DISCONNECTING
9830           flags, etc. can be set to avoid sending data to connection that
9831           is not valid anymore.
9832
9833         * Added SILC_SET_DISCONNECTING to server.c when EOF is read from
9834           the connection.  After that it sets SILC_SET_DISCONNECTED.
9835           It is, however, possible that the socket data is not still freed.
9836           The silc_server_packet_process now checks that data is not
9837           read or written to connection that is DISCONNECTED.  The socket
9838           get's freed when the reference counter hits zero.
9839
9840 Mon Feb 19 00:50:57 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9841
9842         * Changed the client operation API: channel_message operation's
9843           `sender' is now the client entry of the sender, not the nickname
9844           and the `channel' is the channel entry, not the channel name.
9845
9846           In the private_message operation the `sender' is now also the
9847           client entry of the sender not the nickname.
9848
9849           Affected file is lib/silcclient/ops.h and all applications
9850           using the client operations.
9851
9852 Sat Feb 17 22:11:50 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9853
9854         * Moved the calling of ops->connect() from connect_to_server_final
9855           into receive_new_id functin since that is the point when the
9856           client is actually allowed to send traffic to network.  The
9857           affected file is lib/silcclient/client.c.
9858
9859 Sat Feb 17 13:15:35 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9860
9861         * When receiving NEW_CHANNEL_LIST, NEW_CHANNEL_USER_LIST,
9862           NEW_ID_LIST and SET_MODE_LIST packets, broadcast the list packet
9863           (if needs broadcasting) instead of broadcasting the packets one
9864           by one which would make a burst in the network traffic.
9865
9866         * Added `broadcast' argument to the functions in silcd/server.[ch]
9867           silc_server_create_new_channel[_with_id] to indicate whether
9868           to send New Channel packet to primary router.
9869
9870 Sat Feb 17 01:06:44 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9871
9872         * Added new function into the silcd/server.[ch] files:
9873           silc_server_create_new_channel_with_id to create new channel with
9874           already existing Channel ID.
9875
9876         * Added new packet type SILC_PACKET_SET_MODE_LIST into the file
9877           lib/silccore/silcpacket.h.  This packet is used t send list of
9878           Set Mode payloads inside one packet.  Server uses this to set
9879           the modes for the channels and clients on those channels, that it
9880           announced to the router when it connected to it.  The protocol
9881           specification has been updated accordingly.
9882
9883         * The silc_server_new_channel did not handle the packet coming
9884           from normal server as it normally does not send that.  However,
9885           when it announces its channels it does send it.  Implemented
9886           the support for that.
9887
9888         * Added SILC_ID_CHANNEL_COMPARE macro to compare to Channel ID's
9889           into the file lib/silccore/id.h.
9890
9891 Fri Feb 16 23:57:29 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9892
9893         * Fixed memory leaks in the functions silc_idlist_del_client,
9894           silc_idlist_del_channel and silc_idlist_del_server in the file
9895           silcd/idlist.c.  All of those leaked like a sieve.
9896
9897         * Fixed some small memory leaks in the client's function
9898           silc_client_notify_by_server.
9899
9900         * Added functions into silcd/server.c: silc_server_announce_clients,
9901           silc_server_announce_channels and silc_server_announce_server.
9902           These functions are used by normal and router server to announce
9903           to its primary router about clients, channels and servers (when
9904           router) that we own.  This is done after we've connected to the
9905           router.
9906
9907           These functions effectively implements the following packet types:
9908           SILC_PACKET_NEW_CHANNEL_LIST, SILC_PACKET_NEW_CHANNEL_USER_LIST
9909           and SILC_PACKET_NEW_ID_LIST.
9910
9911         * Added new functions into the silcd/packet_receive.[ch]:
9912           silc_server_new_id_list, silc_server_new_channel_list and
9913           silc_server_new_channel_user_list to handle the incoming
9914           NEW_ID_LIST, NEW_CHANNEL_LIST and NEW_CHANNEL_USER_LIST packets.
9915
9916         * Added support of changing Channel ID in the function
9917           silc_server_replace_id.  If the server that announces a channel
9918           to the router already exists in the router (with same name but
9919           with different Channel ID), router is responsible to send
9920           Replace ID packet to the server and force the server to change
9921           the Channel ID to the one router has.
9922
9923         * Added new notify type SILC_NOTIFY_TYPE_CHANNEL_CHANGE to notify
9924           client that the Channel ID has been changed by the router.  The
9925           normal server sends this to the client.  Client must start using
9926           the new Channel ID as the channel's ID.
9927
9928           Implemented handling of this new type into lib/silcclient/client.c
9929           into the function silc_client_notify_by_server.
9930
9931         * Added new function silc_idlist_replace_channel_id into the files
9932           silcd/idlist.[ch] to replace the Channel ID.
9933
9934 Fri Feb 16 14:14:00 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9935
9936         * Call silc_server_command_identify_check always when processing
9937           the IDENTIFY command in silcd/command.c
9938
9939 Thu Feb 15 20:07:37 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9940
9941         * Added new packet type SILC_PACKET_HEARTBEAT that is used to
9942           send keepalive packets.  The packet can be sent by clients,
9943           servers and routers.
9944
9945           Added function silc_socket_set_heartbeat into the file
9946           lib/silccore/silcsockconn.[ch] to set the heartbeat timeout.
9947           If not set, the heartbeat is not performed.  The actual
9948           heartbeat is implemented in the low level socket connection
9949           library.  However, application is responsible of actually
9950           sending the packet.
9951
9952           Added silc_server_send_heartbeat to send the actual heartbeat
9953           packet into silcd/packet_send.[ch].  Server now performs
9954           keepalive with all connections.
9955
9956         * Added silc_task_get_first function into lib/silcutil/silctask.c
9957           to return the timeout task with shortest timeout.  There was a bug
9958           in task unregistration that caused problems.  TODO has been
9959           updated to include that task system must be rewritten.
9960
9961         * The client library will now resolve the client information when
9962           receiving JOIN notify from server for client that we know but
9963           have incomplete information.
9964
9965         * Rewrote parts of silc_server_remove_from_channels and
9966           silc_server_remove_from_one_channel as they did not remove the
9967           channel in some circumstances even though they should've.
9968
9969         * Encryption problem encountered in server:
9970
9971           The LEAVE command used to send the Channel Key packet to the
9972           router immediately after generating it.  However, the code
9973           had earlier sent Remove Channel user packet but not immediately,
9974           ie. it was put to queue.  The order of packets in the router
9975           was that Channel Key packet was first and Remove Channel User
9976           packet was second, even though they were encrypted in the
9977           reverse order.  For this reason, MAC check failed.  Now, this
9978           is fixed by not sending the Channel Key packet immediately but
9979           putting it to queue.  However, this is more fundamental problem:
9980           packets that are in queue should actually not be encrypted
9981           because packets that are sent immediately gets encrypted
9982           actually with wrong IV (and thus MAC check fails).  So, packets
9983           that are in queue should be encrypted when they are sent to
9984           the wire and not when they put to the queue.
9985
9986           However, the problem is that the current system has not been
9987           designed to work that way.  Instead, the packet is encrypted
9988           as soon as possible and left to the queue.  The queue is then
9989           just purged into wire.  There won't be any fixes for this
9990           any time soon.  So, the current semantic for packet sending
9991           is as follows:
9992
9993           o If you send packet to remote host and do not force the send
9994           (the packet will be in queue) then all subsequent packets to the
9995           same remote host must also be put to the queue.  Only after the
9996           queue has been purged is it safe again to force the packet
9997           send immediately.
9998
9999           o If you send all packets immediately then it safe to send
10000           any of subsequent packets through the queue, however, after
10001           the first packet is put to queue then any subsequent packets
10002           must also be put to the queue.
10003
10004           Follow these rules and everything works fine.
10005
10006 Thu Feb 15 14:24:32 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10007
10008         * Added new function silc_server_remove_clients_by_server to
10009           remove all client entries from ID list when the server connection
10010           is lost.  In this case it is also important to invalidate all
10011           client entires as they hold the invalid server entry.  This
10012           fixes fatal bug when server has lost connection and will reconnect
10013           again.
10014
10015 Wed Feb 14 16:03:25 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10016
10017         * Made some sanity checks to silc_server_daemonise like to check
10018           whether the requested user and group actually exists.
10019
10020         * Added sanity check to SKE's silc_ske_responder_finish to check
10021           that the public and private key actually is valid.
10022
10023         * Invalidate the client's nickname when receiving Replace ID
10024           packet and the Client ID is being replaced.  This means that the
10025           server will query the nickname if someone needs it (client)
10026           a bit later.
10027
10028         * Sort the ID Cache in client library when the ID Cache data
10029           has changed (needs sorting).
10030
10031         * Do not allow for SILC client to create several connections to
10032           several servers.  The client does not support windows right now
10033           and generating multiple connections causes weird behaviour.
10034
10035           Irssi-silc client does support windows and can handle several
10036           connections without problems, see: www.irssi.org and SILC plugin.
10037
10038         * Fixed some places where client was added to the IDList.  The
10039           rule of thumb is following (in order to get everything right):
10040           If the client is directly connected local client then the
10041           `connection' argument must be set and `router' argument must be
10042           NULL to silc_idlist_add_client function.  If the client is not
10043           directly connected client then the `router' argument must
10044           bet set and the `connection' argument must be NULL to the
10045           silc_idlist_add_client function.
10046
10047         * The funtion silc_server_packet_send_local_channel actually did
10048           not check whether the client was locally connected or not.  It
10049           does that now.  Fixed a bug related to LEAVE command.
10050
10051         * Fixed Remove Channel User payload parsing bug in server's
10052           silcd/packet_receive.c.  Fixed a bug related to LEAVE command.
10053
10054         * The server's silc_server_save_channel_key now checks also the
10055           global ID list for the channel as it might not be in the local
10056           list.  Fixed a bug related to LEAVE command.
10057
10058         * Is this the end of the [<unknown>] buglet that has been lurking
10059           around for a long time?  A little for loop fix in server's
10060           silc_server_command_whois_parse that is used by both IDENTIFY
10061           and WHOIS command.  At least, this was a clear bug and a cause
10062           of one type of [<unknown>] buglet.
10063
10064         * WHOIS and IDENTIFY commands call the function
10065           silc_server_command_[whois/identify]_check function even if
10066           we are not router server.
10067
10068 Tue Feb 13 19:55:59 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10069
10070         * Added --with-gmp configuration option.  If set the GMP
10071           is always compiled in the SILC source tree.  If not set then
10072           it is checked whether the system has the GMP3 installed.  If
10073           it has then the GMP won't be compiled (the system's headers
10074           and library is used), if it doesn't have it then the GMP is
10075           compiled in the SILC source tree.
10076
10077 Mon Feb 12 11:20:32 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10078
10079         * Changed RSA private exponent generation to what PKCS #1
10080           suggests.  We try to find the smallest possible d by doing
10081           modinv(e, lcm(phi)) instead of modinv(e, phi).  Note: this is
10082           not security fix but optimization.
10083
10084 Sun Feb 11 18:19:51 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10085
10086         * Added new config entry [Identity] to fork the server and run
10087           it as specific user and group.  A patch from Bostik.
10088
10089         * Imported Dotconf configuration library into lib/dotconf.
10090           This will be used to create the SILC configuration files later.
10091           It will appear in the distsribution after this commit.
10092
10093 Sat Feb 10 21:13:45 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10094
10095         * A big code auditing weekend happening.  Auditing code for
10096           obvious mistakes, bugs and errors.  Also, removing any code
10097           that is obsolete.
10098
10099           Removed files for being obsolete:
10100
10101           o lib/silcutil/silcbuffer.c (the buffer interface is entirely in
10102           inline in the file lib/silcutil/silcbuffer.h)
10103
10104           o lib/silcutil/silcbufutil.c (the header has inline versions)
10105
10106           Changed code to fix possible error conditions:
10107
10108           o The buffer formatting routines now check that the destination
10109           buffer really has enough space to add the data.  This applies for
10110           both buffer formatting and unformatting
10111           (lib/silcutil/silcbuffmt.[ch]).  Also, the entire buffer
10112           unformatting was changed to accomodate following rules:
10113           XXX_*STRING_ALLOC will allocate space for the data into the pointer
10114           sent to the function while XXX_*STRING will not allocate or copy
10115           the data into the buffer.  Instead it sets the pointer from the
10116           buffer into the pointer sent as argument (XXX_*STRING used to
10117           require that the pointer must be allocated already).  This change
10118           makes this whole thing a bit more consistent and more optimized
10119           (note that the data returned in the unformatting with XXX_*STRING
10120           must not be freed now).  The routines return now -1 on error.
10121
10122           o Tried to find all code that use buffer_format and buffer_unformat
10123           and added return value checking to prevent formatting and
10124           especially unformatting errors and possible subsequent fatal
10125           errors.
10126
10127           o Changed ske->x and ske->KEY to mallocated pointers in
10128           lib/silcske/silcske.h.  Fixed possible data and memory leak.
10129
10130           o Added return value checking to all *_parse* functions.  Fixed
10131           many memory leaks as well.
10132
10133           o Added length argument to silc_id_str2id in lib/silccore/id.[ch]
10134           so that buffer overflows would not happen.  All code now also
10135           checks the return value as it can fail.
10136
10137 Mon Feb  5 20:08:30 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10138
10139         * Added reconnection support to server if the normal server looses
10140           its connection to the router (for example if router is rebooted).
10141           The server performs normal reconnection strategy implemented
10142           to the server.  Affected file silcd/server.c.
10143
10144 Sun Feb  4 13:18:32 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10145
10146         * Added new packet type SILC_PACKET_SET_MODE that is used to
10147           distribute the information about changed modes (for clients,
10148           channels and clients channel modes) to all routers in the
10149           network.  Updated the protocol specification accordingly.
10150
10151           Added functions into silcd/packet_send.c and
10152           silcd/packet_receive.c: silc_server_send_set_mode,
10153           silc_server_set_mode.
10154
10155           Added new files silcmode.[ch] into lib/silccore that implements
10156           the encoding and decoding of Set Mode Payload.  Added new type
10157           SilcSetModePayload.  Moved the definitions of different modes
10158           from lib/silccore/silcchannel.h into lib/silccore/silcmode.h.
10159
10160 Sat Feb  3 15:44:54 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10161
10162         * Oops, a little mistake in server's connection authentication
10163           protocol.  The protocol is not ended with FAILURE but with
10164           SUCCESS if the authentication is Ok. :)  Affected file is
10165           silcd/protocol.c.
10166
10167         * Implemented NICK_CHANGE notify handling in server in the file
10168           silcd/packet_receive.c  The NICK_CHANGE notify is distributed to
10169           the local clients on the channel.  After the changing nickname
10170           in router environment snhould work and the [<unknown>] nickname
10171           should appear no more.
10172
10173           The silc_server_replace_id function that receives the Replace ID
10174           payload now sends the NICK_CHANGE notify type also in the file
10175           silcd/packet_receive.c
10176
10177         * Changed WHOIS and IDENTIFY command to support the maximum amount
10178           of arguments defined in protocol specs (3328 arguments).  This
10179           fixed a bug that caused problems when there were more than three
10180           users on a channel.
10181
10182 Fri Feb  2 11:42:56 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10183
10184         * Added extra parameter, command identifier, to the
10185           silc_client_send_command so that explicit command identifier
10186           can be defined.
10187
10188           Changed that ID list routines uses specific command identifier
10189           when sending WHOIS/IDENTIFY requests to the server so that they
10190           can be identified when the reply comes back.
10191
10192           Affected files lib/silcclient/command.[ch],
10193           lib/silcclient/client.c and lib/silcclient/idlist.[ch].
10194
10195         * Added `sender' argument to silc_server_packet_send_to_channel
10196           to indicaet the sender who originally sent the packet to us
10197           that we are now re-sending.  Ignored if NULL.  Affected file
10198           silcd/packet_send.[ch].
10199
10200         * Added some server statistics support in silcd/server_internal.h
10201           SilcServerStatistics structure and around the server code.  Also
10202           send some nice statistics information when client is connecting
10203           to the client.
10204
10205 Thu Feb  1 23:31:21 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10206
10207         * Fixed channel ID decoding in server's JOIN command reply in
10208           silcd/command_reply.c
10209
10210         * Fixed braodcasting of replace ID payload to not to send it if
10211           we are standalone server in silcd/packet_receive.c.
10212
10213         * Fixed all channel message sending routines to not to send
10214           packets to clients that has router set, since they are routed
10215           separately in the same function earlier.  Affects file
10216           silcd/packet_send.c and all channel packet sending functions.
10217
10218         * In USERS reply, res_argv[i] are not allocated, the table
10219           is allocated.  Thus changed that free the table, not its
10220           internals.
10221
10222         * In server's whois_check and identify_check if the client is
10223           locally connected do not send any WHOIS commands - they are not
10224           needed.
10225
10226 Thu Feb  1 21:32:27 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10227
10228         * Fixed some minor bugs in client when sending WHOIS command.  The
10229           arguments was in wrong order.
10230
10231         * Removed statis function add_to_channel from server in
10232           silcd/command.c that was previously used with the joining but
10233           is obsolete now.
10234
10235         * Tested USERS command in router environment successfully with two
10236           routers, two servers and two clients.
10237
10238 Thu Feb  1 00:54:26 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10239
10240         * Reorganized the USERS command and command reply in client library
10241           in lib/silcclient/command.c and lib/silcclient/command_reply.c.
10242           When the command is given by user we register a pending command
10243           callback that will reprocess the command after the reply has been
10244           received from the server.  When reprocessing the packet we then
10245           display the information.  Thus, the USERS information is displayed
10246           now in the command callback instead of in the command reply
10247           callback.  The processing of the command is same as previously
10248           when server has sent the command reply in the JOINing process.
10249
10250         * Added to USERS command in silcd/command_reply.c to join the client,
10251           we didn't use to know about, to the channel after we've created
10252           a client entry for it.  Also, for clienet we did know already still
10253           check whether it is on the channel or not and add it if not.
10254
10255         * Removed silc_server_command_join_notify as the function and its
10256           use was obsolete.
10257
10258 Tue Jan 30 22:39:15 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10259
10260         * Changed the client's pending command handling to the same as the
10261           server's pending command handling.  It is also now possible to
10262           execute command reply functions from other command reply
10263           function as the function callbacks for commands and command
10264           replies are one and same.  The pending commands are not static
10265           list anymore, it is mallocated SilcDList in lib/silcclient/client.h
10266           in client connection context.  Thus, pending commands are server
10267           connection specific as it is convenient.
10268
10269           Changed the function silc_client_command_pending and
10270           silc_client_command_pending_del and added new function
10271           silc_client_command_pending_check.  Removed the
10272           SILC_CLIENT_CMD_REPLY_EXEC, and SILC_CLIENT_PENDING_COMMAND_CHECK
10273           macros.
10274
10275         * Added cmd_ident, current command identifier, to the client
10276           connection context in lib/silcclient/client.h to keep track on
10277           command identifiers used in command sending.  Client's command reply
10278           function handling now supports the mandatory command identifiers.
10279
10280         * Added SILC_CLIENT_COMMAND_EXEC_PENDING macros to all command reply
10281           funtions in client to fully support pending command callbacks.
10282
10283         * NOTE: the name_list in USERS (old NAMES) command is NOT sent anymore
10284           as one of the arguments to the application in the command reply
10285           client operation.
10286
10287         * NOTE: The FORWARDED flag is depracated.  It used to be depracated
10288           before first releasing SILC but came back.  Now it is removed again
10289           and should come back nomore.  The FORWARDED flag was used only
10290           by the JOINing procedure by forwarding the command packet to router.
10291           Now, the JOINing procedure has been changed to more generic (due
10292           to various router environment issues) and FORWARDED is not needed
10293           anymore for anything.  The protocol specification is yet to be
10294           updated.
10295
10296           Now, removed silc_server_packet_forward from server and the flag
10297           SILC_PACKET_FORWARDED from lib/silccore/silcpacket.h.
10298
10299 Tue Jan 30 00:05:05 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10300
10301         * Renamed NAMES command to USERS command.  The NAMES was named that
10302           due to historical reasons.  Now it is renamed.  Also, rewrote
10303           parts of the USERS command.  The nickname list is not sent anymore
10304           by the server.  Only Client ID and mode lists are sent in the USERS
10305           command.  Changed this also to the protocol specification.
10306
10307           The client now resolves the names and stuff after it receives
10308           the USERS list from the server when joining to the channel.
10309
10310         * WHOIS and IDENTIFY commands has been changed to support multiple
10311           Client ID's per command.  One can now search for multiple users
10312           in the network by sending only one WHOIS or IDENTIFY command.
10313           Changed the code and the protocol specifications.
10314
10315         * Removed silc_server_command_identify_parse and changed that IDENTIFY
10316           uses silc_server_command_whois_parse to parse the request. */
10317
10318         * If normal server, do not parse the WHOIS and IDENTIFY requests
10319           before sending it to the router.  Saves some time.
10320
10321 Sun Jan 28 16:19:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10322
10323         * Fixed JOIN command on client library.  Wrong number of arguments
10324           used to crash the client.
10325
10326         * Added silc_server_channel_has_global function to check whether
10327           channel has global users or not.
10328
10329         * Added silc_server_channel_has_local function to check whether channel
10330           has locally connected clients on the channel.
10331
10332         * The silc_server_remove_from_one_channel now checks whether the
10333           channel has global users or not after given client was removed from
10334           the channel.  It also checks whether the channel has local clients
10335           on the channel anymore.  If it does not have then the channel entry
10336           is removed as it is not needed anymore.
10337
10338         * The silc_server_notify now checks on JOIN notify whether the joining
10339           client is one of locally connected or global.  If it is global then
10340           the channel has now global users on the channel and that is marked
10341           to the channel entry.  Also, it now saves the global client to
10342           global list who is joining and JOINs it to the channel.  This is
10343           for normal server, that is.
10344
10345           Changed silc_server_send_notify_on_channel,
10346           silc_server_packet_relay_to_channel and
10347           silc_server_packet_send_to_channel check if we are normal server
10348           and client has router set (ie. global client) do not send the
10349           message to that client, as it is already routed to our router.
10350
10351         * Implemented LEAVE notify type handling in silc_server_notify
10352           function.
10353
10354         * Tested LEAVE command in router environment successfully.  Tested
10355           with two routers, two servers and two clients.
10356
10357         * Updated TODO.
10358
10359         * idlist_find_xxx_by_id routines now dumps the ID on the debug mode.
10360
10361         * Implemented SIGNOFF notify type handling in silc_server_notify
10362           function.
10363
10364         * silc_server_remove_id now removes the client entry from all channels
10365           it has joined and thusly sends SIGNOFF notify type.
10366
10367         * Rewrote the NAMES list generation in server by removing two excess
10368           loops.  The lists are created now inside one loop.
10369
10370 Sat Jan 27 22:34:56 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10371
10372         * silc_server_remove_channel_user checks now also global list
10373           for channel and client.
10374
10375         * silc_server_new_channel_user checks now both local and global
10376           list for channel and client.  Fixed a bug in client id decoding.
10377           Used to decode wrong buffer.
10378
10379         * silc_server_channel_message checks now both local and global
10380           list for channel entry.
10381
10382         * Tested channel joining (hence JOIN) in router environment
10383           successfully.  Tested with two routers, two servers and two
10384           clients.
10385
10386         * Tested channel message sending in router environment successfully.
10387
10388 Thu Jan 11 03:22:57 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10389
10390         * Added silc_server_save_channel_key into server.[ch] to save the
10391           received channel key in Channel Key payload processing. It is
10392           also used in JOIN command reply handling.
10393
10394           Equivalent function silc_client_save_channel_key added into
10395           client.[ch] into client library.
10396
10397         * Changed JOIN command reply to send information whether the channel
10398           was created or not (is existing already) and the channel key
10399           payload.  Changed protocol specs accordingly.
10400
10401         * Fixed bugs in WHOIS and IDENTIFY command reply sending when
10402           the request was sent by ID and not by nickname.  Crashed on
10403           NULL dereference.
10404
10405 Sat Dec 23 21:55:07 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10406
10407         * Fixed a bug in Client library.  IDENTIFY and WHOIS reply functions
10408           now correctly save the received data.
10409
10410         * silc_server_free_sock_user_data now notifies routers in the
10411           network about entities leaving the network.
10412
10413           At the same time implemented functions silc_server_remove_id
10414           and silc_server_send_remove_id to receive and send REMOVE_ID
10415           packets.  The packet is used to notify routers in the network
10416           about leaving entities.  The ID removed will become invalid in
10417           the network.
10418
10419         * Added function silc_idlist_del_server into server. Removes and
10420           free's server entry from ID list.
10421
10422         * silc_server_private_message function now checks, if we are router,
10423           that the destination ID really is valid ID, naturally.
10424
10425         * In router when NEW_ID packet is received (for new client) the
10426           hash of the Client ID is saved in the ID Cache but the
10427           client->nickname is set to NULL, instead of putting the hash
10428           to it as well.
10429
10430           IDENTIFY command now also checks that client->nickname must be
10431           valid. If it is not if will request the data from the server who
10432           owns the client.  Added new function
10433           silc_server_command_identify_check.
10434
10435         * Added silc_command_set_command into lib/silccore/silcommand.[ch]
10436           to set the command to already allocated Command Payload.
10437
10438         * Tested private message sending in router environment with two
10439           routers, two servers and two clients.  Fixed minor bugs and now
10440           it works fine.
10441
10442         * Fixed segfault from client's NAMES command. Used to crash if
10443           not on any channel.
10444
10445         * Forwarded packets must not be routed even if it is not destined
10446           to the receiver.  Changed server code comply with this.
10447
10448 Sun Dec 17 14:40:08 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10449
10450         * Added `require_reverse_mapping' boolean value to ServerParams
10451           structure. If TRUE (not default) the server will require that
10452           the connecting host has fully qualified domain name.
10453
10454           If the reverse mapping is not required and hostname could not be
10455           found the IP address is used as hostname.
10456
10457 Sat Dec 16 17:39:54 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10458
10459         * Implemented version string checking to both client and server.
10460           The check is incomplete currently due to the abnormal version
10461           strings used in development version of SILC.
10462
10463         * Changed all command functions in server to use the new
10464           CHECK_ARGS macro.
10465
10466 Fri Dec 15 15:55:12 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10467
10468         * Changed char *data to unsigned char *data in ID Cache system to
10469           support binary data as ID Cache data. Changed code to support
10470           binary data in lib/silccore/idcache.c.
10471
10472         * Renamed silc_server_packet_relay_command_reply to
10473           silc_server_command_reply as it is normal packet receiving
10474           function. Rewrote the function to accept command replys for
10475           servers and not only for clients.
10476
10477         * Mark remote router always as registered server if we are connecting
10478           to it.  Otherwise, commands sent by the router to us are ignored.
10479
10480         * All ID List find routines now returns the ID Cache Entry pointer
10481           as well if requested.
10482
10483         * WHOIS command works now in router environment, tested with two
10484           routers, two servers and two clients.
10485
10486         * Cleaned up and rewrote IDENTIFY command. IDENTIFY should work now
10487           in router environment (as it is almost equivalent to WHOIS) but
10488           hasn't been tested thoroughly.  Added new functions:
10489
10490           silc_server_command_identify_parse
10491           silc_server_command_identify_send_reply
10492           silc_server_command_identify_from_client
10493           silc_server_command_identify_from_server
10494
10495         * Disabled route cache adding because adding two different ID's with
10496           same IP replaces the old cache entry thus giving wrong route.
10497           The entry->router->connection is always the fastest route anyway
10498           so route cache may not be needed.  Of course, new routes maybe
10499           established after receiving the ID when the entry->router->connection
10500           might not be anymore the most optimal.
10501
10502 Thu Dec 14 15:55:35 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10503
10504         * Add route cache for received ID for fast routing.
10505
10506         * Added silc_server_packet_route to route received packet on router
10507           that is not destined to us.
10508
10509         * Renamed silc_server_get_route to silc_server_route_get.
10510
10511         * Added id_string and id_string_len fields into SilcServer to
10512           include encoded ServerID for fast comparing without excess
10513           encoding of the ID's.
10514
10515         * Cleaned up WHOIS command on server side. Added following static
10516           functions:
10517
10518           silc_server_command_whois_parse
10519           silc_server_command_whois_check
10520           silc_server_command_whois_send_reply
10521           silc_server_command_whois_from_client
10522           silc_server_command_whois_from_server
10523
10524         * Added macro SILC_SERVER_COMMAND_CHECK_ARGC to check mandatory
10525           arguments in command replies. All command functions should be
10526           updated to use this macro.
10527
10528 Sun Dec 10 23:52:00 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10529
10530         * Minor typo fixes on command reply handling on server.
10531
10532 Tue Nov 28 11:05:39 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10533
10534         * Added silc_server_command_add_to_channel internal routine to add
10535           the client to the channel after router has created the channel and
10536           sent command reply to the server.
10537
10538         * Added generic silc_server_send_command to send any command from
10539           server.
10540
10541         * Use static buffer with ID rendering instead of duplicating data.
10542
10543 Mon Nov 27 21:39:40 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10544
10545         * Fixed a channel user mode bug when joining to a channel server gave
10546           everybody channel founder rights, oops.
10547
10548         * We mark ourselves as the router of the incoming server connection
10549           if we are router ourselves.  This way we can check in some packet
10550           sending functions whether it is locally connected server.  For
10551           incoming router connections we put NULL.
10552
10553         * For router sending packets locally means now always sending the
10554           packet cell wide; to local clients and local servers.  For normal
10555           server sending packet locally means sending it to only local
10556           clients.
10557
10558         * Fixed the JOIN command to really work in router environment.  If the
10559           channel is created it is always created by the router.  Router is
10560           also responsible of making the initial joining to the channel,
10561           sending JOIN notify to the sending server and distributing
10562           NEW_CHANNEL and NEW_CHANNEL_USER packets.  Hence, if the channel
10563           does not exist server doesn't do anything else but forward the
10564           command to the router which performs everything.
10565
10566         * Added silc_server_send_channel_key function to send the Channel Key
10567           payload.
10568
10569         * Added silc_server_create_channel_key to create new channel key.  The
10570           channel key is now re-generated everytime someone joins or leaves
10571           a channel, as protocol dictates.  Note: channel->key_len is the
10572           key length in bits.
10573
10574 Wed Nov 22 22:14:19 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10575
10576         * Splitted server.[ch] finally.  Created now packet_send.[ch] and
10577           packet_receive.[ch] to separate packet sending and receiving
10578           routines.  The server.[ch] now includes everything else including
10579           actual packet processing (writing and reading data) and other
10580           server issues.
10581
10582           Renamed silc_server_private_message_send_internal to
10583           silc_server_send_private_message.  The routine is still though
10584           used only to relay private messages as server does not send
10585           private messages itself.
10586
10587           Renamed silc_server_new_channel to silc_server_create_new_channel
10588           and added new function sicl_server_new_channel that handles the
10589           incoming New Channel packet.  Added also new sending function
10590           silc_server_send_new_channel to send New Channel Payload.
10591
10592         * Added new function silc_server_notify to process incoming notify
10593           packet to the server/router. Server may then relay the notify
10594           to clients if needed.
10595
10596         * Added new function silc_server_new_channel_user to process incoming
10597           New Channel User packet.  Router will redistribute the packet and
10598           send JOIN notify to its local clients and locally connected servers
10599           if needed.  Normal server will send JOIN notify to its local client
10600           on same channel when received this packet.  Added also corresponding
10601           sending function silc_server_send_new_channel_user to sent the
10602           payload.
10603
10604         * Added boolean route argument to send_notif_to_channel and
10605           packet_send_to_channel functions to attempt to route the packet
10606           if it is TRUE and send only locally if it is FALSE.
10607
10608 Tue Nov 21 19:49:31 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10609
10610         * silc_server_replace_id now broadcasts the received replace ID
10611           packet if it is not broadcast packet already. The router must
10612           broadcast to inform other routers about changed ID.
10613
10614         * Added backpointer to server's router into SilcServer context in
10615           silcd/server_internal.h.
10616
10617         * Fixed silc_server_packet_broadcast to send correct broadcast
10618           packets.
10619
10620         * The channel key is now distributed to the local client as soon
10621           as it is received from the router (in router environment) so that
10622           no other packet may be sent for the channel until client has
10623           received the key.
10624
10625         * silc_server_remove_channel_user now broadcasts the received
10626           Remove Channel User packet if it is not broadcast packet already.
10627           The router must broadcast to inform other routers about removed
10628           channel user.
10629
10630         * Added users field into SilcPacketContext that is a reference count
10631           of the context.  One can increase the reference count by calling
10632           silc_packet_context_dup which is now changed to just increase the
10633           reference count instead of duplicating the data.  The reference
10634           count is decresed by calling silc_packet_context_free that will
10635           free the data after the reference count hits zero.
10636
10637           For now on the packet context and everything allocated into it
10638           (including the raw packet from network) must be freed by calling
10639           the new silc_packet_context_free function.  Added also new function
10640           silc_packet_context_alloc that must be used now to allocate the
10641           context.  This also means that if a routine is asynchronous from
10642           silc_[client/server]_packet_parse_type the packet context must
10643           be duplicated by calling silc_packet_context_dup.  Otherwise it
10644           gets free'd after silc_[client/server]_packet_parse_type returns.
10645           Also, one must remember that if packet is duplicated then its
10646           reference count must be decresed by calling the free function as
10647           many times as it was duplicated.
10648
10649         * Changed SilcBuffer field from protocol contexts to SilcPacketContext
10650           from both client and server.
10651
10652 Mon Nov 20 23:47:03 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10653
10654         * Made joining to a channel working in router environment.
10655
10656         * Cleaned up JOIN command on server side and create function
10657           silc_server_command_join_channel internal routine to make the
10658           joining happen.
10659
10660 Thu Nov  9 21:12:39 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10661
10662         * Changed silc_command_pending list to SilcDList.  Also, added
10663           `ident' field to SilcServerCommandPending structure to identify
10664           the reply and to call correct callback.
10665
10666           Added silc_server_command_pending_check function to replace the
10667           corresnponding macro.  The silc_command_pending list is not
10668           extern anymore.
10669
10670         * Added silc_command_set_ident into lib/silccore/silccommand.[ch]
10671           to set identifier to previously allocated Command Payload.  It
10672           is used to set identifier for command when resending Command
10673           Payload.
10674
10675         * Added silc_command_payload_encode_payload to encode Command
10676           Payload buffer from SilcCommandPayload structure.
10677
10678         * Added silc_argument_payload_encode_payload to encode Argument
10679           payload buffer from SilcArgumentPayload structure.
10680
10681 Wed Nov  8 21:03:28 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10682
10683         * Changed WHOIS command to support router connection on server side.
10684           The whois request is always sent to router unless the server is
10685           standalone server.  After server has received the reply from the
10686           router will it send the reply to the client.
10687
10688         * Added silc_server_packet_broadcast into silcd/server.[ch] to
10689           broadcast received broadcast packet.  The function is used only
10690           by router.  The broadcast packet is always sent to the router's
10691           primary route.
10692
10693         * Added silc_id_render function in lib/silcutil/silcutil.[ch] to
10694           render given ID to printable string, for log files for example.
10695
10696 Tue Nov  7 22:14:19 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10697
10698         * Made basic router to router connections working.  At least they
10699           can now connect to each other but nothing really works the way
10700           they are supposed - yet.
10701
10702         * Added new initiator token to RouterConnection configuration
10703           file in silcd/serverconfig.[ch].  It is used to tell whether we
10704           are the initiator to the remote router or whether we'll expect
10705           the other end to connect.
10706
10707         * Moved registering of listener task to silc_server_init, hence
10708           the server starts listenning as soon as it is run, even if it
10709           does not have connections to other routers.  Let's see how well
10710           this will work.
10711
10712         * Changed default connection retry timeouts for more suitable in
10713           silcd/server.h.
10714
10715         * Removed cipher and such arguments from silc_idlist_add_client
10716           and silc_idlist_add_server prototypes from silcd/idlist.[ch].
10717           Added new function silc_idlist_add_data to add the keys and stuff
10718           to any ID entry.
10719
10720         * Added SilcIDListData structure and added it to SilcClientEntry
10721           and SilcServerEntry as their first field in the structure.  This
10722           way we can explicitly cast the ID entries to the SilcIDListData
10723           structure and get common data for the entries.  In past, we had
10724           to first check what type of connection it is and then cast it to
10725           correct ID entry type.  Now, we can directly cast the opaque
10726           pointer to the SilcIDListData (no matter what ID entry it actually
10727           is) and get the data needed.
10728
10729 Mon Nov  6 21:56:12 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10730
10731         * Wow, found a bug in scheduler.  The scheduler uninitialized itself
10732           in some circumstances even if threre were timeout tasks, though not
10733           IO tasks, but tasks anyway.  Now fixed.
10734
10735         * Defined SilcServerConnection structure to hold connection specific
10736           stuff about directly connected servers and routers.  The definition
10737           is currently in silcd/server_internal.h.  I thought about having
10738           a bit more important role fro this struct but for now it is used
10739           only when connecting to other server (or router actually).
10740
10741         * Added connecting retry support in server when connecting to
10742           router(s).  The retry feature implement exponential backoff
10743           algorithm.  Also, added SilcServerParams structure to hold default
10744           parameters for server.  For now, it include these retry settings
10745           and are hard coded.  After server is moded to be as Silc Server
10746           Library this structure will be more important.
10747
10748 Sun Nov  5 22:28:44 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10749
10750         * Changed client librarys channel->clients table to SilcList and
10751           changed code accordingly.
10752
10753 Thu Nov  2 16:28:01 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10754
10755         * Changed client's channel table to SilcList and changed code
10756           accordingly.  Also changed SilcChannelClientEntry to include back-
10757           pointer to the channel so that client entry can use that structure
10758           as list as well and we have fast cross-reference to the channel.
10759           This change dramatically decreased the complexity of channel
10760           handling with client entry and vice versa (removed one extra
10761           loop when searching for channel entry from many functions).
10762
10763         * Changed server->sim from table to SilcDList and changed code
10764           accordingly.
10765
10766         * NAMES command can now be used from user interface.  It will show
10767           the user list on the channel, neatly.
10768
10769         * Added realname pointer to SilcClientEntry in lib/silcclient/idlist.h.
10770           Code now saves realname of the user if it becomes available.
10771
10772         * Renamed configure.in to configure.in.pre and made ./prepare
10773           script to automatically add correct version string to
10774           configure.in which it creates from configure.in.pre.
10775
10776 Wed Nov  1 17:21:26 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10777
10778         * NAMES command reply now shows users mode with the nickname when
10779           joining to channel.
10780
10781         * Moved silc_client_ch[u]mode[_char] functions from
10782           silc/clientutil.[ch] to lib/silcclient/client.[ch].  Though, that
10783           place sucks, they are utility functions and should be in some
10784           other file.
10785
10786         * Fixed some unsigned int's to unsigned short's.  Patch by cras.
10787
10788         * Fixed contrib/getopt*.[ch] to not require config.h.  Patch by
10789           cras.
10790
10791 Tue Oct 31 20:10:37 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10792
10793         * Updated README.
10794
10795         * Added TRQ (efficient deque and list library) into lib/trq.  This is
10796           a very good list library that is currently used in the SILC.  Defined
10797           SilcList API over the library because I didn't like the API very
10798           much.  See lib/trq/silclist.h for the API and examples of how to
10799           use the API.  Fixed various places in the code to use the new
10800           SilcList API. The SilcList is meant for lists that has a structure
10801           already defined as a list.  It is not suitable to add just some
10802           context to the list (in TRQ, the context is the list actually).
10803
10804           So, I defined SilcDList that can be used for the purpose where
10805           predefined list structure does not exit.  This can be used as
10806           such list.  Now some context just can be added to the SilcDList.
10807           Currently this list is not used in the SILC just yet, though there
10808           are a lot places where this can replace dynamically allocated
10809           tables and I will fix these places, later, to use SilcDList.
10810           See lib/trq/silcdlist.h for SilcDList (they are all inline functions,
10811           and use TRQ internally).
10812
10813           Also fixed some annoying warning messages that the original TRQ
10814           code generated.  Also minor changes to TRQ's Makefile.in.
10815
10816         * Added support for querying by Client ID to both WHOIS and
10817           IDENTIFY commands into server, as required by the protocol.
10818
10819         * Removed method function pointers from SilcBuffer structure. They
10820           weren't used to anything and just increased the context size for
10821           no good reason.  This change also made silc_buffer_alloc and
10822           silc_buffer_free functions inline functions.
10823
10824         * Disabled command flooding detection support until it's fixed so
10825           that it accepts commands in but does not execute them more than once
10826           in two seconds.
10827
10828         * Added silc_net_localhost(), to return local hostname, into
10829           lib/silcutil/silcnet.[ch].  Also added client->hostname pointer
10830           that must be initialized before calling silc_client_init.
10831
10832         * Added new function: silc_server_send_notify_on_channels to send
10833           notify messages to all channels client has joined.  It is assured
10834           that the message is sent only once per client.
10835
10836         * Moved silc_log_format (from lib/silcutil/silclog.[ch] into
10837           lib/silcutil/silcutil.[ch] as silc_format function.  The new
10838           function is generic and is used by server as well, not only by
10839           the logging routines.
10840
10841         * Added new SKE status type: SILC_SKE_STATUS_BAD_VERSION to indicate
10842           the provided version string was not acceptable.  Added new function:
10843           silc_ske_check_version into lib/silcske/silcske.h.  The function
10844           must be implemented by the application (client or server) and it
10845           does not reside in the SKE library.  The function checks the version
10846           string remote end sent.
10847
10848         * Added back pointers (to opaque context and to SilcSocketConnection)
10849           into SilcPacketContext structure into lib/silccore/silcpacket.h.
10850
10851         * Added silc_packet_context_dup into lib/silccore/silcpacket.[ch] to
10852           duplicate packet context structure.
10853
10854         * Changed `notify' client operation to send same arguments as client
10855           receives from server except for ID's.  ID's are mapped to correct
10856           ID entry and that is returned.  Also, if channel entry is not sent
10857           by server but the notify is for channel the channel entry is sent
10858           to application (otherwise application doesn't know that it is for
10859           channel (library gets it from packet's Destination ID)).
10860
10861         * Added silc_client_remove_from_channels into client library to
10862           remove a client from all channels it has joined to.  Used when
10863           received SIGNOFF notify from server.  Added also new function
10864           silc_client_replace_from_channels to replace old ID entry with
10865           new ID entry on all channels.  Used when received NICK_CHANGE
10866           notify from server.
10867
10868         * Fixed ID Cache list handling in silc_idlist_get_client in
10869           lib/silcclient/idlist.c.  Also, added silc_idlist_get_client_by_id
10870           to get (or query) client by ID.
10871
10872         * Updated TODO list.
10873
10874         * Added connection authentication status message defined by the
10875           protocol: SILC_CONN_AUTH_OK and SILC_CONN_AUTH_FAILED and added the
10876           support for these into the code in client and server side.
10877
10878         * Added generic function silc_client_send_command to send any command
10879           with variable argument list.  Application should use this function
10880           to send commands if the command functions provided by the library
10881           does not suite for the application's user interface needs.
10882
10883         * Added new `failure' client operation.  Application is notified about
10884           received failure packet if client is executing a protocol.  In this
10885           case the protocol's execution has failed.
10886
10887         * Added SKE's end notify to send the SKE_SUCCESS notify message that
10888           is required by the protocol.
10889
10890         * Added SILC_PROTOCOL_STATE_FAILURE to indicate received failure
10891           packet from remote.  SILC_PROTOCOL_STATE_ERROR indicates local
10892           error at our end.
10893
10894         * Added status flag to SilcSKE object to indicate realtime status
10895           of the SKE protocol.
10896
10897         * Application receives now exactly same command reply arguments as
10898           the library receives from server.  However, if ID is received the
10899           corresponding ID entry is returned to the application (eg. Client
10900           ID is mapped to correct SilcClientEntry entry and that is returned).
10901           Changed command_reply client operation due to this change.
10902
10903         * Changed all ID's in commands and in command replys as ID Payloads.
10904           Change affected both client and server side codes.
10905
10906           All ID's sent in SILC network (with execption of ID's in SILC
10907           Packet header) are sent in ID Payload to support variable length
10908           ID's.
10909
10910         * Server now notifies nick changes and notifies all clients on
10911           the channels about the new nickname (about the new Client ID,
10912           actually).
10913
10914         * Implemented CMODE command to change channel modes. Supports all
10915           channel modes defined by the protocol specs except ban and invite
10916           lists. (Also, private channel key mode is supported but support for
10917           setting private channel key in client is missing, thus, this mode
10918           has no effect on client side (except that server requires that the
10919           client uses private channel key and normal channel traffic does not
10920           work anymore)).
10921
10922           Also, invite mode works per se, but INVITE command does not work
10923           yet correctly, so you can set channel as invite only channel but
10924           inviting clients to the channel does not work (it is yet to be
10925           thought what's the best way to do it).
10926
10927         * Added new command SILC_COMMAND_CUMODE to change user mode on the
10928           channel.  Defined user modes: CHANNEL_FOUNDER and CHANNEL_OPERATOR.
10929           Implemented CUMODE command to change user's mode on the channel.
10930           Supports all modes defined by the protocol specs.
10931
10932         * Added NAMES command reply to return users modes on the channel.
10933
10934         * Removed unnecessary and slow ciphers from lib/silccrypt.
10935
10936         * Set SO_KEEPALIVE option to connection sockets by default.
10937
10938         * Added new command reply status: SILC_STATUS_USER_NOT_ON_CHANNEL.
10939
10940         * Added notify types: MOTD, CMODE_CHANGE and CUMODE_CHANGE.  Also,
10941           redefined the Notify Payload into protocol specs.
10942
10943         * Added silc_id_payload_parse_id to get ID directly from raw
10944           ID payload data.
10945
10946 Mon Oct  9 20:57:02 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10947
10948         * Changed SILC_COMMAND_IDENTIFY in protocol specification to
10949           accept searching by Client ID as well.
10950
10951         * Added support for LEAVE and SIGNOFF notify types in client library.
10952
10953         * Added silc_id_payload_parse_data into lib/silccore/silcpayload.[ch]
10954           to parse ID Payload from raw data.
10955
10956 Sun Oct  8 19:33:08 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10957
10958         * Added flags parameter into silc_ske_assemble_security_properties
10959           function in lib/silcske/silcske.[ch].
10960
10961         * Changed notify client operation to fit better for notify messages
10962           sent by server.  The notify payload received from server is now
10963           passed to the application (after parsing it to SilcNotifyPayload).
10964           It is application's responsibility to retrieve the arguments
10965           from the payload and show the message the way it wants.  The message
10966           sent by server is implementation specific.
10967
10968         * Changed public keys to comply with the protocol specification.
10969           Old public keys are not supported anymore and are not compatible.
10970
10971         * Removed nickname from Channel Payload as the latest draft removed
10972           it.  The client must resolve the nickname from the NAMES command
10973           reply received when it joined the channel.
10974
10975           Also, changed all channel_xxxx_payload to channel_payload_xxxx.
10976
10977 Sat Oct  7 21:55:01 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10978
10979         * Fixed some errors in protocol specification drafts.
10980
10981         * Created lib/silccore/silcnotify.c to implement Notify Payload
10982           encoding and decoding, lib/silccore/silcpayload.[ch] to implement
10983           generic payloads described by protocol specifications.  The file
10984           includes implementations for ID Payload and Argument Payload.
10985
10986         * Changed Command Payload implementation to use the new Argument
10987           Payload.  Changed command_xxxx_payload to command_payload_xxxx
10988           to comply with SILC coding conventions.
10989
10990         * Added suppport for Argument Payload handling in Notify Payload
10991           implementation as protocol requires it.  Added the new support
10992           into server and client lib as well.
10993
10994 Thu Oct  5 21:16:28 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10995
10996         * Added support for multiple nicknames on same channel.  [n] is
10997           added locally to the nickname if there are more than one same
10998           nicknames on the channel.
10999
11000         * Server now sends all nicknames that matched WHOIS request.
11001           Client also shows the list received from server.
11002
11003         * Added TOPIC command to client side.  User can now set and show
11004           current topic on channel.
11005
11006         * Added MOTD command to client and server.  Also, server sends the
11007           motd when client connects to the server.
11008
11009         * Changed version strings to comply ISO 8601.
11010
11011 Wed Oct  4 23:29:06 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11012
11013         * Fixed protocol error handling in client library.  It should now
11014           cope even if the SKE fails for some reason.
11015
11016         * Made new protocol specification drafts for submitting to IETF.
11017
11018         * Implemented TOPIC command to server in silcd/command.c.
11019
11020         * Added two new notify types into lib/silccore/silcnotify.h:
11021           SILC_NOTIFY_TYPE_NICK_CHANGE and SILC_NOTIFY_TYPE_TOPIC_SET to
11022           notify nickname change and topic setting/change on a channel.
11023
11024         * API change of command_reply operation in client library.  The
11025           application gets now the status type received from server as well.
11026
11027 Sat Sep 30 16:57:42 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11028
11029         * Removed the function just added to lib/silcutil/silcschedule.[ch].
11030
11031         * Cras fixed and optimized the packet handling even further and
11032           it should work now.  Minor change to the prototype of function
11033           silc_packet_receive_process in lib/silccore/silcpacket.[ch].
11034
11035 Sat Sep 30 08:48:47 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11036
11037         * Added new function into lib/silcutil/silcschedule.[ch]:
11038           silc_schedule_with_fd to select() a specified fd.  The function
11039           returns after timeout expires or data arrives or goes.  The
11040           function is used by packet routines to wait that all data is
11041           received from network.
11042
11043         * Fixed data reading from network in lib/silccore/silcpacket.c.
11044           The code now assures that all data is read from the fd and then
11045           continues packet processing.  This was a bug fix since the code
11046           used to drop some data in some circumstances.
11047
11048         * Added new function into lib/silcclient/client.[ch]:
11049           silc_client_start_key_exchange to start key exchange after
11050           connection has been established to server.  The code internally
11051           now uses this funtion but its main purpose was to provide it
11052           for applications that perform their own connecting.  After
11053           application has created a connection it merely calls this
11054           function to start the key exchange between client and server.
11055           The library takes care of everything else after that.
11056
11057           Updated also lib/silcclient/README to explain the usage of
11058           this new function.
11059
11060         * Do not send to application information that connection has
11061           been established.  Application gets notified it by connect
11062           operation anyway.
11063
11064 Thu Sep 28 23:40:19 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11065
11066         * Applied cras's patch to add silc_schedule_one function.  The
11067           function runs scheduler once and returns.
11068
11069         * Fixed the scheduler after cras messed it up.  The timeout
11070           handling works now as it's supposed to work.
11071
11072         * Added into lib/silccore/ silcnotify.h to include notify
11073           message types support.  Changed silc_server_send_notify*
11074           functions, in server.[ch], to support those new notify types.
11075           Added the support for the notify types into client library,
11076           as well.  Added new notify client operation into ops.h in
11077           lib/silcclient/.
11078
11079         * Changed silc_server_packet_send_to_channel to send normal
11080           packets instead of just channel message packets.  The function
11081           is now used to send the notify packets to channels.  It is not
11082           used to send channel message packets anymore, as server never
11083           sends them anymore.
11084
11085         * Added explicit casting into lib/silcutil/silcbuffmt.c to few
11086           va_arg()s as it seems to require it nowadays.  I guess, if SILC
11087           is compiled with older va_arg() the new code should work anyway.
11088
11089 Wed Sep 13 18:10:14 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11090
11091         * Splitted core library.  Core library (lib/silccore) includes
11092           now only SILC protocol specific core (and common) components.
11093           Created new utility library (lib/silcutil) that includes more
11094           generic purpose stuff.  The stuff for util library was taken
11095           from the old core library.  This was minor and easy split.
11096
11097         * Created SILC Client Library (lib/silcclient) that includes
11098           implementation of the SILC client without user interface.  This
11099           was major move from silc/ directory.  The code has been changed
11100           so that it is transparent towards the user interface.  The
11101           silc/ directory includes now the same user interface as before
11102           and it uses the new client library.  Read lib/silcclient/README.
11103           Basicly, the client library performs everything else related
11104           to SILC except user interface handling.  Also, configuration
11105           files are considered to be part of user interface and library
11106           does not handle them.
11107
11108           This change also changed a lot of structures, function naming etc.
11109           Most important change was that SilcClientWindow object was
11110           renamed to SilcClientConnection in the client library.  Created
11111           also new file lib/silcclient/ops.h.  Also added new files
11112           silc/local_command.[ch] and silc/client_ops.[ch].
11113
11114           All these changes were made to make it easier for user interface
11115           designers to create what ever user interface for the SILC client
11116           they want.
11117
11118           It is also expected that the server will be moved to lib
11119           directory as well and SILC Server Library will be created;
11120           sometimes in the future.
11121
11122         * Removed Local commands from lib/silccore/silccommand.h as
11123           they are application specific and new client library does not
11124           handle any of those anymore.
11125
11126         * Several functions moved to lib/silcutil/silcutilc.[ch] from
11127           old client implementation in silc/.
11128
11129         * Added support for callback functions in SILC_LOG_* macros.
11130           Application can now set its own callbacks that will be called
11131           instead of using the default functions that will always print
11132           the debug messages to stderr (or stdout).  Also, debugging can
11133           now be disabled by setting silc_debug to FALSE and re-enabled by
11134           setting it to TRUE.  Note, that logging will still work even
11135           if debugging is disabled.
11136
11137           New functions in lib/silcutil/silclog.[ch]: silc_log_set_callbacks,
11138           silc_log_reset_callbacks, silc_log_set_debug_callbacks and
11139           silc_log_reset_debug_callbacks.
11140
11141         * To enable debugging in silc client one must give now -d
11142           option on command line.
11143
11144         * Changed silc_schedule_init to automatically allocate task queues
11145           if they are not allocated before calling it.
11146
11147 Thu Sep  7 10:49:33 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11148
11149         * Added GMP 3.1 into math library.
11150
11151 Sun Aug 20 21:27:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11152
11153         * Added SILC_PACKET_REMOVE_CHANNEL_USER to remove a client from
11154           a channel in SILC network.  The packet is used by servers and
11155           routers to notify other routers that user has left a channel.
11156           This little feature was missing until now.  Added the feature
11157           to protocol specification as well.
11158
11159           Added functions: silc_server_send_remove_channel_user and
11160           silc_server_remove_channel_user into server.[ch].
11161
11162         * Added SILC_PACKET_REKEY and SILC_PACKET_REKEY_DONE into
11163           lib/silccore/silcpacket.h.  However, they are not implemented
11164           yet.
11165
11166 Sat Aug 19 23:04:16 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11167
11168         * Fixed joining to a channel and sending channel messages
11169           between server and router.  The channel message sending should
11170           now work inside a cell.
11171
11172 Tue Jul 25 20:46:13 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11173
11174         * Fixed the private message sending between server and router.
11175           The private message sending should now work inside a cell.
11176
11177         * Added silc_server_replace_id into server.[ch] to replace
11178           existing ID in the SILC network.
11179
11180         * Added silc_idlist_find_server_by, silc_idlist_replace_client_id
11181           and silc_idlist_replace_server_id into idlist.[ch] in server.
11182
11183 Mon Jul 24 18:33:31 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11184
11185         * Fixed the server to server connections.  Server can again now
11186           connect to router.  Router to router connections probably does
11187           not work just yet.
11188
11189 Thu Jul 20 13:15:01 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11190
11191         * Added dynamic protocol registering support.  Now protocols can
11192           registered and unregistered on the fly.  Patch by cras.
11193
11194 Wed Jul 19 19:08:46 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11195
11196         * Added lib/contrib directory to hold routines that some platforms
11197           don't have but are needed by SILC.
11198
11199         * Added getopt.c, getopt1.c and getopt.h from GNU C library
11200           into lin/contrib to provide getopt() and getopt_long() for
11201           those who don't have it.
11202
11203 Tue Jul 18 20:41:20 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11204
11205         * Added AWAY command to client.  When away message is set and
11206           client receives a private message packet the client automatically
11207           replies to the sender with the away message.
11208
11209         * Fixed a bug in lib/silcmath/mpbin.c: silc_mp_mp2bin.  This
11210           bug seemed to be the cause of recent problems when compiling
11211           with gcc-2.95.
11212
11213         * Added version detection support to SKE protocol specification
11214           and added the new changes to the SKE implementation as well.
11215           There were other minor changes in the SKE protocol as well.
11216
11217           Many changes in lib/silcske/silcske.[ch] and in
11218           lib/silcske/payload.[ch].
11219
11220         * Added ^U functionality, clear input line.  Patch from cras.
11221
11222 Mon Jul 17 23:33:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11223
11224         * Mainly small bugfixes on core library.  Fixed some debugging
11225           logging and buffer overflow in silclog.c.
11226
11227         * Updated config.sub and config.guess on the distribution tree.
11228
11229 Sat Jul 15 15:33:48 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11230
11231         * Added command lagging support in server. Client may execute
11232           commands now only once in two seconds.
11233
11234 Thu Jul 13 22:10:21 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11235
11236         * Optimized packet reception. MAC computation and checking is now
11237           also more optimized.  A lot previously duplicated code is now
11238           used as generic by both client and server.
11239
11240         * Fixed key pair generation in clientutil.c
11241
11242 Wed Jul 12 18:28:07 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11243
11244         * Added into lib/silccore/silcbufutil.[ch] new function;
11245           silc_buffer_realloc.
11246
11247         * Moved generic packet sending/encryption functions to
11248           lib/silccore/silcpacket.[ch] from client and server.  Some
11249           rewriting of the functions.
11250
11251         * Moved all generic packet reception/decryption functions to
11252           lib/silccore/silcpacket.[ch] from client and server.  The
11253           packet processing is now much cleaner in both client and server.
11254           These were major changes in both client and server.
11255
11256         * Created many common functions in server to do packet sending.
11257           Previously code were duplicated a lot, this has been removed
11258           with these changes.
11259
11260 Tue Jul 11 20:27:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11261
11262         * Rewrote major parts of the ID cache system.  Don't know
11263           whether it is better now or not but at least the API is more
11264           cleaner now.
11265
11266         * Major rewrite on ID cache stuff on client because of the ID
11267           cache API changes.  Added idlist.c to client.
11268
11269         * Also major rewrite on ID cache stuff on server as well.
11270           Major rewrite of idlist.[ch]. SilcXXXList's are now named
11271           SilcXXXEntry's.  We won't keep anymore idlist specific pointers
11272           in hand, instead they are all put into the ID cache system now.
11273           All server_idlist_* routines uses ID cache now instead of
11274           traversing its own lists (those lists does not exist anymore).
11275           SilcIDList though still exists.  Also, SilcXXXEntry's are
11276           now pointers.
11277
11278 Sun Jul  9 15:19:24 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11279
11280         * Finally made the SKE implementation compliant to the protocol
11281           specification.  All mp integers are now binary encoded as
11282           opposed being HEX encoded.
11283
11284         * Added lib/silcmath/mpbin.[ch].  Encoding mp intergers to and
11285           from binary data.
11286
11287         * Added into lib/silccore/silcutil.[ch] PEM encoding/decoding
11288           functions: silc_[encode/decode]_pem.  Also added function
11289           silc_encode_pem_file to PEM encode with newlines ('\n') for
11290           saving into a file.
11291
11292         * SILC public keys are now encoded either PEM or binary.  Same
11293           option is for private keys as well.  By default private keys
11294           are binary encoded and public keys PEM encoded.  Silly HEX
11295           encoding were removed.
11296
11297         * Added into lib/silccrypt/silchash.[ch] silc_hash_fingerprint
11298           function to create fingerprints.
11299
11300         * Fixed a bug in SHA1; does not change the original data anymore.
11301
11302         * Partly implemented INFO command on client and server side.
11303           Fixed CLEAR command.  Changes to SERVER command; show current
11304           server(s) when giving command without arguments.  Added
11305           VERSION command to client.
11306
11307         * Added check to server that unregistered connections cannot
11308           execute commands (unless it is specificly allowed).
11309
11310 Thu Jul  6 18:12:24 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11311
11312         * Fixed screen refresh.
11313
11314         * Fixed channel joining bug from client.  On some circumstances
11315           client tried to join to a channel it had already joined.
11316
11317         * Added public key verification process into client's protocol.c.
11318           The client now verifies the public key from user and saves
11319           it into ~./silc/serverkeys/ directory.
11320
11321           Added into: clientutil.[ch]: silc_client_verify_server_key.
11322
11323         * Changed SKE protocol's silc_ske_initiator_finish function
11324           to accept callback function that verifies the received public
11325           key.  Removed old silc_ske_verify_public_key function.
11326
11327 Wed Jul  5 19:19:02 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11328
11329         * Added into silcpkcs[ch]: silc_pkcs_public_key[_data]_set and
11330           silc_pkcs_private_key[_data]_set.
11331
11332         * Made the password and public authentication more cleaner in
11333           server's protocol.c.
11334
11335         * Removed historic and obsolete protocol `channel_auth' from
11336           both client and server.
11337
11338         * Removed wrong way of sending command status messages from
11339           server to client in server's command.c.  The old way violated
11340           protocol specification.
11341
11342           Changes to silccore/silccommand.[ch]: removed
11343           silc_command_encode_status_payload -> not needed anymore,
11344           changed silc_command_encode_payload_va to accept extra
11345           argument on variable argument list.  The argument type must
11346           now be provided to the function.  Also, added new function:
11347           silc_command_encode_reply_payload_va which is same as
11348           normal command_encode_payload_va except command status type
11349           is provided as extra argument.
11350
11351 Tue Jul  4 18:26:39 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11352
11353         * Added ~./silc directory handling.  The directory includes the
11354           public and private keys for the client.
11355
11356           Added silc_client_check_silc_dir, silc_client_create_identifier
11357           and silc_client_load_keys.
11358
11359         * Implemented SILC protocol compliant public key.  Added public
11360           and private key saving to and loading from files.
11361
11362           Added into silcpkcs.[ch]: silc_pkcs_encode_identifier,
11363           silc_pkcs_public_key_encode[_data], silc_pkcs_public_key_decode,
11364           silc_pkcs_private_key_encode[_data], silc_pkcs_private_key_decode,
11365           silc_pkcs_public_key_alloc, silc_pkcs_public_key_free,
11366           silc_pkcs_private_key_alloc and silc_pkcs_private_key_free.
11367
11368           Implemented: silc_pkcs_save_[public/private]_key[_data] and
11369           silc_pkcs_load_[public/private]_key.
11370
11371 Mon Jul  3 18:51:27 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11372
11373         * Added silc_server_get_route (route.[ch]) to get connection
11374           data for the fastest route for given ID.
11375
11376         * Implemented INVITE command on client and server.  The command
11377           were re-defined in the SILC Protocol Specification and the
11378           implementation now complies with the specification.
11379
11380         * Implemented PING command on client and server.
11381
11382         * Implemented NAMES command on client and server.  The server side
11383           supports currently only normal server not router server yet.
11384           Some changes to NAMES definition in SILC protocol specification.
11385
11386 Sun Jul  2 18:23:01 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11387
11388         * Implemented LEAVE command on client and server.
11389
11390         * Previously deprecated SILC_PACKET_FORWARDED flag is now in use
11391           again.  This change was made to the protocol as well.  Server
11392           should not violate the protocol specification anymore.
11393
11394 Fri Jun 30 14:03:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11395
11396         * Added SOCKS4 and SOCKS5 support to SILC client.  SOCKS5
11397           was tested.  SOCKS4 was not but should work anyway.