5a2a38b3b9d790a331da8c7b4fd643a158780194
[silc.git] / CHANGES
1 Fri Feb 27 11:25:26 CET 2004  Pekka Riikonen <priikone@silcnet.org>
2
3         * Fixed the JOIN command calling when called with both
4          -auth and -founder.  Affected file is lib/silcclien/command.c.
5
6 Wed Feb 25 23:12:11 EET 2004  Pekka Riikonen <priikone@silcnet.org>
7
8         * Check watcher list for resumed clients as well.  Affected
9           file is silcd/packet_receive.c.
10
11 Tue Feb 24 16:49:10 EET 2004  Pekka Riikonen <priikone@silcnet.org>
12
13         * Implemented the user limit to the CMODE_CHANGE notify,
14           CMODE command reply and JOIN command reply in server.
15           Affected files are silcd/server.c, command.c, command_reply.c,
16           packet_send.c and packet_receive.c.
17
18 Mon Feb 23 23:31:15 EET 2004  Pekka Riikonen <priikone@silcnet.org>
19
20         * Defined SILC_STRFMT_END that must be used now with
21           silc_buffer_strformat, instead of SILC_STR_END.  Fixes
22           crashes on AMD64.  Affected files are lib/silcutil/silcbuffmt.h,
23           lib/silcclient/silcvcard.c, silcd/server_util.c.
24
25         * Fixed the adding of public key to the WATCH list in server.
26           Fixed the WATCH notify sending to client.  Affected files
27           are silcd/packet_send.[ch], command.c, server_util.c.
28
29         * Implemented the watching by public key in the SILC Client
30           Library and SILC Client.  Affected files are
31           lib/silcclient/command.c and client_notify.c.
32
33 Mon Feb 23 09:30:30 CET 2004  Pekka Riikonen <priikone@silcnet.org>
34
35         * Added support for public key watching in server.  Affected
36           files are silcd/server.c, server_internal.h, command.c,
37           server_util.c.
38
39 Sun Feb 22 19:03:59 EET 2004  Pekka Riikonen <priikone@silcnet.org>
40
41         * Added public key to the SIlcClientEntry.  Affected files
42           are lib/silcclient/silcclient.h, command_reply.c, idlist.c
43
44         * Fixed the get_clients_whois reply processing to return
45           exactly same entries server returned.  Makes it possible
46           to search using attributes.  Affected file is
47           lib/silcclient/idlist.c.
48
49 Sat Feb 21 19:21:57 EET 2004  Pekka Riikonen <priikone@silcnet.org>
50
51         * Save founder key to SilcChannelEntry.  Affected files are
52           lib/silcclient/silcclient.h, command_reply.c, idlist.c.
53
54 Fri Feb 20 20:37:38 EET 2004  Pekka Riikonen <priikone@silcnet.org>
55
56         * Call the monitor callback with _CLOSED status from the
57           silc_client_file_close.  Affected files are
58           lib/silcclient/client_fpt.c, silcclient.h
59
60         * Added silc_client_get_clients_whois which resolves using
61           WHOIS, and supports requested attributes as well.
62           Affected files are lib/silcclient/silcclient.h, idlist.c.
63
64 Fri Feb 19 21:09:22 EET 2004  Pekka Riikonen <priikone@silcnet.org>
65
66         * Added support for asking the destination filename where
67           the downloaded file is saved in the file transfer.  Affected
68           files are lib/silccilent/silcclient.h, client_ftp.c.
69
70 Wed Feb 18 02:46:17 EET 2004  Pekka Riikonen <priikone@silcnet.org>
71
72         * Fixed error handling in resuming data processing.  Affected
73           files are lib/silcclient/client_resume.c and client.c.
74
75 Tue Feb 17 19:34:30 EET 2004  Pekka Riikonen <priikone@silcnet.org>
76
77         * Fixed silc_client_send_private_message to return TRUE correctly.
78           Affected file lib/silcclient/client_prvmsg.c.
79
80         * Added topic to the SilcChannelEntry.  Affected files are
81           lib/silcclient/silcclient.h, command_reply.c, client_notify.c.
82
83 Fri Feb 13 14:19:14 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
84
85         * Use conn->cmd_ident for all silc_client_command_call()s.  Affected
86           file lib/silcclient/command.c
87
88 Fri Feb 13 13:53:45 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
89
90         * Convert all commands to UTF-8 before passing them to the
91           client library.  Still need to convert replies from UTF-8 to
92           the locale encoding.  Affected file
93           irssi/src/silc/core/silc-cmdqueue.c
94
95 Fri Feb 13 13:13:07 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
96
97         * redirect all silc_client_command_calls through a queueing framework.
98           This fixes /CYCLE and the annoying "nick change after auto-joining
99           a channel".  Furthermore it defines one central point where
100           command parameters can be UTF-8-ified.  Affected files
101           irssi/src/silc/core/Makefile, client_ops.c, silc-channels.c,
102           silc-servers.[ch], silc-core.c, silc-cmdqueue.[ch], silc-lag.c
103
104 Fri Feb 13 12:04:41 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
105
106         * use asynchronous connect() to establish router connections.
107           Fixes problem when the primary router goes down.  Affected files
108           silcd/server.c, silcd/server_backup.c
109
110 Thu Feb 12 20:09:59 EET 2004  Pekka Riikonen <priikone@silcnet.org>
111
112         * Added SILC_[32|64]_TO_PTR and SILC_PTR_TO_[32|64] macros.
113           Fixed various compilation warnings when type casting ints
114           to pointers or vice versa, of different size.  Updates around
115           the source free.
116
117 Tue Feb  3 23:25:17 EET 2004  Pekka Riikonen <priikone@silcnet.org>
118
119         * Surrogates not allowed in UTF-8 strings, updated decoder.
120           Affected file lib/silcutil/silcstrutil.c.  Added UTF-8
121           testers in lib/silcutil/tests/ directory.
122
123 Wed Jan 14 18:42:44 EET 2004  Pekka Riikonen <priikone@silcnet.org>
124
125         * Added SILC_CLIENT_CONN_ERROR_KE, ERROR_AUTH, ERROR_RESUME and
126           ERROR_TIMEOUT SilcClientConnectionStatus errors.  Affected
127           files are lib/silcclient/silcclient.h, client.c.
128
129 Mon Jan 12 13:01:10 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
130
131         * When resuming a session fails, notify the user that the session
132           file needs to be removed eventually.  Affected files
133           irssi/src/fe-common/silc/module-formats.[ch],
134           irssi/src/silc/core/client_ops.c.
135
136 Tue Jan 04 12:16:04 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
137
138         * Added DIST_SUBDIRS symbols to include all subdirs in distributions.
139           Affected files lib/silcutil/Makefile.am, lib/silcmath/Makefile.am
140
141         * Typofix in Irssi::Silc module.  Affected file
142           irssi/src/perl/silc/Silc.xs.
143
144 Tue Jan 04 02:43:44 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
145
146         * Changed the way NOTICE flagged messages are treated. Added support
147           for notices in queries and signing notices.  Affected files
148           irssi/default.theme; irssi/docs/help/in/notice.in;
149           irssi/src/fe-common/silc/module-formats.[ch], fe-silc-messages.c;
150           irssi/src/silc/core/client_ops.c, silc-channels.c, silc-servers.c
151
152         * Fixed typo in /ACTION help.  Affected file
153           irssi/docs/help/in/action.in
154
155 Mon Jan 03 23:26:38 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
156
157         * Fixed typo in perl module.  Affected file
158           irssi/src/perl/silc/Server.xs
159
160         * Changed the way ACTION flagged messages are treated. Added support
161           for actions in queries and signing actions.  Affected files
162           irssi/default.theme; irssi/docs/help/in/action.in;
163           irssi/src/fe-common/silc/module-formats.[ch], fe-silc-messages.c,
164           fe-silc-queries.c; irssi/src/silc/core/client_ops.c, silc-channels.c,
165           silc-servers.[ch]
166
167 Mon Jan 03 16:04:29 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
168
169         * Incorrectly reported error when client had to be resolved from
170           server in /SMSG.  Affected file irssi/src/silc/core/silc-servers.c
171
172 Sat Jan  3 16:37:15 EET 2004  Pekka Riikonen <priikone@silcnet.org>
173
174         * Fixed whois public key hash table deleting and adding in
175           detached client case.  Affected file silcd/packet_receive.c.
176
177 Sat Jan 03 12:15:38 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
178
179         * Changed filenames of silc/fe module not to collide with filenames
180           from core/fe.  Also seperated public messages printing from
181           query messages printing.  Affected files are all in
182           irssi/src/fe-common/silc.
183
184 Sat Jan  3 12:18:07 EET 2004  Pekka Riikonen <priikone@silcnet.org>
185
186         * Fixed the invite process handling during joining to use
187           correct server name for the client that is matched against
188           the invite string for the channel.  Wrong server name caused
189           inability to join the channel.  Affected file is
190           silcd/command.c.
191
192 Fri Jan  2 23:34:17 EET 2004  Pekka Riikonen <priikone@silcnet.org>
193
194         * Fixed the CUMODE channel founder authentication on normal
195           server to not remove the founder rights on existing founder
196           before checking that router accepts the mode change.  Affected
197           files are silcd/command.c and silcd/packet_receive.c.
198
199         * Remove the server entry correctly when rekey timeouts and
200           remote router connection on normal server is closed.  Fixes
201           a crash where server uses the freed server entry.  Affected
202           file silcd/server.c.
203
204 Fri Jan 02 10:28:15 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
205
206         * Add /SILCNET [ADD|REMOVE|LIST] command to manage different SILC
207           networks.  This is the first step in solving the bug about
208           /SERVER ADD -silcnet <silcnet>.  Affected files
209           irssi/docs/in/silcnet.in; irssi/src/fe-common/silc/Makefile.am,
210           fe-silcnet.c, fe-common-silc.c, module-formats.[ch];
211           irssi/src/silc/core/silc-chatnets.[ch], silc-core.c, Makefile.am
212
213 Thu Jan 01 20:11:32 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
214
215         * /SMSG and /MMSG now correctly create new queries. Affected files
216           irssi/src/fe-common/silc/fe-messages.c, irssi/scripts/silc-mime.pl
217
218         * Add basic support for SILC protocol specific variables in perl.
219           Affected files irssi/src/perl/silc/*, irssi/configure.in,
220           irssi/src/perl/Makefile.am
221
222 Wed Dec 31 17:06:55 CET 2003  Jochen Eisinger <jochen@penguin-breeder.org>
223
224         * Don't use silc_get_input, it's obviously not reliable.  Fixes
225           issue when the current key expires.  Affect file
226           irssi/src/silc/core/clientutils.c
227
228         * Make the session data filename configurable.  This makes it
229           possible to have different session files for different
230           SILC networks.  Affected files irssi/src/silc/core/silc-core.c,
231           client_ops.[ch], silc-servers.c,
232           irssi/src/silc/fe-common/silc/module-formats.[ch]
233
234         * Use the same set of libtool files for the MPI lib as for the
235           rest of the toolkit.  Affected files lib/silcmath/mpi/config.guess,
236           config.sub, configure.in, install-sh, missing, mkinstalldirs
237
238 Sun Dec 28 21:57:39 EET 2003  Pekka Riikonen <priikone@silcnet.org>
239
240         * Fixed server statistics decrementing error to not go to
241           negative.  Affected file silcd/packet_receive.c.
242
243 Sat Dec 20 14:42:36 EET 2003  Pekka Riikonen <priikone@silcnet.org>
244
245         * Use silc_server_query_add_error to add error in public key
246           search error.  Added support in send_reply to send errors
247           without specific argument.  Affected file silcd/server_query.c.
248
249         * Fixed the WHOIS, IDENTIFY and WHOWAS error handling in SILC
250           Client for NO_SUCH_NICK.  It was against the protocol specs.
251           Affected file irssi/src/silc/core/client_ops.c.
252
253         * Added backwards support for the wrong NO_SUCH_NICK error sending
254           in server.  To be removed in SILC Server 1.0.  Both old clients
255           and clients with fixed error handling now works.  Affected file
256           silcd/server_query.c.
257
258 Sat Dec 20 00:44:47 CET 2003  Patrik Weiskircher <pat@icore.at>
259
260         * fixed a bug in the whois using attributes function where no
261           error was sent if no nickname and client id but the attributes were
262           given to whois. Affected file silcd/server_query.c
263
264 Tue Dec 16 21:34:59 CET 2003  Patrik Weiskircher <pat@icore.at>
265
266         * remove public key from public key hashtable on detach. Affected
267           file silcd/packet_receive.c
268
269         * free public key hashtable before removing clients on server
270           shutdown. Affected file silcd/server.c
271
272         * remove public key prior deleting client-data on killing a client.
273           Affected file silcd/server_util.c
274
275 Sat Dec 06 21:35:14 CET 2003  Patrik Weiskircher <pat@icore.at>
276
277         * Getting the MOTD from other servers works now. Affected
278           files are silcd/command.c and silcd/command_reply.c
279
280 Thu Dec 04 11:33:46 CET 2003  Jochen Eisinger <jochen@penguin-breeder.org>
281
282         * Initialize the variable idletag, since it is tested in
283           silc_core_deinit for its default value.  Affected file
284           irssi/src/silc/core/silc-core.c
285
286 Sun Nov 30 19:47:02 CET 2003  Patrik Weiskircher <pat@icore.at>
287
288         * Fixed signed channel messages across cells. Affected file
289           silcd/packet_send.c
290
291 Fri Nov 28 19:13:21 EET 2003  Pekka Riikonen <priikone@silcnet.org>
292
293         * Changed the SILC_LOG_* macros to not be empty if SILC_DEBUG
294           is not defined.  They can now be safely used in if-statements
295           without braces.  Affected file lib/silcutil/silclog.h.
296
297         * Added the checks for backup closing connection due to error
298           (local or remote) and thus not allow the resuming to occur
299           in reconnect.  Affected files are silcd/packet_send.c
300           and server.c.
301
302 Tue Nov 25 15:20:59 EET 2003  Pekka Riikonen <priikone@silcnet.org>
303
304         * Help file updates.  Affected files in irssi/src/docs/help/in/.
305
306 Wed Nov 23 20:51:21 CET 2003  Patrik Weiskircher <pat@icore.at>
307
308         * Fixed channel messages across cells. Affected file
309           silcd/packet_send.c
310
311 Wed Nov 12 11:34:56 EET 2003  Pekka Riikonen <priikone@silcnet.org>
312
313         * Fixed file transmission accepting in client library to not
314           start the negotiation if user hasn't accepted the transfer,
315           instead create new session for resent transfer.  Affected
316           file lib/silcclient/client_ftp.c.
317
318         * Show the session ID in the file transmision list.  Remove
319           session from list that failed to transfer.  Switch the current
320           session automatically after transmission, and in errors, to new
321           session if other sessions exists in the transfer list.  Affected
322           files are irssi/src/silc/core/silc-servers.c,
323           irssi/src/fe-common/silc/modfule-formats.c.
324
325 Mon Nov 10 14:41:40 CET 2003  Jochen Eisinger <jochen@penguin-breeder.org>
326
327         * Fixed MIME header parsing for the hopefully last time.  Affected
328           file lib/silcutil/silcstrutil.c
329
330 Mon Nov 10 13:03:46 EET 2003  Pekka Riikonen <priikone@silcnet.org>
331
332         * Rewrote the PKCS#1 routines.  Added lib/silccrypt/silcpkcs1.[ch].
333
334         * The SILC RNG is now gauranteed to return non-zero random
335           values.  Affected files are lib/silccrypt/silcrng.[ch].
336
337 Sun Nov  9 20:44:56 EET 2003  Pekka Riikonen <priikone@silcnet.org>
338
339         * Fixed nickname formatting when changing only case of the
340           nickname.  Affected file lib/silcclient/idlist.c.
341
342 Sun Nov  9 19:33:59 CET 2003  Jochen Eisinger <jochen@penguin-breeder.org>
343
344         * Fixed a memory leak and incorrect printing of the "appears as"
345           message.  Affected file irssi/src/silc/core/client_ops.c
346
347 Sun Nov  9 17:45:11 EET 2003  Pekka Riikonen <priikone@silcnet.org>
348
349         * Added CRT (Chinese Remainder Theorem) supported RSA
350           private keys and private key operations.  This significantly
351           increases private key operation efficiency.  No compatibility
352           issues with new or old private keys.  Affected files are
353           lib/silccrypt/rsa.[ch], rsa_internal.h and pkcs1.c.
354
355 Sat Nov  8 13:08:53 EET 2003  Pekka Riikonen <priikone@silcnet.org>
356
357         * Fixed GCC-3.3.2 related compilation warnings from the
358           source tree.
359
360 Fri Nov  7 23:01:47 EET 2003  Pekka Riikonen <priikone@silcnet.org>
361
362         * Removed RC6 from distributions.
363
364 Fri Nov  7 19:38:42 EET 2003  Pekka Riikonen <priikone@silcnet.org>
365
366         * Added some better comments to lib/silccrypt/silcpkcs.h,
367           optimized some routines in lib/silccrypt/silcpkcs.c.
368           Added test_silcpkcs into lib/silccrypt/tests/.
369
370         * Fixed silc_rng_global_init to actually init the global RNG
371           if RNG wasn't provided for it.  Affected file is
372           lib/silccrypt/silrng.c.
373
374 Thu Nov  6 21:08:28 EET 2003  Pekka Riikonen <priikone@silcnet.org>
375
376         * Added silc_hash_table_find_by_context_ext.  Affected files
377           lib/silcutil/silchashtable.[ch].
378
379         * Save the public key on normal server in WHOIS command reply
380           from attributes, if present, and add it to public key hash
381           table.  Fixes WHOIS resolving by public key on normal server.
382
383           Optimized the attributes resolving on normal server to not
384           resolve if we resolved them already from router.
385
386           Affected files are silcd/server_query.c, command_reply.c.
387
388 Wed Nov  5 19:36:30 CET 2003 Patrik Weiskircher <pat@icore.at>
389
390         * Added support for whois using attributes.
391           Affected files silcd/command_reply.c, silcd/packet_receive.c,
392           silcd/server.c, silcd/server_internal.h, silcd/server_query.c,
393           silcd/server_util.c
394
395         * Added support for whois using public key attribute to /WHOIS i
396           client command. Affected files irssi/docs/help/in/whois.in,
397           irssi/src/silc/core/silc-servers.c, lib/silcclient/command.c
398
399 Wed Nov  5 23:37:36 EET 2003 Pekka Riikonen <priikone@silcnet.org>
400
401         * Fixed UMODE setting in server when the client has anonymous
402           mode set.  The mode setting was not working.  Affected file
403           silcd/command.c.
404
405 Mon Nov  2 11:36:08 CET 2003 Jochen Eisinger <jochen@penguin-breeder.org>
406
407         * Fixed some bugs and typos related to sending split messages.
408           Print notification when sending messages with /MMSG.  Affected
409           files irssi/scripts/silc-mime.pl, irssi/src/silc/core/client_ops.c
410
411 Fri Oct 31 12:33:59 EET 2003 Pekka Riikonen <priikone@silcnet.org>
412
413         * Optimized the socket referencing in packet routines, client
414           library and server.  Affected files are lib/silccore/silcpacket.c,
415           lib/silcclient/client.c and silcd/server.c.
416
417         * If silc_socket_set_qos is given with NULL arguments the QoS is
418           reset from the socket.  Affected files are
419           lib/silcutil/silcsockconn.[ch].
420
421 Thu Oct 30 21:23:24 CET 2003 Jochen Eisinger <jochen@penguin-breeder.org>
422
423         * Add a /LISTKEYS command which lists the locally cached
424           client and server keys.  Affected files
425           irssi/src/fe-common/module-formats.[ch],
426           irssi/src/silc/core/silc-{channels,servers}.c
427           irssi/docs/help/in/listkeys.in
428
429 Thu Oct 30 20:23:40 EET 2003 Pekka Riikonen <priikone@silcnet.org>
430
431         * Check that packet queue purging was successful.  Affected
432           files lib/silcclient/client.c and silcd/packet_send.c.  Related
433           to MAC failed errors.
434
435         * Do not clear the inbuf even if it is empty if QoS was applied
436           to it.  Otherwise the QoS data is cleared and MAC failed error
437           will occur.  Affected file lib/silccore/silcpacket.c.
438
439         * Use the rekey period time as rekey protocol timeout value.
440           If the rekey does not succeed during the rekey period there's
441           something very wrong, and we most likely end up with wrong keys,
442           do graceful reconnect then.   Affected file silcd/server.c.
443
444         * Take reference of the socket in the parser context, as it's
445           possible to have the parsers in queue after the socket is
446           disconnected and this may cause crash.  Affected files are
447           lib/silccore/silcpacket.c, lib/silcclient/client.c and
448           silcd/server.c.
449
450 Thu Oct 30 17:01:01 EET 2003 Pekka Riikonen <priikone@silcnet.org>
451
452         * Fixed KICK command reply sending, it sent to replies.
453           Affected file silcd/command.c.
454
455 Wed Oct 30 14:06:52 CET 2003 Jochen Eisinger <jochen@penguin-breeder.org>
456
457         * Finish the silc-mime.pl script. It now supports MIME type
458           guessing using magic files, signing data messages, executing
459           MIME handlers in background. Affected files
460           irssi/scripts/silc-mime.pl and irssi/docs/help/in/mmsg.in
461
462         * Changed MIME signal handler to make things easier for the perl
463           script. Affected files irssi/src/silc/core/client_ops.c,
464           silc-servers.c, and irssi/docs/signals.txt
465
466         * Cleaned up the silc_mime_parse function and fixed detection
467           of wrapped header lines. Affected file lib/silcutil/silcstrutil.c
468
469 Sun Oct 26 21:19:02 EET 2003 Pekka Riikonen <priikone@silcnet.org>
470
471         * Resolve the IP for file transfer listener from the connection
472           socket.  Affected file lib/silcclient/client_ftp.c.
473
474         * Accept NULL hostname parameter in the functions
475           silc_net_check_[local|remote]_by_socket.  Do not reverse lookup
476           if hostname is not wanted.
477
478 Fri Oct 24 21:24:12 CEST 2003  Jochen Eisinger <jochen@penguin-breeder.org>
479
480         * Fixed race condition between silc_client_init and
481           my_silc_scheduler. Affected file irssi/src/silc/core/silc-core.c
482
483 Fri Oct 24 16:43:40 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
484
485         * Fixed file transfer connection closing when SIGNOFF for
486           the client is received from server.  Affected file is
487           lib/silcclient/client_ftp.c.
488
489 Tue Oct 21 13:35:57 CEST 2003  Pekka Riikonen <priikone@silcnet.org>
490
491         * Check for disconnected socket in QUIT callback.  Affected
492           file silcd/command.c.
493
494 Thu Oct 21 09:43:17 CEST 2003  Jochen Eisinger <jochen@penguin-breeder.org>
495
496         * Modified the MIME parsing to allow \n and \r\n as delimiters.
497           Affected files lib/silcutil/silcstrutil.c
498
499         * Cleaned up the escape/unescape functions for correctness and
500           speed. Affected file irssi/src/silc/core/client_ops.c
501
502         * Removed handling for data messages with Content-Type: text/*,
503           moved parsing of MIME headers to the signal handler, added
504           support for signing and verifying data messages. Affected
505           files are irssi/docs/signals.txt, irssi/src/silc/core/client_ops.c,
506           irssi/src/silc/core/silc-{servers,channels}.c
507
508         * Added a perl script for handling data messages based on
509           information read from Mailcap files. New file
510           irssi/scripts/silc-mime.pl
511
512 Mon Oct 20 16:08:22 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
513
514         * Added new SILC_MESSAGE_FLAG_ACK that can  be used to
515           acknowledge recepetion of a message to the sender.  Updated
516           protocol specs.
517
518 Sat Oct 18 11:55:33 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
519
520         * Unregister channel key saving callback when deleting channel.
521           Affected file lib/silcclient/idlist.c.
522
523         * Do not remove the client from channels in NOTIFY_TYPE_SIGNOFF
524           before calling notify client operation.  Affected file is
525           lib/silcclient/client_notify.c.
526
527         * Unregister QoS tasks when deleting the socket connection.
528           Affected files lib/silcutil/silcsockconn.[ch],
529           unix/silcunixsockconn.c.
530
531         * Implemented latest presence-attrs draft changes.  Affected
532           files lib/silccore/silcattrs.h and
533           irssi/src/silc/core/silc-queries.c.
534
535 Tue Oct 14 18:24:53 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
536
537         * Save old channel keys in list to allow more rapid change
538           of channel keys if server for some reason does that.  This
539           avoids loosing so many channel messages due to not having
540           key to decrypt.  Affected file lib/silcclient/silcclient.h,
541           idlist.c and client_channel.c.
542
543 Mon Oct 13 21:37:47 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
544
545         * Continued backup router tests and fixes.  Affected files
546           silcd/server_backup, server_util.c, server.c.  See TODO.
547
548 Sun Oct 12 19:58:18 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
549
550         * Fixed SERVER_SIGNOFF handling in servers.  The client
551           was removed from wrong list thus not removing the client
552           at all.  Affected file silcd/packet_receive.c.
553
554         * Do not execute rekey protocol for disabled connections as
555           it would never go through.  Affected file silcd/server.c.
556
557         * Added timeout for rekey protocol to catch if the protocol
558           never executes successfully.  Affected files silcd/server.c
559           and protocol.h.
560
561 Sat Oct 11 15:39:22 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
562
563         * Abandon packet processing for disconnected sockets.  Check
564           this always after calling packet processing callback.
565           Affected file lib/silccore/silcpacket.c.
566
567         * Fixed double registration disconnection code in server.
568           Closed wrong connection.  Affected file silcd/packet_receive.c.
569
570 Fri Oct 10 16:27:12 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
571
572         * On normal server reconnect to primary during resuming 4
573           times, then give up.  Affected file silcd/server_backup.c.
574
575         * If during reconnecting to routers we notice we have router
576           connection but no primary router set, the server is in desync.
577           Reconnect to primary to restore network.  Affected file
578           silcd/server.c.
579
580         * Assure that only one protocol is exeucting at the same time.
581           Added checks for all protocols.  Affected files are
582           silcd/server.c and server_backup.c.
583
584 Thu Oct  9 20:24:09 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
585
586         * Check that a string is not already part on invite/ban
587           string when processing it.  Affected file silcd/server_util.c.
588
589 Thu Oct  9 12:06:40 CEST 2003  Pekka Riikonen <priikone@silcnet.org>
590
591         * Fixed the CUMODE_CHANGE for founder mode changes to comply
592           with 1.2 version of the protocol.  Affected file is
593           silcd/packet_receive.c.
594
595 Wed Oct  8 19:41:15 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
596
597         * ERR_BAD_PASSWORD now returns the Channel ID of the channel
598           where the passphrase was given.  Affected file is
599           silcd/command.c.
600
601 Wed Oct  8 09:32:12 CEST 2003  Pekka Riikonen <priikone@silcnet.org>
602
603         * INVITE and BAN notifys are now delivered from routers to
604           servers (but not clients) on the channel.  Updated specs and
605           code.  Affected files silcd/packet_[send|receive].[ch],
606           command.c, server.c and server_util.c.
607
608         * Implemented INVITE and BAN announcing.  Affected files are
609           silcd/server.[ch], server_util.c.
610
611         * Implemented SilcStatus error type argument returning in
612           command reply error in server.  Affected file silcd/command.c.
613
614         * Implemented SilcStatus argument returning in comand reply
615           in client library.  The command_reply client operation now
616           returns error specific arguments as well.  Affected files
617           are lib/silcclient/command_reply.[ch], client_resume.c,
618           lib/silccore/silcstatus.[ch].
619
620 Sun Oct  5 20:22:08 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
621
622         * Backup router protocol version 1.2 implemented.  Testing still
623           required.  Affected files in silcd/server_backup.[ch], server.c,
624           packet_receive.c and server_internal.h.
625
626 Sun Oct  5 12:36:37 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
627
628         * silc_client_send_[channel|private]_message now return TRUE
629           or FALSE.  Affected file lib/silcclien/client_channel.c and
630           client_prvmsg.c.
631
632 Thu Oct  2 17:03:09 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
633
634         * Check for explicit nickname in INVITE and BAN processing
635           during join as well (and don't expect only wildcards in
636           invite/ban strings).  Affected file silcd/command.c.
637
638         * Fixed the INVITE and BAN by public key.  The public key saved
639           is the PK payload (as specified) not the raw data.  Affected
640           file silcd/server_util.c.
641
642 Wed Oct  1 20:29:06 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
643
644         * UTF-8 text message support for actions and notices in SILC
645           Client.  Affected file irssi/src/silc/core/client_ops.c.
646
647         * silc_get_username and silc_get_real_name now returns sensible
648           data on Win32.  Patch by Toni Willberg.  Affected file is
649           lib/silcutil/win32/silcwin32util.c.
650
651 Sun Aug 24 23:35:19 CEST 2003  Jochen Eisinger <c0ffee@penguin-breeder.org>
652
653         * Provide a signal handler to send MIME encoded messages and emit
654           a signal when a MIME encoded message is received. Also document
655           the signals for usage with the perl interface.
656
657           A sample perl script will be supplied at a later point.
658
659           Affected files are irssi/docs/signals.txt,
660           irssi/src/silc/core/client_ops.[ch],
661           irssi/src/silc/core/silc-{channels,servers}.c
662
663 Sun Aug 24 12:58:30 CEST 2003  Jochen Eisinger <c0ffee@penguin-breeder.org>
664
665         * Use SILC_COMMAND_PING to estimate the round-trip time to the
666           server. Use this time to display a lag and disconnect when it
667           exceeds a specified limit.
668
669           Affected files are irssi/src/silc/core/silc-{lag,core}.c.
670
671 Mon Aug 11 17:14:17 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
672
673         * Remove the channel auth list in normal server if router
674           encofrces its list during connecting.  Send notify to channel
675           to remove the mode to remove the list.  Affected files are
676           silcd/server_util.c and silcd/packet_receive.c.
677
678 Wed Aug  6 14:52:04 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
679
680         * Added support for channel public keys.  Updated protocol specs
681           and implemented it.  Affected files are
682           silcd/command.c, command_reply.c, lib/silcclient/command.c,
683           lib/silcclient/command_reply.c.
684
685 Wed Jul 23 12:17:01 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
686
687         * Ignore SIGXFSZ and SIGXCPU signals in server.  They can
688           terminate the process on Linux.  Affected file silcd/silcd.c.
689
690 Mon Jun  2 19:13:27 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
691
692         * Check for NULL buffer in silc_buffer_clear.  Affected file
693           is lib/silcutil/silcbuffer.h.
694
695         * Simplified the backup router protocol by removing the _GLOBAL
696           types.  Updated protocol specs and the code.  Affected files
697           are silcd/server_backup.[ch].
698
699 Thu Apr 24 19:50:25 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
700
701         * Deny '@' and '!' from nicknames since they are reserved
702           by the SILC_COMMAND_INVITE and SILC_COMMAND_BAN commands.
703           Updated protocol specs and the code.
704
705           Affected files are silcd/server_util.[ch].
706
707 Wed Apr  9 18:51:59 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
708
709         * Fixed stack overflow in Irssi SILC client.  Affected
710           file irssi/src/silc/core/client_ops.c.
711
712         * Check that Host is set in ServerConnection and RouterConnection
713           in silcd.conf.  Affected file silcd/serverconfig.c.
714
715         * Fixed crash in server with protocol completion callbacks,
716           namely rekey and backup resuming protocols.  Affected files
717           are silcd/server_backup.c and silcd/server.c.
718
719         * Fixed rekey protocol to not restart if it is started already.
720           Affected files are lib/silcclient/client.c and
721           silcd/server.c.c
722
723 Mon Mar 17 18:35:24 EET 2003  Pekka Riikonen <priikone@silcnet.org>
724
725         * Rewrote SilcList, affected file lib/silcutil/silc*list.h.
726
727         * Fixed EOF handling in SILC Config, affected file
728           lib/silcutil/silcconfig.c.
729
730         * Fixed buffer overflows in lib/silcutil/silcstrutil.c.
731
732         * Fixed RESOLVING flag handling in JOIN notify and other
733           notifys to handle the resolvings correctly in client library.
734           Affected file lib/silcclient/client_notify.c.
735
736         * Do not send full INVITE and BAN lists in INVITE and BAN
737           notifys, only the changed information.  Affected file
738           silcd/command.c.
739
740         * Fixed INVITE notify sending in INVITE command, send it
741           only when needed.  Affected file silcd/command.c.
742
743         * Handle the founder key change properly in CMODE_CHANGE
744           notify.  Bug #122.  Affected file silcd/packet_receive.c.
745
746 Sun Mar  9 16:29:20 EET 2003  Pekka Riikonen <priikone@silcnet.org>
747
748         * Remove the mark for output (mark it only for input) after
749           purging outgoing queue.  Prevents the "Error in select()"
750           floods.  Affected file silcd/packet_send.c.
751
752         * Fixed incorrect connection deletion from client library
753           after calling "connect" client operation.  Could cause
754           crashes for example during reconnect timeouts.  Affected
755           files are lib/silcclient/client.c and
756           irssi/src/silc/core/client_ops.c.
757
758         * Check server private key file permissions before starting
759           the server.  Affected file silcd/serverconfig.c.
760
761 Tue Feb  4 22:53:26 EET 2003  Pekka Riikonen <priikone@silcnet.org>
762
763         * NULL terminate allocated string in silc_buffer_strformat.
764           Affected file lib/silcutil/silcbuffmt.c.
765
766         * Rewrote the invite/ban list string handling in server to
767           use SilcBuffer instead.  Affected files are silcd/command.c
768           and silcd/server_util.c.
769
770 Mon Feb  3 14:43:52 CET 2003  Pekka Riikonen <priikone@silcnet.org>
771
772         * Fixed double free in CMODE command when setting new HMAC
773           for channel.  Affected file silcd/command.c.
774
775         * Added couple of missing memset's to zero sensitive memory.
776           Affected files silcd/command.c, lib/silcclient/command.c.
777
778 Sun Jan 26 12:20:30 EET 2003  Pekka Riikonen <priikone@silcnet.org>
779
780         * Fixed a double free in INVITE command error handling in
781           server.  Affected file silcd/command.c.
782
783         * Added macros SILC_SWAB_[16|32] to swab byte order of
784           16-bit and 32-bit unsigned integers.  Affected file
785           lib/silcutil/silctypes.h.
786
787         * Use the SILC_SWAB_16 instead of htons() in server when
788           handling ports since the ports in structures are always
789           in little-endian order (regardless of platform).  Affected
790           file silcd/serverid.c and silcd/server_backup.c.
791
792 Tue Jan 21 17:18:04 EET 2003  Pekka Riikonen <priikone@silcnet.org>
793
794         * Send DISCONNECT in close admin command in server.  Affected
795           file silcd/command.c.
796
797         * Check whether we are already connecting to a remote router
798           (in addition of checking whether we are already connected)
799           before creating new connection.  Affected file silcd/server.c.
800
801 Thu Jan 16 18:47:00 EET 2003  Pekka Riikonen <priikone@silcnet.org>
802
803         * Added better compiler and compiler flags checking in
804           configure.
805
806         * Check that socket is valid after QoS is applied to data.
807           Affected file lib/silcutil/unix/silcunixsockconn.c.
808
809         * Make sure the socket connecetion is not closed to early
810           when closing connection in server.  Also make sure the
811           connection is always closed after error in a protocol.
812           Affected file silcd/server.c.
813
814 Wed Jan 15 11:03:36 CET 2003  Pekka Riikonen <priikone@silcnet.org>
815
816         * Removed --session and --dummy options from Irssi SILC Client.
817           -d option is available only if --enable-debug was given.
818           Affected files are irssi/src/silc/core/silc-core,
819           irssi/src/core/session.c and irssi/src/fe-text/silc.c.
820
821 Tue Jan 14 12:25:09 CET 2003  Pekka Riikonen <priikone@silcnet.org>
822
823         * Added silc_buffer_steal to steal the data from the buffer.
824           Affected file lib/silcutil/silcbuffer.h.
825
826 Sat Jan 11 18:16:29 CET 2003  Giovanni Giacobbi <giovanni@giacobbi.net>
827
828         * Fixed server crash with double Primary block in config file.
829
830           Fixed also various memory leaks around the config file
831           parser.  Affected files lib/silcutil/silcconfig.c,
832           silcd/serverconfig.c.
833
834         * Changed my nickname (Johnny Mnemonic) to my real name, this
835           means that bugs introduced by him were actually introduced
836           by me!
837
838 Tue Jan  7 21:58:53 CET 2003  Jochen Eisinger <c0ffee@penguin-breeder.org>
839
840         * Don't display "foo appears as foo\nYou're now known as foo"
841           messages.  Affected file irssi/src/silc/core/client_ops.c
842
843 Tue Jan  7 20:08:15 EET 2003  Pekka Riikonen <priikone@silcnet.org>
844
845         * Fixed error handling of invalid client entry when calling
846           commands in server.  Fixes a crash.  Affected file
847           silcd/command.c.
848
849 Thu Dec 26 14:19:29 EET 2002  Pekka Riikonen <priikone@silcnet.org>
850
851         * Added some sanity checks in server for correctness of the
852           server configuration.  Affected file silcd/serverconfig.c.
853
854 Fri Dec 20 10:47:59 CET 2002  Pekka Riikonen <priikone@silcnet.org>
855
856         * Prevent endless resolving of user informations in USERS
857           command by checking the command reply status correctly.
858           Affected file lib/silcclient/command_reply.c.
859
860 Tue Dec 17 10:05:00 CET 2002  Pekka Riikonen <priikone@silcnet.org>
861
862         * Fixed file writing on WIN32 to use O_BINARY flag.  Affected
863           file is lib/silcutil/silcfileutil.c.  A patch by Matthew
864           Aldous <Matthew@Aldous.com>.
865
866         * Added better implementation using CriticalSection of
867           SilcMutex on WIN32.  A patch by Mikko Lähteenmäki
868           <mikko.lahteenmaki@pikabaana.net>.
869
870         * Added some Winsock WIN32 compatiblity defines into
871           includes/silcwin32.h.
872
873 Mon Dec 16 19:33:05 EET 2002  Pekka Riikonen <priikone@silcnet.org>
874
875         * Fixed double free in async host lookup code.  Affected file
876           lib/silcutil/silcsockconn.c.
877
878         * On backup router handle now the SERVER_SIGNOFF from router
879           for local connected servers too, and close the connections.
880
881           Do not process them as normally signing off servers when they
882           really signoff by sending EOF fe, but always assume that
883           router sends the SERVER_SIGNOFF.
884
885           Affected files silcd/server.c and silcd/packet_receive.c.
886
887         * Fixed socket unsetting when closing connections.  Affected
888           files silcd/server.c and silcd/packet_send.c.
889
890         * Do not print the nickname in SERVER_SIGNOFF if we do not
891           have it.  Prevents asserts in Irssi core.  It is possible we
892           don't have the nick if it was just being resolved when server
893           signoff.  Affected file irssi/src/silc/core/client_ops.c.
894
895 Thu Dec 12 23:22:50 EET 2002  Pekka Riikonen <priikone@silcnet.org>
896
897         * Fixed autonick crashbug in client library.  Affected file
898           lib/silcclient/client.c.
899
900         * Fixed Unix implementation of SilcMutex to really assert if
901           the mutex is locked/unlcoked already.  Affected file
902           lib/silcutil/unix/silcunixmutex.c.
903
904         * Fixed locking in silc_schedule_uninit.  It didn't lock
905           when dispatching timeout tasks.  Affected file is
906           lib/silcutil/silcschedule.c.
907
908         * Changed Win32 implementation of SilcThread to use modern
909           Win32 interface.  Affected file is
910           lib/silcutil/win32/silcwin32thread.c  A patch by Mikko L.
911
912 Thu Dec 12 12:06:59 CET 2002 Jochen Eisinger <c0ffee@penguin-breeder.org>
913
914         * Don't print signed messages when sending failed.  Affected files
915           irssi/src/silc/core/silc-[servers.c/commands.h]
916
917         * Send adquate signal when founding a channel by joing it.  Affect
918           file irssi/src/silc/core/client_ops.c
919
920 Wed Dec 11 21:46:19 CET 2002 Jochen Eisinger <c0ffee@penguin-breeder.org>
921
922         * Fix theme abstracts parsing.  Affected files irssi/default.theme,
923           irssi/src/fe-common/core/themes.c
924
925 Wed Dec 11 20:20:07 EET 2002 Pekka Riikonen <priikone@silcnet.org>
926
927         * Fixed close command to use the port correctly when closing
928           server connections.  Affected file silcd/idlist.c.
929
930         * Check for NULL outbuf in silc_socket_write.  It is possible
931           that it is NULL is some odd case.  Affected files are
932           lib/silcutil/[unix/win32]/silc[unix/win32]sockconn.c.
933
934         * Do not call final protocol callback for backup router
935           resuming protocol when closing connection.  It is closed
936           by timeout in case of error.  Affected file silcd/server.c.
937
938         * Backup reconnect to router if backup resuming protocol
939           failed.  Affected file silcd/server_backup.c.
940
941 Wed Dec 11 10:01:26 CET 2002 Pekka Riikonen <priikone@silcnet.org>
942
943         * Fixed double free in SKE library error hadling when signature
944           error occurred.  Affected file lib/silcske/silcske.c.
945
946         * Save the fingerprint to new SilcClientEntry after changing
947           nickname.  Affected file lib/silcclient/client_notify.c.
948
949         * Print SIGNOFF in Irssi SILC client only if the nickname is
950           known.  Prevents asserts in Irssi core.  It is possible we
951           don't have the nick if it was just being resolved when it
952           quit.  Affected file irssi/src/silc/core/client_ops.c.
953
954 Tue Dec 10 21:47:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
955
956         * Fixed double free in invite list adding code when adding
957           invite strings.  Affected file silcd/server_util.c.
958
959 Fri Dec  6 17:40:24 EET 2002  Pekka Riikonen <priikone@silcnet.org>
960
961         * More log printing during backup router protocol.  Affected
962           file silcd/server_backup.c.
963
964         * Removed backwards support for old private key file format.
965           Affected file lib/silccrypt/silcpkcs.c.
966
967         * Removed backwards support for not-so-strict decryption length
968           check, it's strict now.  Affected lib/silccrypt/silccipher.c.
969
970         * GETKEY to update the client entrys fingerprint too.
971           Affected file lib/silcclient/command_reply.c.
972
973         * Added --without-libtoolfix for package builders using weird
974           wrappers around libtool (BSD at least).
975
976 Thu Dec  5 22:29:46 EET 2002  Pekka Riikonen <priikone@silcnet.org>
977
978         * Fixed backup router bugs:  When backup resumes router and
979           receives a CHANNEL_MESSAGE packet the backup must not act
980           as router since the packet header decryption would be
981           different.  Also, when relaying packets to channel, do
982           not re-encrypt packets on backup that came from the primary
983           since the connection isn't really router-router connection.
984           Affected files silcd/server.c, silcd/packet_send.c.
985
986         * Added checks in encryption/decryption that encryption/decryption
987           length sent as argument really is multiple by block size.  Helps
988           catching really weird bugs like the above backup router bugs
989           when packets are being decrypted in wrong way.  Affected files
990           lib/silccore/silcpacket.c, and lib/silccrypt/silccipher.c.
991
992         * Fixed padding generation in private key file encryption.
993           Affected file lib/silccrypt/silcpkcs.c.
994
995 Thu Dec  5 16:35:23 EET 2002  Pekka Riikonen <priikone@silcnet.org>
996
997         * Added ignore_message_signatures setting which can be used
998           to ignore signatures in messages.  Affected files are
999           irssi/src/silc/core/client_ops.c, silc-core.c.
1000
1001         * Fixed the libtoolfix to use command line options instead of
1002           environment variables.  They didn't work as expected.  Now,
1003           the libtool is fully run-time configurable.
1004
1005 Wed Dec  4 21:08:52 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
1006
1007         * Verify signature payload for signed messages. Affected files
1008           irssi/src/silc/core/client_ops.h, irssi/src/silc/core/silc-servers.c,
1009           irssi/src/silc/core/silc-core.h
1010
1011         * Display signature verification result in public and private
1012           messages using theme abstracts. See irssi/default.theme for
1013           examples on their usage. Affected files
1014           irssi/default.theme, irssi/src/fe-common/silc/fe-messages.h,
1015           irssi/src/fe-common/silc/module-formats.[ch],
1016           irssi/src/fe-common/silc/fe-common-silc.c,
1017           irssi/src/fe-common/silc/Makefile.am
1018           irssi/src/fe-common/core/fe-messages.[ch]
1019
1020         * Fixed bugs in Irssi's theme parsing. Affected files
1021           irssi/src/fe-common/core/themes.c
1022
1023 Wed Dec  4 18:29:13 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1024
1025         * Calculate the correct length for signed messages before
1026           encrypting, it must be multiple by block size.  Affected
1027           file lib/silccore/silcmessage.c.
1028
1029         * silc_message_signed_get_public_key returns now both
1030           decoded and encoded public key.  Affected files are
1031           lib/silccore/silcmessage.[ch].
1032
1033         * Added libtoolfix script that makes the libtool more generic
1034           and configurable in run-time.  Now we can specify in run-time
1035           if what kind of libraries we want to create, regardless of
1036           configuration.  SIMs are now creates even if --disable-shared
1037           was explicitly given.
1038
1039 Tue Dec  3 23:26:55 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1040
1041         * Fixed founder key sending in CMODE command in client.
1042           Affected file lib/silcclient/command.c.
1043
1044         * Fixed CUMODE founder authentication in server to not check
1045           for client's public key since it's not supposed to do that.
1046           Affected file silcd/command.c.
1047
1048 Tue Dec  3 12:02:41 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
1049
1050         * Set realname and hostname in NICK_REC records. Affected file
1051           irssi/src/silc/core/silc-nicklist.c
1052
1053 Mon Dec  2 20:50:20 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1054
1055         * Remove 1.0 protocol backwards compat code from client
1056           library.
1057
1058         * Added more reliable check for whether nickname did change
1059           or not, or whether only Client ID changed in NICK_CHANGE
1060           notify.  Affected file lib/silcclient/client_notify.c.
1061           Fixes bug in '@' character handling in a nickname.
1062
1063         * Added support for automatically parsing signature from
1064           the message payload.  Added new function
1065           silc_message_get_signature to return the payload to
1066           application.  Affected files lib/silccore/silcmessage.[ch].
1067
1068         * Changed the private_message and channel_message client
1069           operations to deliver the SilcMessagePayload to the
1070           application too.  Application can use it fe. to get the
1071           signature from the message for verification.  Affected
1072           file lib/silcclient/silcclient.h, client_channel.c and
1073           client_prvmsg.c.
1074
1075         * Redefined the signed payload for message payloads.
1076           Updated protocol specs and implemented.
1077
1078 Mon Dec  2 16:28:29 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1079
1080         * Fixed wrong invite and ban list handling in server command
1081           reply.  Affected files are silcd/command_reply.c,
1082           silcd/server_util.[ch].
1083
1084 Sun Dec  1 20:48:17 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1085
1086         * Fixed CMODE setting in server when founder mode was set.
1087           Affected file silcd/command.c.  Bug #95.
1088
1089         * Added support to setting specific public key in CMODE in
1090           Irssi SILC client.  Affected file lib/silcclient/command.c.
1091
1092         * Added support to use specific public key in CUMODE in
1093           Irssi SILC Client.  Affected file lib/silcclient/command.c.
1094
1095         * Added support for inviting and banning by public key in
1096           Irssi SILC client.  Affected file lib/silcclient/command.c.
1097
1098         * Fixed fingerprint/babbleprint showing in invite and ban
1099           list command replys.  Affected file is
1100           irssi/src/silc/core/client_ops.c.
1101
1102 Sun Dec  1 16:32:03 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
1103
1104         * Format CMODE +c and +h to display both the mode and the argument
1105
1106 Sun Dec  1 18:17:22 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1107
1108         * Added test vectors and test programs for SHA-1, MD5,
1109           HMAC-SHA1 and HMAC-MD5.  New tests are located in
1110           lib/silccrypt/tests/.  Fixed also argument decoding bug in
1111           MD5 implementation.  Affected file lib/silccrypt/md5.c.
1112
1113         * Changed the channel private key and private message key
1114           generation (with static keys) to use SHA1 instead of MD5,
1115           as SHA1 is the mandatory hash function in SILC.  Affected
1116           file lib/silcclient/client_[channel/prvmsg].c.
1117
1118         * Changed the private key file encryption to use SHA1 instead
1119           of MD5.  Added support for the old generation and added
1120           automatic change of the key (to be removed later).  Affected
1121           files lib/silccrypt/silcpkcs.c.
1122
1123 Sat Nov 30 19:07:52 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1124
1125         * Load only files with .pub suffix in PublicKeyDir.  Affected
1126           file silcd/serverconfig.c.
1127
1128 Sat Nov 30 14:29:34 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
1129
1130         * Extended the SILC_SERVER_LOG_ERROR macro to all available logging
1131           channels.  Affected files silcd/silcd.c, silcd/server.h.
1132
1133         * Added the config directive PublicKeyDir for the client block.
1134           Affected files doc/exampe_silcd.conf.in, silcd/serverconfig.[ch].
1135
1136 Sat Nov 30 09:30:55 CET 2002  Pekka Riikonen <priikone@silcnet.org>
1137
1138         * Merged Toni's irssi/silc.conf patch.
1139
1140         * ROBODoc cleanup patch to lib/silccrypt/silcpkcs.h by johnny.
1141
1142         * Max alloc tests in allocation routines.  Affected file
1143           lib/silcutil/silcmemory.c.
1144
1145 Fri Nov 29 23:44:29 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1146
1147         * Fixed a typo in resuming code that fixed detach/resume code
1148           in server.  Bug #93.  Affected file silcd/packet_receive.c.
1149
1150 Thu Nov 28 17:17:11 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
1151
1152         * Do reverse lookups for server when /connecting. Affected files
1153           irssi/silc.conf, irssi/src/core/servers.c, irssi/src/core/network.c,
1154           irssi/src/core/net-nonblock.*
1155
1156 Thu Nov 28 16:19:18 CET 2002  Pekka Riikonen <priikone@silcnet.org>
1157
1158         * Added library versioning for shared libraries.  Affected
1159           files configure.in.pre and lib/Makefile.am.pre.
1160
1161 Wed Nov 27 21:51:52 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
1162
1163         * Display INVITE and BAN lists as specified by SILC 1.2
1164
1165 Wed Nov 27 16:01:11 CET 2002  Pekka Riikonen <priikone@silcnet.org>
1166
1167         * Do not send invite list back unless asked (when sending
1168           no arguments) or when list was modified.  Affected file
1169           silcd/command.c.
1170
1171         * Remove client from invite list in KILLED notify and in
1172           KILL command.  Affected file silcd/command.c and
1173           silcd/server.[ch].
1174
1175         * Fixed bugs in invite list handling in INVITE command.
1176           Affected files silcd/command.c and silcd/server_util.c.
1177
1178         * Merged with Irssi 0.8.6.
1179
1180         * Fixed UTF-8 in Irssi SILC Client, setlocale was missing.
1181           Affected file irssi/src/fe-text/silc.c.
1182
1183 Mon Nov 25 18:21:43 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1184
1185         * The silc_argument_get_[first/next] now return the argument
1186           type to caller.  Added silc_argument_payload_encode_one.
1187
1188           Affected files are lib/silccore/silcargument.[ch].
1189
1190         * Added support for the SILC 1.2 INVITE command and new
1191           invite lists to server.  Affected files are silcd/command.c,
1192           silcd/server_util.[ch] and silcd/packet_[receive/send].[ch].
1193
1194         * Added support for the SILC 1.2 BAN command and new
1195           ban lists to server.  Affected files are silcd/command.c,
1196           silcd/server_util.[ch] and silcd/packet_[receive/send].[ch].
1197
1198         * Added support to client sending new INVITE command.  Affected
1199           file is lib/silcclient/command.c.
1200
1201         * Added support to client sending new BAN command.  Affected
1202           file is lib/silcclient/command.c.
1203
1204         * Added support for removing client from invite list when kicked
1205           from channel, as SILC 1.2 dictates.  Affected files are
1206           silcd/packet_receive.c and silcd/command.c.
1207
1208 Sun Nov 24 18:26:42 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1209
1210         * If iv argument to silc_cipher_[encrypt/decrypt] is NULL, use
1211           automatically the cipher's internal IV.  Affected files
1212           lib/silccrypt/silccipher.[ch].
1213
1214         * Assure the RESUME_CLIENT packet is not sent to twice to
1215           backup router if the detached client was originated from
1216           the backup.  Affected file silcd/server.c.  Bug #76.
1217
1218         * Changed silc_sim_symname to not allocate memory.  Affected
1219           file lib/silcsim/silcsimutil.c.
1220
1221         * Fixed memory leaks with SIMs in server.  Affected files
1222           silcd/serverconfig.c, silcd/server.c.
1223
1224         * Fixed channel key distribution after resuming detached
1225           client.  Affected files silcd/packet_receive.c.
1226
1227         * Fixed channel's global_user boolean checking after detaching.
1228           Check it after changing the owner of the client not before.
1229           Affected file silcd/packet_receive.c.
1230
1231         * Fixed few double frees from client library.  Fixes at least
1232           Bug #81, possibly others too.
1233
1234         * UTF-8 decode topics also in JOIN command reply and TOPIC_SET
1235           notifys in Irssi SILC Client.  Affected file is
1236           irssi/src/silc/core/client_ops.c.  Bug #82.
1237
1238         * Applied Ville Räsänen's manual page and --mandir bugfix
1239           patch.  Affected files are configure.in.pre and Makefile.am.pre.
1240           Bug #88.
1241
1242 Fri Nov 22 18:34:20 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1243
1244         * Added support to backup router protocol for backup to tell
1245           normal server that it cannot use the backup router as primary
1246           because the primary isn't really down.  Updated protocol
1247           specs.
1248
1249         * Added support for primary router to tell backup router that
1250           resuming is not possible because the backup really isn't primary
1251           in the cell.  For example if backup disconnected itself the
1252           resuming is not allowed since the primary really did not
1253           go down.  Updated protocol specs.
1254
1255         * Removed MARS from crypto library.
1256
1257         * Defined the CTR mode and Randomized CBC mode in SILC.  The
1258           CTR mode is RECOMMENDED now in specification.  Defined also
1259           Serpent cipher as optional cipher.  Updated the protocol specs.
1260
1261 Thu Nov 21 12:43:28 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1262
1263         * Added support for inviting/banning by IP/MASK, public key,
1264           and explicit Client ID.  Redefined the command and notify
1265           types to allow easier forwards support for other methods
1266           of inviting/banning.  Updated protocol specs.
1267
1268         * Remove the client from channel's invite lists if the client
1269           is kicked or killed.  Updated protocol specs.
1270
1271         * Unified the Channel Message Payload and Private Message
1272           into one Message Payload.  Updated protocol specs and
1273           implemented.
1274
1275 Tue Nov 19 22:30:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1276
1277         * Don't wait for EOF after socket error has occurred, but
1278           close the connection.  Affected file is silcd/server.c.
1279
1280 Mon Nov 18 18:58:26 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1281
1282         * Added support for setting FOUNDER mode on channel with
1283           specific public key which can be set with CMODE command.
1284           Updated protocol specs and implemented in client and server.
1285
1286         * Fixed the Irssi SILC client to correctly shutdown the client
1287           library to avoid memory leaks.  Affected files are
1288           irssi/src/silc/core/silc-core.c and silc-servers.c.
1289
1290         * Deprecated the No Reply flag in SKE protocol and introduced
1291           "IV Included" flag which can be used to indicate that the IV
1292           is included in the ciphertext.  This makes it possible to use
1293           SILC on unreliable transport, such as UDP which may cause
1294           packet reordering and losses.  Updated protocol specs, did
1295           not implement yet.
1296
1297 Sun Nov 17 15:50:57 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1298
1299         * Fixed the MPI implementation of silc_mp_sizeinbase to return
1300           < 32 bit values in correct size.  Affected file is
1301           lib/silcmath/mp_mpi.c.
1302
1303 Sat Nov 16 13:14:45 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1304
1305         * Fixed the KE Start Payload parsing to check that mandatory
1306           fields are present.  Affected file lib/silcske/payload.c.
1307
1308         * Fixed compilation warnigs in Irssi SILC Client.  Affected
1309           files are irssi/src/silc/core/silc-query.c. client_ops.c.
1310
1311 Thu Nov 14 19:33:28 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
1312
1313         * Print "nick now appears as newnick" and update Irssi's nicklist
1314           when you change your nick to "nick". Closes #62
1315
1316         * Never format your own nick. Closes #63
1317
1318 Thu Nov 14 09:44:54 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
1319
1320         * SILC_UMODE_GONE changes are now propagated correctly to the
1321           Irssi client. Closes #54
1322
1323 Tue Nov 12 19:42:18 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
1324
1325         * Fixed example in /HELP KEY
1326
1327         * Added expando $j which expands to current SILC Client version
1328
1329 Tue Nov 12 19:46:39 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1330
1331         * Fixed public key decoding in crypto library.
1332
1333         * Added better error printing to SKE library.
1334
1335 Tue Nov 12 08:50:12 CET 2002  Pekka Riikonen <priikone@silcnet.org>
1336
1337         * Fixed NICK command to not crash if nickname was not sent.
1338
1339 Mon Nov 11 19:32:00 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1340
1341         * Added Encrypt-Then-MAC order to SILC packet MAC generation.
1342           Deprecated the old Encrypt-And-MAC order.  Updated protocol
1343           specs and implemented.
1344
1345         * Added Encrypt-Then-MAC order to Channel Message Payload MAC
1346           generation.  Updated specs and implemented.
1347
1348 Sun Nov 10 12:20:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1349
1350         * Added support for rekey before 2^32 sequence number wraps.
1351           Affected files in server and client library.
1352
1353         * Padding must be at least 8 bytes now.  Implemented and updated
1354           protocol specs.
1355
1356         * Compute maximum padding for authentication packets to make
1357           passphrase approximation attacks impossible.  Affected files
1358           in client library and in server.
1359
1360         * Fixed PING command sending in client library and handling in
1361           server.  The server ID must be ID Payload, not raw ID data.
1362           Affected files in server and client library.
1363
1364         * Defined that all public keys sent in commands and notify
1365           payloads are actually Public Key Payloads not raw public key
1366           data.  Updated protocol specs and implemented.
1367
1368         * Updated protocol version to 1.2.  Updated specs and code.
1369
1370         * Added ERR_UNSUPPORTED_PUBLIC_KEY and ERR_OPERATION_ALLOWED
1371           status types.  Updated specs and the code.
1372
1373         * Added support for normal client to kill its own entries from
1374           the network.  Updated protocol specs and the code.
1375
1376         * Defined the SILC_MESSAGE_FLAG_SIGNED.  Updated protocol specs
1377           and added initial implementation.
1378
1379         * Added MAC field to the Private Message Payload to protect
1380           against chosen ciphertext attacks.  Updated the protocol specs
1381           and implemented.
1382
1383         * Added idle and signon fields to the ATTRIBUTE_SERVICE
1384           attribute to indicate the user's current idle and signon time
1385           of a service.  Updated protocol specs and implemented.
1386
1387 Thu Nov  7 19:21:10 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1388
1389         * Added "do_not_bind" argument to silc_client_file_send what
1390           can be used to not bind locally but assume the file receiver
1391           provides the point of connect.  Usefull when sender is behind
1392           NAT device.  Affected file lib/silcclient/silcclient.h and
1393           client_ftp.c.
1394
1395         * Added -no-listener option to FILE SEND command in Irssi SILC
1396           client.  Affected file irssi/src/silc/core/silc-servers.c.
1397           Renamed FILE RECEIVE to FILE ACCEPT.
1398
1399         * Confirm passphrase for private key encryption in
1400           silc_create_key_pair and silc_change_private_key_passphrase.
1401           Affected files are lib/silcutil/silcapputil.c.
1402
1403 Thu Nov  7 10:05:28 CET 2002  Pekka Riikonen <priikone@silcnet.org>
1404
1405         * Move silc_client_packet_send back to internal, added
1406           silc_client_send_packet, a bit simpler function for application.
1407           Affected files lib/silcclient/silcclient.h, client.c and
1408           client_internal.h.
1409
1410         * Moved the SilcClientEntry, SilcChannelEntry and
1411           SilcServerEntry to silcclient.h to be public and documented
1412           them for application.  Affected files are
1413           lib/silcclient/silcclient.h and idlist.h.
1414
1415 Wed Nov  6 17:18:13 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1416
1417         * Fixed manual page installation patch by Ville Räsänen.
1418           USERS help page fix patch by Ville Räsänen
1419
1420         * Changed the silc_client_command_call interface to make
1421           the command call simpler for the application.  The library
1422           now handles the command line parsing, command finding and
1423           execution.  Application only needs to call the function
1424           with the command line.  Affected files are
1425           lib/silcclient/silcclient.h, command.[ch].
1426
1427         * Fixed silc_get_input to NULL-terminate the returned input.
1428           Affected file lib/silcutil/silcutil.c.
1429
1430         * Resolve the client's public key in JOIN command if the
1431           founder auth data is being requested but we don't know the
1432           client's public key.  Affected file silcd/command.c.
1433           Bug #53.
1434
1435 Mon Nov  4 16:02:59 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1436
1437         * Print notify for server opers when backup router comes
1438           online.  Affected file silcd/server.c.
1439
1440         * Fixed the INVITE command to send the invite list in
1441           command reply.  Affected file silcd/command_reply.c.
1442
1443         * Fixed MOTD command reply sending.  Affected file
1444           silcd/command.c.
1445
1446         * UTF-8 decode the topic in TOPIC command reply and LIST
1447           command reply in Irssi SILC client.  Affected file is
1448           irssi/src/silc/core/client_ops.c.
1449
1450 Sun Nov  3 17:59:15 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1451
1452         * Fixed the INVITE command to not crash Irssi SILC client
1453           when given without nickname argument.  AFfected file
1454           irssi/src/silc/core/client_ops.c.
1455
1456         * Fixed double free in WHOIS query on normal server when
1457           forwarding query to router.  Affected file is
1458           silcd/server_query.c.
1459
1460         * Fixed WATCH command reply handling on normal server which
1461           was missing altogether.  Affected file silcd/command_reply.c.
1462           Bug #44.
1463
1464 Sun Nov  3 00:42:05 EET 2002  Mika Boström <bostik@lut.fi>
1465
1466         * Added man-pages for silc(1), silcd(8) and silcd.conf(5).
1467           Included yodl sources for each of these. Also modified
1468           Makefile.am prototype to install these files to proper
1469           locations. Updated CREDITS. Affected file Makefile.am.pre,
1470           new files doc/*.yo, doc/silc.1, doc/silcd.conf.5,
1471           doc/silcd.8.
1472
1473 Sat Nov  2 21:26:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1474
1475         * Added support for encrypted private key files.  Now
1476           passphrase must be provided when new key pair is created
1477           (can be empty though), and prompted when loading the
1478           private key.  Added support for loading the old-style
1479           non-encrypted private keys as well.  Affected files
1480           lib/silccrypt/silcpkcs.[ch], Irssi SILC client and
1481           SILC Server.
1482
1483         * Fixed silc_get_input to accept input on all terminals.
1484           Affected file lib/silcutil/silcutil.c.
1485
1486         * Moved the Irssi SILC client key loading and other stuff
1487           to be called after the arguments and UI is initialized.
1488           Affected file irssi/src/silc/core/silc-core.c.  Bug #31.
1489
1490         * Added -P option to Irssi SILC client which can be used
1491           to change the passphrase of the private key.  Affected
1492           file irssi/src/silc/core/silc-core.c.
1493
1494         * Added silc_change_private_key_passphrase apputil routine
1495           to lib/silcutil/silcapputil.[ch].
1496
1497 Sat Nov  2 12:53:09 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1498
1499         * Fixed connection closing in client library to not crash.
1500           Moved the connection freeing totally to function
1501           silc_clinet_del_connection.  Affected file
1502           lib/silcclinet/client.c.
1503
1504 Fri Nov  1 18:57:02 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1505
1506         * Changed includes/silcincludes.h to silcincludes.h.in to
1507           include configuration specific information.  The silcdefs.h
1508           is not included in to installation anymore (it's only
1509           compilation time header).
1510
1511 Fri Nov  1 10:30:26 CET 2002  Pekka Riikonen <priikone@silcnet.org>
1512
1513         * Moved the SilcClient and SilcClientConnection from client.h
1514           to the public lib/silcclient/silcclient.h.  Changed the
1515           structures a bit.
1516
1517 Thu Oct 31 22:44:07 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1518
1519         * If version string in silc_clinet_alloc is NULL the library
1520           puts it automatically.  Affected file lib/silcclient/client.c.
1521
1522         * Changed the version strings from variables to #define's
1523           in includes/silcversion.h.
1524
1525 Wed Oct 30 16:17:30 CET 2002  Pekka Riikonen <priikone@silcnet.org>
1526
1527         * Added shared library complation support.
1528
1529 Tue Oct 29 21:48:55 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1530
1531         * Added lib/silcutil/silcapputil.[ch] for application
1532           utility functions.  It includes routines for applications'
1533           convenience.  Added silc_create_key_pair, silc_show_public_key
1534           and silc_load_key_pair functions.
1535
1536 Tue Oct 29 17:36:44 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1537
1538         * Send RESUME_CLIENT packet from router to backup routers
1539           to in resuming.  Affected file silcd/packet_receive.c.
1540
1541 Mon Oct 28 21:23:39 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1542
1543         * In IDENTIFY command parsing, send all other IDs except
1544           Client IDs explicitly to router for resolving on normal
1545           server.  Also check that ID received in WHOIS command is
1546           always Client ID, others are not allowed.  Affected file
1547           silcd/server_query.c.
1548
1549         * Merged latest changes from irssi.org CVS.
1550
1551 Sun Oct 27 11:44:32 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1552
1553         * Merged c0ffee's /set heartbeat patch to Irssi SILC client.
1554           Affected files irssi/src/silc/core/silc-core, silc-server.c.
1555
1556         * Fixed the heartbeat sending in Irssi SILC client.  Moved
1557           the silc_client_packet_send to silcclient.h for application
1558           usage.  Affected files lib/silcclient/client_internal.h
1559           lib/silcclient/silcclient.h.
1560
1561         * Fixed a bug in query resolving in server.  Used wrong
1562           variable in a for loop and crashed.  Affected file is
1563           silcd/server_query.c.
1564
1565         * Server constructs requested attributes only to locally
1566           connected clients.  Affected file silcd/server_query.c.
1567           Bug #36.
1568
1569         * Fixed a bug when sending resolving from router to server
1570           with requested attributes.  The constructed WHOIS command
1571           was incorrect.  Affected file silcd/server_query.c.
1572           Bug #38.
1573
1574         * Fixed Requested Attributes saving in WHOIS command reply.
1575           The length of the data buffer must be saved too.  Affected
1576           file silcd/command_reply.c.
1577
1578         * Update the client entry's servername after detaching is
1579           over.  Affected file silcd/packet_receive.c.  Bug #37.
1580
1581         * Resolve incomplete client entrys in CUMODE_CHANGE and
1582           CMODE_CHANGE notifys.  Affected file is
1583           lib/silcclient/client_notify.c.  Bug #42.
1584
1585 Thu Oct 24 12:22:35 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1586
1587         * Fixed channel key packet processing bug on backup router
1588           during backup resuming protocol.  Affected file is
1589           silcd/packet_receive.c.
1590
1591         * Fixed memory leaks in server.  Affected files are
1592           silcd/server.c and silcd/packet_receive.c.
1593
1594         * Fixed packet decryption problem when backup router encrypted
1595           channel message with wrong key during backup resuming
1596           protocol.  Affected file silcd/packet_send.c.
1597
1598         * ROBODoc documented lib/silccrypt/silccipher.h.  A patch by
1599           Toni Willberg (toniw@iki.fi)
1600
1601         * Changed the SilcCipher context to be private.  Changed the
1602           silc_cipher_get_iv to just return pointer to the IV.  Added
1603           silc_cipher_get_name to return the name of the cipher.
1604           Fixed code all around to support these changes.  Affected
1605           files are lib/silccrypt/silccipher.[ch], client library and
1606           server.
1607
1608 Wed Oct 23 19:01:41 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1609
1610         * Fixed unaligned access in lib/silccore/silcattrs.c.
1611
1612         * Fixed libtool linking in lib/silcsim/Makefile.am.
1613
1614         * Fixed services attribute printing.  Affected files is
1615           irssi/src/silc/core/silc-queries.c.
1616
1617 Wed Oct 23 09:51:04 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
1618
1619         * Fixed a crashbug in incoming server accepting.  Affected
1620           file silcd/server.c.
1621
1622 Tue Oct 22 13:02:32 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1623
1624         * Added automatically generated index to Toolkit Reference
1625           Manual.
1626
1627         * Added support for Postscript Toolkit Reference Manual.
1628
1629 Mon Oct 21 21:30:40 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
1630
1631         * Merged DISCONNECT fix, and autoconn port fix from Irssi
1632           CVS.
1633
1634 Sun Oct 20 19:54:55 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1635
1636         * Added 'send_events' boolean argument to the function
1637           silc_schedule_set_listen_fd which sends the set events to
1638           the application explicitly if set to TRUE.  Default action
1639           should be FALSE.  Affected file lib/silcutil/silcschedule.[ch],
1640           lib/silcclient/client_internal.h and silcd/server_internal.h.
1641
1642         * Added silc_compare_timeval to determine which time values
1643           is smaller.  Affected file lib/silcutil/silcutil.[ch].
1644
1645         * Added sort-of "Quality of Service" (QoS) support to
1646           SilcSocketConnection.  Data reception can be controlled with
1647           rate limit per second and/or read data length limit.
1648           Added silc_socket_set_qos.  Affected files are
1649           lib/silcutil/silcsockconn.[ch] and unix/silcunixsockconn.c.
1650
1651         * Added the QoS configuration to SILC Server configuration
1652           file.  Affected files are silcd/serverconfig.[ch] and
1653           server.c.
1654
1655 Sun Oct 20 14:12:24 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
1656
1657         * Merged with irssi.org CVS.
1658
1659         * Failed OPER and SILCOPER authentications are now logged.
1660           Affected file silcd/command.c.  Bugs #25.
1661
1662 Sat Oct 19 13:32:15 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
1663
1664         * ROBODoc documented lib/silcutil/silcbuffer.h and
1665           lib/silcutil/silcdlist.h.  Patch by Ville Räsänen
1666           <ville.rasanen@iki.fi>.
1667
1668 Fri Oct 18 10:51:04 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1669
1670         * Added support for auto-passphrase authentication from the
1671           config file during connecting which was not implemented
1672           yet.  Affected file irssi/src/silc/core/client_ops.c.
1673
1674         * Fixed a bug in authentication protocol failure handling which
1675           was processing wrong callback context.  Affected files
1676           are lib/silcclient/client.c and protocol.c.
1677
1678         * Fixed the /ATTR allow off to actually work.  Affected file
1679           is irssi/src/silc/core/silc-queries.c.
1680
1681         * Fixed the /ATTR -del to work.  Affected file is
1682           irssi/src/silc/core/silc-queries.c.
1683
1684 Thu Oct 17 23:45:12 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1685
1686         * Fixed string formatting crashbug in lib/silccore/silcattrs.c.
1687
1688         * Fixed mask attribute adding in Irssi SILC client.  Affected
1689           file irssi/src/silc/core/silc-queries.c.
1690
1691 Thu Oct 17 16:40:39 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1692
1693         * Added support for saving the requested attributes in
1694           WHOIS to directory.  Affected file is
1695           irssi/src/silc/core/silc-queries.c.
1696
1697 Wed Oct 16 17:40:56 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1698
1699         * Added support for parsing VCard fields that do not have
1700           the TYPE= for types.  Affected file lib/silcutil/silcvcard.c.
1701
1702         * Fixed a double free bug in hash table foreach function
1703           if the entry was deleted in the foreach callback.  Affected
1704           file lib/silcutil/silchashtable.c.
1705
1706 Tue Oct 15 18:05:24 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1707
1708         * Added silc_attribute_get_verify_data to return the signature
1709           verification data for either user digital signature or
1710           server digital signature in Requested Attributes.  Affected
1711           files are lib/silccore/silcattrs.[ch].
1712
1713         * Added silc_vcard_alloc which is used to allocated dynamic
1714           SilcVCard context.  The silc_vcard_free now checks whether
1715           the context is dynamically allocated or not.  Affected files
1716           are lib/silcutil/silcvcard.[ch].
1717
1718 Mon Oct 14 17:55:44 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1719
1720         * Periodically remove the NOATTR status from client entry
1721           so that the client may take the attributes in use even after
1722           server has resolved them unsuccessfully earlier.  Affected
1723           file silcd/server_query.c and idlist.h.
1724
1725         * Moved sha1hash and md5hash from client->internal to
1726           SilcClient for application usage.  Affected files are
1727           lib/silcclient/client.h and client_internal.h.
1728
1729         * Fixed attribute encoding and decoding bugs.  Affected
1730           files lib/silccore/silcattrs.[ch].
1731
1732         * Added ATTR command to Irssi SILC Client which is used to
1733           manage user's Requested Attributes sending and values for
1734           WHOIS command.  Affected files around Irssi SILC client.
1735
1736 Mon Oct 14 14:33:54 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1737
1738         * Added silc_buffer_strformat which can be used to format
1739           strings into a buffer which size is automatically increased.
1740           Affected file lib/silcutil/silcbuffmt.[ch].
1741
1742         * Added implementation of VCard (RFC 2426) which can be used
1743           as part of Requested Attributes in WHOIS command.  Affected
1744           file lib/silcutil/silcvcard.[ch].
1745
1746 Fri Oct 11 23:52:17 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1747
1748         * Some strncat -> silc_strncat changes our the core and
1749           client library.
1750
1751         * Added SILC_SKE_STATUS_SIGNATURE_ERROR and OUT_OF_MEMORY
1752           errors.  Added better error printing to SKE library.
1753           Affected files lib/silcske/silcske.c, silcske_status.h and
1754           payload.c.
1755
1756         * Save the PKCS key length even if only private key is set to
1757           SilcPKCS.  Affected file lib/silccrypt/silcpkcs.[ch] and rsa.c.
1758
1759         * Fixed the usage of silc_pkcs_get_key_len since it returns the
1760           length in bits not in bytes.  Affected files are
1761           lib/silcske/silcske.c, lib/silccore/silcauth.c and
1762           silcd/server_query.c.
1763
1764 Wed Oct  9 17:22:57 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1765
1766         * Added silc_attribute_payload_encode_data to directly encode
1767           the data into the attributes buffer.  Renamed function
1768           silc_attribute_payload_parse_list to silc_attribute_payload_parse.
1769           Affected files are lib/silccore/silcattrs.[ch].
1770
1771         * silc_hash_table_find_foreach calls the foreach function now
1772           once even if the nothing was found with context set to NULL.
1773           Affected file lib/silcutil/silchashtable.[ch].
1774
1775         * Remove the RESOLVING flag from client entry after received
1776           the Requested Attributes from the client.  Fixed memory leak
1777           in client entry freeing.  Affected files silcd/server_query.c
1778           and idlist.c.
1779
1780         * Added Requested Attributes support into SILC Client Library.
1781           It is not able to send requested attributes in WHOIS command,
1782           and also receive and process requested attributes.  Added
1783           silc_client_attribute_[add|del] and silc_client_attributes_get
1784           functions.  Added also `ignore_requested_attributes' to the
1785           SilcClientParams to not use attributes in client.  Affected
1786           files are lib/silcclient/command.c, client_attrs.[ch],
1787           silcclient.h, client_internal and client.[ch].
1788
1789         * Changed the silc_client_get_client_by_id to support Requested
1790           Attributes, it takes them as argument now.  Affected file
1791           is lib/silcclient/silcclient.h, and idlist.c.
1792
1793         * Added -details option to WHOIS command in Irssi SILC Client
1794           to support the requested attributes.  By default it requests
1795           all attributes.  Affected file lib/silcclient/command.c and
1796           irssi/doc/help/in/whois.in.
1797
1798 Tue Oct  8 17:58:28 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1799
1800         * Add also SERVICE attribute for server-constructed attribute
1801           data.  Also digitally sign the attributes and add
1802           SERVER_DIGITAL_SIGNATURE attribute.  Affected file is
1803           silcd/server_query.c.
1804
1805 Mon Oct  7 18:25:35 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1806
1807         * Changed the silc_attribute_payload_encode to support list
1808           of attributes (function may be called several times to add
1809           a new attribute).  Removed the silc_attribute_payload_encode_list
1810           function.  The encoding function now also automatically encodes
1811           the data, so the caller does not need to do that.  Affected
1812           files lib/silccore/silcattrs.[ch].
1813
1814         * Added support for replying on behalf of the user to the
1815           Requested Attributes in WHOIS command in the server.  Affected
1816           file silcd/server_query.c.
1817
1818         * SILC_NOT_IMPLEMENTED macro use SILC_LOG_INFO now instead of
1819           SILC_LOG_DEBUG.  Affected file lib/silcutil/silclog.h.
1820
1821 Sun Oct  6 16:48:32 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1822
1823         * Don't swtich to become primary router if we are backup if
1824           decryption error has occurred.  Affected file silcd/server.c.
1825
1826         * Fixed a bug in backup router IP address comparison in
1827           silc_server_backup_get.
1828
1829           Save now also the port of the server/router and use that
1830           in comparison as well.  Affected file silcd/server_backup.c.
1831
1832         * Normal server now reconnects to backup router automatically
1833           if connection is lost to it.  Affected file silcd/server.c.
1834
1835 Thu Sep 26 13:51:02 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
1836
1837         * If packet processing fails (like integrity check fails)
1838           the connection is closed now.  Affected files are
1839           lib/silccore/silcpacket.c and silcd/server.c.
1840
1841 Mon Sep 23 10:59:39 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
1842
1843         * Fixed double free in RSA public key set function
1844           silc_rsa_set_public_key.  Affected file lib/silccrypt/rsa.c.
1845           Bug #29.
1846
1847 Sun Sep 22 14:54:05 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1848
1849         * Rewrote WHOIS, WHOWAS and IDENTIFY commands in the server.
1850           Added server_query.[ch] which provides one interface for
1851           querying information using all three commands.
1852
1853         * Changed all "typedef unsigned char" in core library to
1854           "typedef SilcUInt8".
1855
1856 Sat Sep 21 21:36:45 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1857
1858         * Added silc_strncat into lib/silcutil/silcstrutil.[ch].
1859
1860         * Renamed silc_server_get_client_resolve to
1861           silc_server_query_resolve and moved to server_query.[ch].
1862
1863 Wed Sep 18 18:28:04 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1864
1865         * Resumed client packet handling from server put the resumed
1866           client on wrong list on router and caused the client not
1867           be present on the network anymore.  Now fixed to put the
1868           client to correct list.  Affected file silcd/packet_receive.c.
1869
1870 Wed Sep 18 15:13:48 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
1871
1872         * Various cleanup in error message output in config parsing code
1873           and in server init code.  Fixed error log files containing
1874           too many newlines ('\n') in some situations.  Affected files are
1875           silcd/serverconfig.c, silcd/silcd.c, and silcd/server.c.
1876
1877 Wed Sep 18 10:51:23 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
1878
1879         * Use the reverse lookupped hostname in client internals
1880           instead of one user provided us as remote server name.
1881           Affected file lib/silcclient/client.c.
1882
1883 Mon Sep 16 12:02:54 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1884
1885         * Added 'app_context' to silc_schedule_init.  It is an
1886           application specific context that is delivered to application
1887           in task callback functions.  Affected files are
1888           lib/silcutil/silcutil.[ch].
1889
1890         * The hb_context in SilcSocketConnection is not freed
1891           automatically anymore (application must free it).  Freeing
1892           it automatic is inconsistent.  Affected files are
1893           lib/silcutil/silcsockconn.[ch].
1894
1895 Sun Sep 15 22:16:19 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1896
1897         * Added support for removing explicitly added client connections
1898           in rehash and closing the client connections if they were
1899           unconfigured in the rehash.  Affected file silcd/server.c.
1900
1901         * Added support for aborting automatically pending commands
1902           that never receives the reply (to avoid memory leaks).
1903           Added also silc_server_command_pending_timed to set the
1904           specific timeout for pending command.  Affected files are
1905           silcd/command[_reply].[ch].
1906
1907         * Added SILC_STATUS_ERR_TIMEDOUT status.  Updated protocol
1908           specs and lib/silccore/silcstatus.h.
1909
1910 Sun Sep 15 12:25:10 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1911
1912         * Changed the silc_get_time to accept time value as argument
1913           or if zero is sent return current local time.  Affected
1914           file lib/silcutil/silcutil.[ch].
1915
1916         * Added STATS command to client library and Irssi SILC client.
1917           Patch provided by Ville Räsänen <ville.rasanen@iki.fi>.
1918
1919 Wed Sep 11 09:22:00 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
1920
1921         * Assure that channel key is set before sending it.  May
1922           crash server otherwise.  Affected file silcd/packet_send.c.
1923
1924 Tue Sep 10 09:50:08 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
1925
1926         * Assure that endless loop cannot happen with detached client
1927           resolving on normal server.  Added idlist status
1928           SILC_IDLIST_STATUS_RESUME_RES.   Affected files are
1929           silcd/idlist.h and silcd/packet_receive.c.
1930
1931 Mon Sep  9 12:18:18 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
1932
1933         * Incoming file transfer request cannot use same session as
1934           the sending session.  This can happen when sending file to
1935           yourself.  Crashed the client on quit.  Affected file
1936           lib/silcclient/client_ftp.c.  Bug #24.
1937
1938 Sun Sep  8 18:39:25 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1939
1940         * Implemented the draft-riikonen-precense-attrs draft and
1941           the Attribute Payload into the lib/silccore/silcattrs.[ch].
1942
1943 Sun Sep  8 13:13:44 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1944
1945         * Distribute the SERVER_SIGNOFF notify also to local backup
1946           routers from the primary router.  The backup router may not
1947           have the signing of local server directly connected and need
1948           to know about the signoff.  Affected file silcd/server_util.c.
1949
1950         * Use the primary router as the origin of the locally connected
1951           server when it is disconnecting from the backup router since
1952           that's where it really is coming from.  Now the clients from
1953           the disconnecting server are removed correctly and "shadow"
1954           clients are not left to the backup router.  Affected file
1955           silcd/server.c.
1956
1957 Sat Sep  7 22:26:50 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1958
1959         * If normal server is standalone and found existing but disabled
1960           channel, do not re-create the channel since it creates
1961           duplicate same channels.  Affected file silcd/server.c.
1962
1963         * Added anonymous client connections support to server.  New
1964           "anonymous" configuration option to ConnectionParams section
1965           added.  If set to true, the username and hostname information
1966           of the client will be scrambled and anonymous user mode is
1967           set automatically to the user.  Affected files are
1968           silcd/serverconfig.[ch], silcd/packet_receive.c and server.c.
1969
1970 Sat Sep  7 16:02:09 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1971
1972         * In JOIN notify handling, mark that the cache entry of the
1973           client cannot be expired.  Can cause crashes on normal
1974           server (asserts client->channels).  Affected file is
1975           silcd/packet_receive.c.
1976
1977         * From now on distribution versions are used as protocol versions
1978           instead of by default using the Toolkit base version as protocol
1979           version.  Affected file prepare.
1980
1981         * Do not set the locally resolved hostname for local client
1982           entry but take what server sends.  This way the real hostname
1983           is showed in WHOIS for yourself.  Affected file is
1984           lib/silcclient/idlist.c and lib/silcclient/client.c.
1985
1986         * Resolve local info with IDENTIFY when connecting to server.y
1987
1988 Sat Sep  7 14:22:43 CEST 2002 Lubomir Sedlacik <salo@silcnet.org>
1989
1990         * Rewritten check for POSIX threads.  Use --with-pthreads[=DIR]
1991           for implied search (not needed on platforms which has native
1992           pthreads library).  Use --without-pthreads to disable threads.
1993           Affected file is configure.in.pre
1994
1995         * Fixed --with-iconv on platforms which need to bypass (broken)
1996           native iconv().  Affected file is configure.in.pre
1997
1998 Sat Sep  7 15:08:13 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
1999
2000         * Moved -C option parsing in Irssi SILC client at same time
2001           as other options.  The UI was initialized earlier and caused
2002           problems on command line.  Bug #16.  Affected file is
2003           irssi/src/silc/core/silc-core.c.
2004
2005 Mon Sep  2 23:00:30 CEST 2002 Johnny Mnemonic <johnny@themnemonic.org>
2006
2007         * Added global variable silc_log_timestamp that tells silclog
2008           wether to print or not the timestamp in the logging files.
2009           Affected file lib/silcutil/silclog.[ch].
2010
2011         * Added silcd configuration option Timestamp in the Logging
2012           section.  Affected file silcd/serverconfig.[ch],
2013           doc/example_silcd.conf.in.
2014
2015 Fri Aug 30 08:57:33 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2016
2017         * Fixed fingerprint checking to check for entirely empty
2018           fingerprint instead of two first bytes when determining
2019           if it is set.  Bug #18.  Affected file silcd/command.c.
2020
2021         * Fixed duplicate PKCS name registering to not allow it.
2022           Bugs #17.  Affected file lib/silccrypt/silcpkcs.c.
2023
2024 Sun Aug 25 08:02:04 CEST 2002 Lubomir Sedlacik <salo@silcnet.org>
2025
2026         * Conditionalize non-gcc compiler optimizations for various
2027           platforms, enable those commented out.  Cleanups.
2028           Affected file lib/silcmath/mpi/configure.in
2029
2030 Sat Aug 24 15:11:32 EEST 2002 Timo Sirainen <tss@iki.fi>
2031
2032         * silc_rng_exec_command() left zombie processes if command
2033           didn't generate any output.  Affected file
2034           lib/silccrypt/silcrng.c
2035
2036 Fri Aug 23 22:05:44 CEST 2002 Lubomir Sedlacik <salo@silcnet.org>
2037
2038         * Rewrote iconv checking, introduce --with-iconv for systems
2039           which rely on libiconv.  Check if iconv() provided by libc
2040           is good enough, otherwise demand libiconv.  Affected file
2041           configure.in.pre
2042
2043 Fri Aug 23 07:10:52 CEST 2002 Lubomir Sedlacik <salo@silcnet.org>
2044
2045         * Search for ldopen() also in libc.  This enables SIM support
2046           on *BSD systems.  Based on patch from Alex Zepeda.  Affected
2047           file configure.in.pre
2048
2049 Sun Aug 18 04:44:30 CEST 2002 Lubomir Sedlacik <salo@silcnet.org>
2050
2051         * Don't call AM_CONDITIONAL conditonally for SILC_THREADS.
2052           This fixes prepare on *BSD systems.  Affected file
2053           configure.in.pre
2054
2055 Sun Aug  4 15:55:40 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2056
2057         * More fixed for not having purge timeout for global clients
2058           that are on channel.  Affected files silcd/command_reply.c
2059           and server_util.c.
2060
2061         * Fixed the rekey protocol to work with backup router connections.
2062           Rekey packets are now allowed on disabled connections as
2063           well.  Affected files silcd/packet_send.c and server.c.
2064
2065         * Do not switch to be as backup router when shutting down and
2066           closing the primary connection.  Affected file silcd/server.c.
2067
2068         * Fixed memory leaks in backup router deleting.  Added
2069           silc_server_backup_free to free all data during shutdown of
2070           server.  Affected files silcd/server_backup.[ch].
2071
2072 Sun Jul 14 21:33:32 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2073
2074         * Do not process commands if the sock->user_data is NULL.
2075           Affected file silcd/command.c.
2076
2077 Tue Jul  9 19:03:11 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2078
2079         * Fixed buffer overflow and security problems (loosing bits
2080           in CFB encryption) in SILC RNG.  Problems reported by
2081           Markku-Juhani O. Saarinen <mjos@saturn.tcs.hut.fi>.
2082
2083 Sun Jul  7 13:10:01 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2084
2085         * Added yet more checks that client is not expired on global
2086           list if it is on channels.  Affected file is
2087           silcd/command_reply.c.
2088
2089 Sat Jul  6 11:45:11 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2090
2091         * Merged c0ffee's MIME signal patch which adds support for
2092           sending also MIME messages in Irssi SILC Client, and handling
2093           received MIME messages in a signal (and perhaps doing something
2094           to non-textual MIME messages).
2095
2096 Sun Jun 30 01:30:22 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2097
2098         * Fixed pending command deletion in server and client library
2099           to check the whole list instead of breaking after first found.
2100           The affected files are silcd/command.[ch] and
2101           lib/silcclient/command.[ch].
2102
2103 Sat Jun 29 17:40:12 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2104
2105         * Return NO_SUCH_CHANNEL error in USERS for channel that is
2106           secret or private, otherwise it's possible to find out
2107           whether a secret channel exists or not.  Affected file
2108           silcd/command.c.
2109
2110         * If CMODE change fails during the mode setting, assure that
2111           the old mode mask is set for the channel back.  Affected
2112           file silcd/command.c.
2113
2114         * Fixed passphrase saving on +a channel on normal server
2115           after successful JOIN command.  Affected file silcd/command.c.
2116
2117 Fri Jun 28 11:53:25 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2118
2119         * Remove server/router operator privileges in DETACH command,
2120           since it's possible to resume to server where these
2121           privileges would not be allowed for the client.  Affected
2122           file silcd/command.c.
2123
2124         * Do not set to wait for backup in rehash of the server.
2125           Affected file silcd/server.c.
2126
2127         * Do not check listener sockets when counting how many
2128           socket connections we have.  Affected file is
2129           silcd/server_util.c.
2130
2131         * Do not announce disconnected clients that are remaining
2132           in history (for WHOWAS).  This is because SIGNOFF notify
2133           for these has been sent earlier already.  Affected file
2134           silcd/server.c.
2135
2136 Thu Jun 27 20:07:27 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2137
2138         * Buffer overflow with CUMODE command's mode->mode character
2139           conversion.  Reported by Ville Räsänen.  Affected file
2140           lib/silcutil/silcutil.c.
2141
2142 Thu Jun 27 16:54:33 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2143
2144         * Allow heartbeat packets to go disabled connections anyway.
2145           Affected files silcd/server.c and silcd/packet_send.c.
2146
2147         * Do not broadcast New Channel packets with List flag set
2148           in the packet to backup routers.  The router must check
2149           for the correctness of the packets before sending them.
2150           It is possible that router will have enforce Channel ID
2151           change and this would cause desync in the backup router.
2152           Affected file silcd/packet_receive.c.
2153
2154         * Remove SILC_PACKET_FLAG_LIST from the temp packets that
2155           are handled in list parsing.  They are not list packets
2156           anymore.  Affected file silcd/packet_receive.c.
2157
2158 Thu Jun 27 11:27:07 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2159
2160         * Stop waiting for backup router through the timeout, not
2161           directly after backup router has arrived.  Affected file
2162           silcd/server.c.
2163
2164         * Do not re-create channel keys and send them when removing
2165           clients in server shutdown.  Affected files are
2166           silcd/server_internal.h and silcd/server_util.c.
2167
2168         * Notify distribution to backup routers was missing from
2169           the silc_server_send_notify_dest function which caused
2170           desyncing problems with backup router.  Affected file is
2171           silcd/packet_send.c.
2172
2173         * The client's channel removing was working wrong on
2174           backup router.  It assumed that it doesn't know global
2175           information but backup router does know.  For this reason
2176           it could remove channel when it wasn't supposed to do that.
2177           Affected file silcd/server.c and silcd/server_util.c.
2178
2179 Wed Jun 26 15:14:12 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2180
2181         * Stop for a couple seconds after badkup router has become
2182           primary router.  Affected file silcd/server.c.
2183
2184         * Added silc_server_remove_servers_by_server, which is used
2185           to remove servers originated from some other server.  Also
2186           clients of those servers can be removed too.  Affected file
2187           silcd/server_util.[ch].
2188
2189         * When removing clients after a server has signed of remove
2190           also all servers behind that server (unless they are known
2191           to be available locally), and send SERVER_SIGNOFF for each
2192           of the server separately.  Also the signed off clients are
2193           sent now separately per signed off server.  The affected files
2194           are silcd/server.c and silcd/server_util.[ch].
2195
2196         * All servers added with silc_idlist_add_server must always
2197           have both "router" and "connection" pointers set.  Otherwise,
2198           bad server entries may be left around in the cache.
2199           Affected file silcd/command_reply.c.
2200
2201         * Do not create the channel key in NEW_CHANNEL packet
2202           processing if the channel is empty.  Affected file
2203           silcd/packet_receive.c.
2204
2205         * Completed backup router support for standalone routers.
2206           Supports also servers in the cell that do not use the backup
2207           at all.
2208
2209 Wed Jun 26 10:38:11 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2210
2211         * Fixed a bug in silc_string_regexify which did not add '^'
2212           at the start of each string, and thus the matching was
2213           not explicit.  For example ban list iikone@*!*@* would
2214           match also "priikone", which is wrong, it would have to be
2215           *iikone@*!*@* to match also "priikone".  Affected
2216           file lib/silcutil/unix/silcunixutil.c.
2217
2218 Tue Jun 25 18:47:39 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2219
2220         * Enable all local server connections before updating client
2221           caches when we've become backup router.  Otherwise, signoff
2222           packets may not reach the clients.  Affected files are
2223           silcd/server.c and silcd/server_util.[ch].
2224
2225         * Fixed a bug in version string parsing which could crash
2226           the program with specially formatted version string.
2227           Bug reported and patch provided by Ville Räsänen.  Affected
2228           file lib/silcutil/silcutil.c.
2229
2230         * Handle the disconnection immediately when DISCONNECT
2231           packet is received in server.  Affected file silcd/server.c.
2232
2233         * Primary router now waits a short time (10 seconds) for
2234           backup router connection before accepting any other
2235           connection (except local).  Affected file silcd/server.c,
2236           serverconfig.[ch].
2237
2238         * Fixed a crash in client libary in NICK_CHANGE notify when
2239           NICK_CHANGE arrived for client entry we are resolving
2240           currently.  Affected file lib/silcclient/client_notify.c.
2241
2242         * Call the sconn->callback completion even if error had
2243           occurred.  Start reconnecting always if connection to
2244           primary router fails during backup router protocol.
2245           Affected files silcd/server.c and server_backup.c.
2246
2247 Mon Jun 24 17:47:52 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2248
2249         * Added functions silc_server_send_opers and
2250           silc_server_send_opers_notify to send packets stricly
2251           to operators.  Added macro SILC_SERVER_SEND_OPERS macro
2252           to send variable argument notify to operators.
2253           Affected files silcd/packet_send.[ch] and silcd/server.h.
2254
2255         * Removed UMODE rights checking with UMODE_CHANGE notify.
2256           Affected file silcd/packet_receive.c.
2257
2258         * Server/router operator now receives notify when network
2259           switches to backup router and when it resumes the use of
2260           primary router.  Affected file silcd/server.c and
2261           silcd/server_backup.c.
2262
2263         * Fixed the updating of client information after backup
2264           resuming protocol is over; update all except local clients
2265           to the new primary router.  The affected file is
2266           silcd/server_util.c.
2267
2268         * Added support for closing active connections in rehash
2269           that were unconfigured by the user.  Supports currently
2270           closing server and router connections.  Affected file
2271           silcd/server.c.
2272
2273         * Rewrote some SILC_LOG_DEBUG's in silcd/server_backup.c.
2274
2275 Sun Jun 23 17:32:31 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2276
2277         * Don't do SILC_STRING_LANGUAGE encoding if the outbuffer
2278           is NULL since seems that on some platforms NULL is allowed
2279           and on some it's not.  Fallback encoding is used instead.
2280           Affected file lib/silcutil/silcstrutil.c.
2281
2282         * Fixed statistics updating for incoming server connection
2283           which could cause problems when re-connecting.  Affected
2284           file silcd/server.c.
2285
2286         * Preliminary backup router support for standalone router
2287           added.  Affected files in silcd/.
2288
2289         * Mark server connections in backup router disabled before
2290           and after backup protocol.  Affected file is
2291           silcd/server_backup.c.
2292
2293         * Added support for reconnecting to remote server connection
2294           even if the protocol fails, and if the configuration wants
2295           us to keep trying to connect anyway.
2296
2297           Server connection is not allowed to backup router if
2298           backup router does not have connection to primary router yet.
2299
2300           Affected file is silcd/server.c.
2301
2302 Sat Jun 22 21:34:59 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2303
2304         * Added silc_client_udpate_server function to update changed
2305           server info.  Affected file lib/silcclient/idlist.[ch].
2306
2307         * Added check for server entries that are being resolved when
2308           notify is received.  If being resolved, handle the received
2309           notify only after it's resolved so that all notifys are
2310           handled in same order as received from the server.
2311
2312           Added similar resolver check to channel entries.  Every
2313           notify that cause resolving of any information that affects
2314           channel entry marks the channel entry in waiting state.
2315           After whatever resolving is over the waiters are signalled
2316           and only then the notifys are handled in the same order
2317           as delivered from the server.
2318
2319           Affected files are lib/silcclient/idlist.[ch], and
2320           client_notify.c.
2321
2322         * Fixed KILLED notify handling in normal server.  Affected
2323           file silcd/packet_receive.c.
2324
2325         * Added SILC_IDLIST_STATUS_LOCAL which indicates that entry
2326           is locally connected, or was locally connected (but may
2327           be detached and connection is not active).  Added also
2328           SILC_IS_LOCAL for checking this status.  Affected files
2329           silcd/idlist.h, silcd/packet_receive.c, silcd/server_util.c,
2330           silcd/server.c and silcd/server_internal.h.
2331
2332 Sat Jun 22 17:06:58 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2333
2334         * Don't send or handle TOPIC_SET if topic is already set and
2335           is same as being set.  Affected files silcd/command.c and
2336           silcd/packet_receive.c.
2337
2338         * Fixed CMODE change rights checking to work correctly when
2339           removing modes by operator.  Affected file is
2340           silcd/server_util.c.
2341
2342         * Fixed some handling with New Channel packet in router and
2343           fixed some CMODE_CHANGE notify handling in server and router.
2344           Affected file is silcd/packet_receive.c.
2345
2346         * Changed "disconnect" client operation to include the
2347           reason of the disconnection and optional disconnection
2348           message.  Affected file lib/silcclient/silcclient.h.
2349
2350         * Made the compilation of lib/contrib/ stuff conditional.
2351           Affected files configure.in.pre, lib/contrib/Makefile.am.
2352
2353 Sat Jun 22 12:49:21 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2354
2355         * All CMODE_CHANGE and CUMODE_CHANGE notifys are now sent back
2356           to the sender of the notify too, to avoid situation where two
2357           notifys are in the network at the same time going to oppsite
2358           directions.  Affected file silcd/packet_receice.c.
2359
2360 Fri Jun 21 10:00:32 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2361
2362         * Delete the client from channel even if the cilent->id is
2363           NULL.  It was possible that client was deleted without
2364           removing from channels (theoretically at least).  Affected
2365           file silcd/server.c and silcd/server_util.c.
2366
2367         * Free the client data too when resuming is not successful.
2368           Affected file silcd/packet_receive.c.
2369
2370         * Merged some code from c0ffee's silc-plugin.  Affected files
2371           irssi/src/silc/core/silc-channels.c and silc-expandos.c.
2372
2373         * Added SILC_PRIMARY_ROUTE and SILC_BROADXAST macros to
2374           silcd/server_internal.h.  SILC_PRIMARY_ROUTE Returns pointer
2375           to the primary router connection, the other one returns
2376           TRUE if packet must be broadcasted to network.
2377
2378         * All notifys that are destined to primary router (to network)
2379           are now automatically sent to backup routers even if the
2380           router is standalone (and has backup router).  Affected files
2381           in silcd/.
2382
2383         * Added --without-irssi and --without-silcd configuration
2384           options for disabling the compilation of these applications.
2385           Affected file configure.in.pre and prepare.
2386
2387 Thu Jun 20 13:48:15 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2388
2389         * Implemented SILC_STRING_BMP and SILC_STRING_UNIVERSAL for
2390           UTF-8 encoding and decoding.  Added also new encodings
2391           SILC_STRING_BMP_LSB and SILC_STRING_UNIVERSAL_LSB.
2392
2393           Added also SILC_STRING_LANGUAGE which is language and charset
2394           specific encoder and decoer for those platforms that support
2395           iconv().  It can convert the UTF-8 to and from the locale
2396           specific character set.
2397
2398           Affected file lib/silcutil/silcstrutil.[ch].
2399
2400         * Added macro SILC_NOT_IMPLEMENTED to lib/silcutil/silclog.h.
2401
2402         * Added function silc_get_command_name to the file
2403           lib/silcutil/silcutil.[ch].
2404
2405         * Improved the server debug output a bit.  Affected files are
2406           in silcd/.
2407
2408 Wed Jun 19 17:46:31 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2409
2410         * Save the channel passphrase when received succesful JOIN
2411           command reply from router, on normal server.  Otherwise
2412           joinig +a channels from normal server is not possible.
2413           Affected file silcd/command.c.
2414
2415         * Fixed a bug in TOPIC_SET notify handling.  The notifier
2416           may be other than client too, like server or channel.
2417           It expected it to always be only client and ignored the
2418           notify.  Affected file silcd/packet_recieve.c.
2419
2420         * Removed some (unnecessary) debug printing from
2421           lib/silccore/silcid.c and lib/silccore/silcargument.c.
2422
2423         * Do not force CMODE_CHANGE when server is announcing new
2424           channel.
2425
2426           Router announces stuff only after server reannounces channel
2427           after CHANNEL_CHANGE notify.
2428
2429           These fixes optimizes the announcing procedure, and perhaps
2430           fixes some problems too.  Affected file silcd/packet_receive.c.
2431
2432         * Fixed SERVER_SIGNOFF sending to local clients.  It was
2433           totally broken and sent the notify to all local clients,
2434           instead of only to those that was on same channel as the
2435           signing off clients.  Affected file silcd/server_util.c.
2436
2437         * Added -D option to server.  It can be used to give debug
2438           level.  The levels are from 0 - 99, and are predefined for
2439           smooth server debugging.  (see silcd.c for the predefined
2440           levels).  Affected file silcd/server.c.
2441
2442 Wed Jun 19 16:01:51 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2443
2444         * Fixed a bug in Irssi SILC client to close the connection
2445           properly when disconnecting from server.  Affected file
2446           irssi/src/silc/core/client_ops.c.
2447
2448 Tue Jun 18 17:14:52 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2449
2450         * When authenticating as founder during JOIN command, check
2451           that the one authenticating becomes the only founder on the
2452           channel.  Affected file silcd/command.c.
2453
2454         * Better checking for founder mode setting when CUMODE_CHANGE
2455           notify is received.  Affected file silcd/packet_receive.c.
2456
2457         * Close all connections when shutting down the server by sending
2458           DISCONNECT packet.  Close all listeners too when shutting
2459           down the server.  Affected file silcd/server.c.
2460
2461         * Handle DISCONNECT packet correctly in client library by
2462           calling the "disconnect" client operation.  Affected file
2463           lib/silcclient/client.c.
2464
2465         * Handle local errors correctly during resuming.  Affected
2466           file lib/silcclient/client.c.
2467
2468 Tue Jun 18 10:26:27 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2469
2470         * The log file is not dupped internally anymore in
2471           lib/silcutil/silclog.c.  Fixed memory leaks too.
2472
2473         * The scheduler now dispatches all pending timeout tasks
2474           when it is uninitialized with silc_schedule_uninit.
2475           Affected file lib/silcutil/silcschedule.c.
2476
2477 Mon Jun 17 21:30:55 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2478
2479         * Added --enable-stack-trace option to configure.  Added
2480           memory allocation stack trace support.  Added files
2481           lib/silcutil/stacktrace.[ch].  Affected files are
2482           lib/silcutil/silcmemory.[ch].
2483
2484         * Fixed memory leaks from libraries and server.  Affected
2485           files around the tree.
2486
2487         * Reverted back a fix made to CUMODE which broke it.
2488           Affected file silcd/command.c.
2489
2490 Sun Jun 16 11:49:45 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2491
2492         * Added SILC_MESSAGE_FLAG_UTF8 to the protocol specs and the
2493           core library, and implemented it.  All textual messages SHOULD
2494           use this flag and the message MUST be UTF-8 encoded.
2495           All text messages sent by Irssi SILC client are now UTF-8
2496           encoded (regardless whether the terminal supports UTF-8 or not).
2497           Affected files are lib/silccore/silcchannel.h,
2498           irssi/src/silc/core/silc-servers.c, silc-channels.c and
2499           client_ops.c.
2500
2501 Sat Jun 15 18:23:39 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2502
2503         * Added lots of new statistics updating that was missing from
2504           the server and router code.  Affected files in silcd/.
2505
2506         * Sending SIGUSR1 signal to server now dumps the current
2507           server statistics into /tmp directory.  Affected file is
2508           silcd/silcd.c.
2509
2510         * ROBODoc documented the lib/silccrypt/silchash.h.  Improved
2511           the SILC Hash Interface also.  Added new functions
2512           silc_hash_get_name, silc_hash_init, silc_hash_update and
2513           silc_hash_final.  Affected file lib/silccrypt/silchash.c.
2514
2515 Sat Jun 15 12:09:14 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2516
2517         * Added some better info printing for client during connecting.
2518           Affected file silcd/server_util.c.
2519
2520         * Implemented the SILC_CHANNEL_UMODE_QUIET mode that can be used
2521           to silence a user on a channel.  Affected files are
2522           lib/silcclient/client_channel.c, irssi/src/silc/core/client_ops.c,
2523           irssi/src/fe-common/silc/module-formats.[ch], silcd/command.c
2524           and silcd/packet_receive.c.
2525
2526         * Fixed a fatal bug in handling of malformed command payload.
2527           Affected file silcd/command.c.
2528
2529         * Fixed a double free when announcing channel users to router.
2530           Affected file silcd/server.c.
2531
2532         * After successful authentication to channel founder mode, check
2533           that there isn't anyone else with founder mode on the channel.
2534           The one that authenticated will become founder and anyone
2535           else is demoted.  Affected file silcd/command.c.
2536
2537         * Added error printing of any error that has occurred during
2538           any command in client library.  Affected file is
2539           irssi/src/silc/core/client_ops.c.
2540
2541         * Removed some error printing from the client library and left
2542           it for the application to worry (from the error status it
2543           receives in 'command' client operation.  Affected file is
2544           lib/silcclient/command.c.
2545
2546 Fri Jun 14 22:59:02 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2547
2548         * Added new status types KEY_AGREEMENT_ALREADY_STARTED and
2549           KEY_AGREEMENT_SELF_DENIED to lib/silcclient/silcclient.h.
2550           Starting key agreement with itself is denied.  Affected file
2551           is lib/silcclient/client_keyagr.c.
2552
2553         * Fixed some error checkings from the SFTP library which caused
2554           misbehaviour.  Affected files are lib/silcsftp/sftp_client.c
2555           and lib/silcsftp/sftp_util.c.
2556
2557         * Added new "debug" and "debug_string" settings to Irssi SILC
2558           client which can be used to print runtime debugging on the
2559           Irssi's screen.  Available when compiled with --enable-debug
2560           option.  Affected file irssi/src/silc/core/silc-core.c.
2561
2562 Tue Jun 11 16:36:02 CEST 2002 Johnny Mnemonic <johnny@themnemonic.org>
2563
2564         * Fixed a missing variadic parameter in a function call that
2565           caused server crash when a non-allowed connection arrived.
2566           Reported by Richard Becker.  Affected file silcd/server.c.
2567
2568 Mon Jun 10 16:29:42 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2569
2570         * Added WATCH list sending to backup routers from router.
2571           The WATCH command is sent by the router to the backup
2572           router.  Affected file silcd/command.c.
2573
2574         * Mark the backup_router flag for RouterConnection entry
2575           if the backup router stuff is defined in the config file.
2576           Affected file silcd/serverconfig.c.
2577
2578         * Fixed some backup data sending around the code to work better
2579           if the router is standalone router.  Not all places were fixed.
2580           Affected file silcd/packet_receive.c, silcd/packet_send.c,
2581           silcd/server.c.
2582
2583         * Fixed the router connecting when connecting to multiple
2584           routers.  It ignored every other router except the first
2585           one.  Affected file silcd/server.c.
2586
2587 Mon Jun 10 09:28:21 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2588
2589         * Made the private key generation after expiration optional.
2590           If not created after expiration the old key will re-expire
2591           at a later time (and thus key pair is not necessary to
2592           change).  Affected file irssi/src/silc/core/clientutil.c.
2593
2594 Sun Jun  9 18:58:25 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2595
2596         * The length arguments in bind() and connect() were wrong
2597           and fixed now to used SIZEOF_SOCKADDR in the
2598           lib/silcutil/unix/silcunixutil.c.
2599
2600 Tue Jun  4 18:36:05 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2601
2602         * Fixed detach timeout handling to use Client ID and not
2603           the actual client entry which may be freed in the callback.
2604           Affected file silcd/command.c.
2605
2606 Thu May 30 15:53:45 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2607
2608         * Merged c0ffee's multiple interface support patch.
2609           Affected files in silcd/.
2610
2611 Wed May 29 18:08:15 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2612
2613         * Cleanup keys properly.  Affected file is
2614           irssi/src/silc/core/clientutil.c.
2615
2616 Tue May 28 20:11:41 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2617
2618         * Display the user mode on the status bar.  Affected file
2619           irssi/src/silc/core/silc-expandos.c.
2620
2621 Tue May 28 13:56:26 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2622
2623         * If private message key is not set, but the flag is set in
2624           the packet, ignore the packet since it cannot be decrypted.
2625           Affected file lib/silcclient/client_prvmsg.c.
2626
2627 Thu May 23 12:00:14 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2628
2629         * When resuming client, remove the old client entry from
2630           the watcher list too.  Affected file silcd/packet_receive.c.
2631
2632         * Do not allow normal server to force founder mode away
2633           from router if the founder mode is already set.  Affected
2634           file silcd/packet_receive.c.
2635
2636         * Remove the client entry with watch notify types with short
2637           timeout, and not directly, so that other notifys can be
2638           retrieved too.  Affected file lib/silcclient/client_notify.c.
2639
2640         * Display notification about data messages that cannot be
2641           displayed.  Affected files irssi/src/silc/core/client_ops.c,
2642           irssi/src/fe-common/silc/module-formats.[ch].
2643
2644 Sun May 19 18:59:00 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2645
2646         * Fixed the CHANNEL_CHANGE notify handling in client libary
2647           to not use freed memory.  Affected file is
2648           lib/silcclient/client_notify.c.
2649
2650         * Fixed CUMODE_CHANGE notify handling in server.  Affected
2651           file silcd/packet_receive.c.
2652
2653         * Fixed USERS command to support empty channels.  Affected
2654           file silcd/command.c.
2655
2656 Sat May 18 11:35:19 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2657
2658         * Allow multiple identical pending commands to be registered
2659           in client library.  Affected file is lib/silcclient/command.c.
2660
2661         * Call the completion for resolving client information only
2662           after all resolvers has finished.  This fixes a crash in
2663           the client.  Added support for checking when the resolvers
2664           are finished.  Affected file is lib/silcclient/idlist.c.
2665
2666         * Wait by default 3 seconds before reconnecting to the server
2667           after being disconnected.  Makes the /detach command a bit
2668           more usable.
2669
2670 Fri May 17 17:23:45 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2671
2672         * Check the watcher list before sending signoff notifys
2673           when closing client connection.  Affected file is
2674           silcd/server.c.
2675
2676         * Added better CMODE command rights checking.  Affected file
2677           silcd/server_util.c.
2678
2679 Fri May 17 08:33:41 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2680
2681         * Fixed watcher list checking during server signoff.  It
2682           crashed the server.  Affected file silcd/server_util.c.
2683
2684         * The JOIN command reply returns now the founder's public
2685           key.  Affected file is silcd/command.c.
2686
2687         * Announce the channel mode, and the mode properties with
2688           CMODE_CHANGE notify.  Affected file silcd/server.c.
2689
2690         * Mark new channels by default disabled, untill at least
2691           one user joins the channel.  Affected file is
2692           silcd/packet_receive.c.
2693
2694 Thu May 16 13:05:13 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2695
2696         * The nickname argument to watch notify can be optional.
2697           Fixes a crash in server.  Affected file silcd/packet_send.c.
2698
2699         * Remove the client entry from cache if the WATCH notify type
2700           is KILLED, SERVER_SIGNOFF or SIGNOFF.  Affected file is
2701           lib/silcclient/client_notify.c.
2702
2703         * Check the watcher list before and after changing nickname
2704           when the NICK_CHANGE notify is received.  Affected file is
2705           silcd/idlist.c.
2706
2707         * Fixed a crash in OPER and SILCOPER command sending.  Empty
2708           passphrase caused the crash.  Affected file is
2709           lib/silcclient/command.c.
2710
2711 Wed May 15 19:01:42 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2712
2713         * Merged with Irssi CVS for Irssi SILC client.
2714
2715 Tue May 14 19:37:48 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2716
2717         * Completed the protocol specifications.
2718
2719 Tue May  7 20:41:58 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2720
2721         * Merged with Irssi CVS for Irssi SILC client.
2722
2723 Tue May  7 11:07:16 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2724
2725         * Added the founder's public key delivery to the
2726           CUMODE_CHANGE notify type as well.  Updated the protocol
2727           specs and the code.  Affected files are silcd/packet_send.[ch],
2728           silcd/packet_receive.c and silcd/command.c.
2729
2730 Mon May  6 19:46:12 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2731
2732         * Added silc_pkcs_public_key_copy function into the
2733           lib/silccrypt/silcpkcs.[ch].
2734
2735         * Remove the `iv' from the SilcChannelEntry since we can
2736           live without it.  Affected files are silcd/idlist.h and
2737           silcd/packet_receive.c.
2738
2739         * Added support for sending the founder's public key in
2740           the CMODE_CHANGE notify packet in the server.  Affected
2741           files are silcd/packet_send.[ch], silcd/packet_receive.c,
2742           silcd/command.c and silcd/server.c.
2743
2744         * Changed the FOUNDER_AUTH authentication to use only
2745           public key authentication as defined by new protocol
2746           specs.  Passphrase authentication with that mode cannot
2747           be used anymore.  It is now possible to reclaim founder
2748           mode from any server in the network.  Affected files are
2749           silcd/command.c, silcd/idlist.h and silcd/command_reply.c.
2750
2751         * Added permanent channels support by making the channel
2752           permanent when FOUNDER_AUTH mode is set on the channel.
2753           The channel will not be destroyed even if channel is empty
2754           when that mode is set.  Protocol TODO #17.  Affected
2755           files are silcd/server.[ch], server_util.[ch],
2756           silcd/command.c, silcd/packet_receive.c and
2757           lib/silcclient/command.c.
2758
2759 Fri May  3 18:36:51 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2760
2761         * Added reference counter to the command reply context in
2762           the client library.  Affected files are
2763           lib/silcclient/command_reply.[ch].
2764
2765 Fri May  3 11:37:10 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2766
2767         * Fixed rekey protocol with PFS in the client library.
2768           Affected file is lib/silcclient/protocol.c.
2769
2770         * Added support for list of errors in client library
2771           command reply handling.  Affected file is
2772           lib/silcclient/command_reply.c.
2773
2774         * Defined that the WHOIS and IDENTIFY commands can send
2775           list of errors.  Updated the protocol specs.  Protocol
2776           TODO #2.
2777
2778         * Added support for sending list of errors to WHOIS and
2779           IDENTIFY commands in server.  Added support for receiving
2780           list of errors in server.  Affected files are
2781           silcd/command.c and silcd/command_reply.c.
2782
2783         * Fixed client info resolving on LEAVE command in client
2784           library to not crash.  Affected file is
2785           lib/silcclient/client_notify.c.
2786
2787 Thu May  2 08:45:11 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2788
2789         * Defined that the NICK command replies with thew changed
2790           nickname too, to make the nickname changing simpler at
2791           the client's end.  Updated protocol specs and the code
2792           in client and server.  Affected files are
2793           silcd/command.c, lib/silcclient/command_reply.c and
2794           lib/silcclient/command.c.
2795
2796 Mon Apr 29 20:10:42 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2797
2798         * Added `Compressed' packet flag to indicate that the packet
2799           payload is compressed by the sender.  Updated the protocol
2800           specs and the core library.  The compression still is not
2801           implemented in the sources.  Affected file is
2802           lib/silccore/silcpacket.h.
2803
2804 Mon Apr 29 09:48:12 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2805
2806         * Remove pending command callbacks also if the connection
2807           to the server is destroyed.  Affected file is
2808           lib/silcclient/client.c.
2809
2810 Sat Apr 27 19:52:32 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2811
2812         * Added new QUIET channel user mode that can be used to
2813           quiet a user in a channel.  Updated the protocol specs but
2814           it wasn't implemented yet.  Protocol TODO #27.  Affected
2815           file is lib/silccore/silcmode.h.
2816
2817 Mon Apr 22 09:09:44 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2818
2819         * Added BLOCK_INVITE user mode to be able to block incoming
2820           invite notifications.  Protoocol TODO #26.  Affected files
2821           are lib/silccore/silcmode.h, lib/silcclient/command.c and
2822           silcd/command.c.
2823
2824         * SILC Publickey fields MUST be UTF-8 encoded now.  Updated
2825           the protocol specs and the code.  Affected file is
2826           lib/silccrypt/silcpkcs.c.
2827
2828 Sun Apr 21 19:44:38 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2829
2830         * Disconnect Payload includes now the status type.  Updated
2831           the protocol specs and the code.  Protocol TODO #25.
2832           Affected files are silcd/server.c, lib/silcclient/client.c.
2833
2834         * Added NOT_AUTHENTICATED, BAD_SERVER_ID, INCOMPLETE_INFORMATION,
2835           KEY_EXCHANGE_FAILED and BAD_VERSION error status types.
2836           Moved the silc_client_command_status_messages table to the
2837           lib/silcutil/silcutil.c and added new funtion
2838           silc_get_status_message, which deprecates function
2839           silc_client_status_message.  Affected files are
2840           lib/silccore/silcstatus.h, lib/silcclient/command_reply.[ch],
2841           lib/silcutil/silcutil.[ch].
2842
2843 Fri Apr 19 17:35:15 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2844
2845         * Defined that the nickname hash in Client ID MUST be from
2846           lowercase nickname.  This effectively changes nicknames in
2847           SILC to case-insensitive.  Updated the protocol specs and
2848           the code.  Affected files are lib/silcutil/silcutil.[ch],
2849           silcd/serverid.c, and silcd/idlist.c.
2850
2851         * Added new channel user modes BLOCK_MESSAGES_USERS and
2852           BLOCK_MESSAGES_ROBOTS.  Updated the protocol specs and the
2853           code.  Affected files are lib/silccore/silcmode.h,
2854           lib/silcclient/command.c, and silcd/packet_send.c.
2855
2856         * Added new error status ERR_RESOURCE_LIMIT.  Updated protocol
2857           specs and code.  Affected file lib/silccore/silcstatus.h.
2858
2859         * Added support for watch list.  It is possible to add nicknames
2860           to be watched, and when they come to network, leave network
2861           or user mode changes the watcher will be notified of this
2862           change.  Added SILC_COMMAND_WATCH command, added new
2863           notify type SILC_NOTIFY_TYPE_WATCH to deliver the watch
2864           notifications.  Updated the protocol specs and implemented
2865           this to library, client and server.  Protocol TODO #21.
2866           Affected files are lib/silccore/silccomand.h,
2867           lib/silccore/silcnotify.h, lib/silcclient/command[_reply].[ch],
2868           silcd/command[_reply].[ch], lib/silcclient/client_notify.c,
2869           silcd/packet_send.[ch], silcd/packet_receive.c, and
2870           irssi/src/silc/core/client_ops.c.
2871
2872         * Added user mode SILC_UMODE_REJECT_WATCHING to reject
2873           somebody watching you.  Updated the protocol specs and the
2874           code.  Affected files are lib/silccore/silcmode.h, and
2875           lib/silcclient/command.c.
2876
2877 Fri Apr 19 09:02:20 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2878
2879         * Added service support to SILC protocol.  Added new command
2880           SILC_COMMAND_SERVICE.  Updated the protocol specs and the
2881           core library.  Services are not implemented in server or
2882           client for now.  Protocol TODO #20.  Affected files are
2883           lib/silccore/silcstatus.h, lib/silccore/silccommand.h.
2884
2885         * Added SilcStatus argument to `command' client operation
2886           to return the error status when command sending fails
2887           locally.  Changed all command in client library to return
2888           correct command status.  Affected files are
2889           lib/silcclient/command.c, lib/silcclient/silcclient.h and
2890           irssi/src/silc/core/client_ops.c.
2891
2892 Thu Apr 18 14:09:51 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2893
2894         * Added silc_mime_parse function to parse MIME headers.
2895           Affected files are lib/silcutil/silcstruti.[ch].
2896
2897         * Added MIME header parsing in Irssi SILC Client.  It displays
2898           all textual MIME objects, others it ignores.  Affected file
2899           is irssi/src/silc/core/clien_ops.c.
2900
2901 Wed Apr 17 22:07:59 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
2902
2903         * Fixed a bug in the pid writing function, which couldn't be
2904           written in a root-owned directory.
2905
2906 Tue Apr 16 09:34:40 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2907
2908         * Defined that channel message to unknown Channel ID must
2909           cause SILC_NOTIFY_TYPE_ERROR notify message to the sender.
2910           Updated the protocol specs and the code in server.  The
2911           affected file is silcd/packet_receive.c.
2912
2913 Mon Apr 15 19:57:57 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2914
2915         * Added new notify type SILC_NOTIFY_TYPE_ERROR and specified
2916           that it is used to send error notifys if error occurs during
2917           some SILC packet processing, except commands.  The error
2918           types are same as for command reply types.  Defined that
2919           if private message is sent to unknown Client ID the error
2920           is sent in SILC_NOTIFY_TYPE_ERROR instead of command reply.
2921           Updated the protocol specs and code.  Affected files are
2922           lib/silccore/silcnotify.h, added lib/silccore/silcstatus.h,
2923           lib/silcclient/client_notify.c, silcd/packet_receive.c,
2924           and irssi/src/silc/core/client_ops.c.  Renamed the
2925           SilcCommandStatus to SilcStatus.
2926
2927         * Defined the use of extra WHOIS attributes in WHOIS command.
2928           The <Requested Attributes> (defined in a separate document)
2929           can be used to request additional information about user
2930           not returned by standard WHOIS command.  Defined that server
2931           can send WHOIS command directly to client.  Client provides
2932           the requested attributes to the server.  Updated the protocol
2933           specs.  Protocol TODO #4.  Implementation is not done yet
2934           (Protocol TODO #24).
2935
2936         * Renamed function silc_client_command_status_message to
2937           silc_client_status_message.  Affected files are
2938           lib/silcclient/command_reply.[ch].
2939
2940 Sun Apr 14 21:13:42 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2941
2942         * Changed the WHOIS, IDENTIFY and WHOWAS count arguments to
2943           32 bit integers.  Updated the protcol specs and the code.
2944           Affected files are silcd/command.c and
2945           lib/silcclient/command.c.
2946
2947 Sun Apr 14 19:49:02 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
2948
2949         * Fixed a bug in library where sending a bogus authentication
2950           payload would lead to a crash.  Affected file is
2951           lib/silccore/silcauth.c.
2952
2953 Sat Apr 13 13:09:24 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2954
2955         * Added detach_disabled and detach_timeout server config
2956           options to the server.  Affected files silcd/serverconfig.[ch],
2957           silcd/command.c and silcd/packet_receive.c.
2958
2959 Fri Apr 12 20:09:08 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2960
2961         * Added resolve_cmd_ident field to the SilcClientEntry structure
2962           too so that if the entry is for example being resolved so
2963           another command may attach to the same pending command reply
2964           without requiring to resolve the same entry again.  Added
2965           support for adding multiple pending commands for one
2966           command idenfier.  Affected files lib/silcclient/command.[ch],
2967           lib/silcclient/command_reply.[ch], lib/silcclient/idlist.h.
2968
2969 Fri Apr 12 10:17:51 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2970
2971         * Defined that server receives WHOIS command reply for private
2972           and secret channels too.  Updated protocol specs and the
2973           code in server.  Affected file silcd/command.c.
2974
2975         * Defined <channel user mode list> argument to WHOIS command
2976           reply for returning user modes on the channels.  The
2977           channel list now doesn't include the user mode anymore but the
2978           actual channel mode.  Updated protocol specs and the code in
2979           client and server.  Affected files are silcd/command_reply.c,
2980           silcd/command.c, silcd/server.c, irssi/src/silc/core/client_ops.c,
2981           and lib/silcclient/command_reply.c.
2982
2983         * Save the channels list in WHOIS command reply in normal server
2984           so that WHOIS always shows joined channels also in normal
2985           server and not just on router.  Affected file is
2986           silcd/command_reply.c.
2987
2988 Thu Apr 11 22:29:33 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2989
2990         * Defined that server receives USERS command reply for private
2991           and secret channels too.  Updated protocol specs and the
2992           code in server.  Affected file silcd/command.c.
2993
2994 Thu Apr 11 16:32:08 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2995
2996         * Changed the UMODE's mode mask argument to be optional.  If
2997           not provided then the command merely returns the current mode
2998           mask to the client.  Updated protocol specs and the server.
2999           Affected file is silcd/command.c.
3000
3001         * Added SILC session detachment/resuming support.  It is possible
3002           to detach by closing the network connection and then re-connect
3003           and resume to the old client session.  Added DETACHED user
3004           mode that server will set for detached client.  Added new
3005           packet RESUME_CLIENT which is used to perform the resuming
3006           process.  Added DETACH command.  Updated the protocol specs,
3007           core library, client and server.  Protocol TODO #22.  Very
3008           many affected files around the tree.
3009
3010 Wed Apr 10 16:32:01 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3011
3012         * Changed the CMODE's mode mask argument to be optional.  If
3013           not provided then the command merely returns the current mode
3014           mask to the client.  Updated protocol specs and the server.
3015           Affected file is silcd/command.c.
3016
3017         * Changed the Killer's Client ID in KILLED notify to be just
3018           any ID payload since router server is allowed to kill as well.
3019           Updated protocol specs, client libary and server.  Affected
3020           files are lib/silcclient/client_notify.c, silcd/packet_receive.c,
3021           and irssi/src/silc/core/client_ops.c.
3022
3023 Tue Apr  9 17:15:42 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3024
3025         * Added new user modes ANONYMOUS for special anonymous servers
3026           that may set the mode for client, and BLOCK_PRIVMSG which
3027           client may set to block incoming private messages unless the
3028           Private Message Key flag is set (using private keys to protect
3029           private messages).  Updated protocol specs and code in client
3030           and server and core library.  Protocol TODO #23.  Affected
3031           files are lib/silccore/silcmode.h, silcd/server.[ch],
3032           irssi/src/silc/core/client_ops.c, silcd/packet_receive.c,
3033           irssi/docs/help/in/umode.in, lib/silcclient/command.c.
3034
3035         * Added new channel user mode BLOCK_MESSAGES which the client
3036           may set to itself to tell server not send channel messages.
3037           Other packets such as channel key packets are still sent.
3038           Protocol TODO #23.  Updated the protocol specs, client and
3039           server.  Affected files are lib/silccore/silcmode.h,
3040           irssi/docs/help/in/cumode.in, lib/silcclient/command.c,
3041           lib/silcutil/silcutil.c, silcd/command.c, and
3042           silcd/packet_send.c.
3043
3044 Mon Apr  8 23:57:32 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3045
3046         * Redefined the Status Payload to include now two 8 bit fields,
3047           instead of one 16 bit field.  This now makes it possible to
3048           send list of errors.  Updated the protocol specs and the code
3049           in core library, client library and server.  Protocol TODO #1.
3050           Affected files are lib/silccore/silccommand.[ch],
3051           lib/silcclient/command_reply.[ch], silcd/command.c,
3052           silcd/command_reply.c and silcd/packet_receive.[ch].
3053
3054 Mon Apr  8 19:57:40 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
3055
3056         * Added config parse status SILC_CONFIG_EPRINTLINE, this status
3057           must be handled by the application and should tell the application
3058           that an error message was already printed, and it should print the
3059           config coords (line, filename, ...).  Affected files are
3060           silcd/serverconfig.c, lib/silcutil/silcconfig.[ch].
3061
3062         * Added local macro SILC_SERVER_CONFIG_ALLOCTMP to make the
3063           server config parsing code more readable.
3064
3065           Fixed a bug in the fetch_logging() config callback.
3066
3067           Affected files is silcd/serverconfig.c.
3068
3069         * Drop root privileges when started in foreground.  Don't drop them
3070           if debugging also.  Affected file is silcd/silcd.c.
3071
3072 Mon Apr  8 17:00:41 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3073
3074         * Added more IM-like features by introducing new user modes
3075           for setting various presence information.  Added new modes:
3076           INDISPOSED, BUSY, PAGE, HYPER and ROBOT.  Updated protocol
3077           specs and code.  Protocol TODO #19. Affected files are
3078           lib/silccore/silcmode.h, irssi/src/silc/core/client_ops.c,
3079           irssi/docs/help/in/umode.in and lib/silcclient/command.c.
3080
3081 Sun Apr  7 17:07:59 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3082
3083         * Added STATS command to the protocol after all, to return
3084           various statistical information about the network.  It can
3085           be used by clients to retrieve statistical information, and
3086           servers may use it to to fetch cell and network wide
3087           statistics from router.  Updated the protocol specs and
3088           implemented it to the server.  Protocol TODO #16.
3089           Affected files are lib/silccore/silccommand, silcd/command.[ch],
3090           silcd/command_reply.[ch].
3091
3092 Sat Apr  6 17:08:58 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3093
3094         * The LIST command reply in client libary now adds new channel
3095           entry if the returned channel doesn't exist yet in cache,
3096           and returns the channel entry to the application in the
3097           command_reply client operation.  Affected file is
3098           lib/silcclient/command_reply.c.
3099
3100         * Changed the channel message payload's MAC generation to
3101           include the IV in the MAC as well.  This way all relevant
3102           parts of the channel message payload are authenticated also
3103           with the channel message MAC (and not only by packet MAC).
3104           Causes incompatibility with 1.0 protocol.  Protocol TODO #7.
3105           Affected file is lib/silccore/silcchannel.c.
3106
3107         * Fixed the SKE to save the remote version, since the
3108           silc_ske_parse_version mistakenly checked wrong version,
3109           after it replaced the start payload.  Affected files are
3110           lib/silcske/silcske.[ch].
3111
3112 Fri Apr  5 16:03:03 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3113
3114         * Splitted lib/silcutil/silcutil.h into silcstrutil.h for
3115           string utility functions.  Added there also new functions
3116           silc_utf8_[encode/decode/valid] for UTF-8 string encoding.
3117           Affected files lib/silcutil/silcstrutil.[ch].
3118
3119         * Renamed silc_*_pem functions to silc_pem_* functions.  Affected
3120           files are lib/silcutil/silcstrutil.[ch].
3121
3122         * Defined that the security property fields in SKE SHOULD be
3123           UTF-8 encoded, defined that version string MUST be US-ASCII
3124           encoded, defined that passphrases sent in connection
3125           authentication protocol MUST be UTF-8 encoded.  Implemented
3126           these to the client and server.  Defined also that other
3127           passphrases sent in the protocol MUST be UTF-8 encoded.
3128           Affected files are lib/silcske/silcske.c,
3129           lib/silcclient/protocol.c, silcd/protocol.c,
3130           silcd/serverconfig.c, and lib/silccore/silcauth.c.
3131
3132         * Changed the silc_client_close_connection interface to not
3133           need the SilcSocketConnection which should not be visible
3134           to application.  Affected files are lib/silcclient/client.c
3135           and lib/silcclient/silcclient.h.
3136
3137         * Rewrote the text for Private Message Key Payload in the
3138           protocol specification.  Protocol TODO #11.
3139
3140 Wed Apr  3 16:24:51 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3141
3142         * Upgraded the protocol version to 1.1, updated protocol specs
3143           and software.
3144
3145         * Added the nickname as new argument to NICK_CHANGE notify and
3146           added it to protocol specs and implemented it to client and
3147           server.  Protocol TODO #3.  Affected files are silcd/idlist.[ch],
3148           silcd/command.c, silcd/packet_receive.c, packet_send.[ch], and
3149           lib/silcclient/client_notify.c.
3150
3151         * Added the killer's client ID to the KILLED notify and added
3152           it to protocol specs and implemented it to client and server.
3153           Protocol TODO #13.  Affected files are silcd/command.c,
3154           silcd/packet_receive.c, packet_send.[ch],
3155           lib/silcclient/client_notify.c, irssi/src/silc/core/client_ops.c.
3156           The killer's client entry is now returned to application in
3157           the `notify' client operation.
3158
3159         * Fixed the Max Argument fields that had too large value set
3160           in the protocol specs.  Protocol TODO #14.
3161
3162         * Added the LEAVE command reply to return the ID of parted
3163           channel.  Updated protocol specs and implemented it to the
3164           client and server.  Protocol TODO #15.  Affected files are
3165           silcd/command.c, lib/silcclient/command_reply.c.  The channel
3166           entry is now returned to application in the `command_reply'
3167           client operation.
3168
3169         * Rewrote the version SKE version checking in client libary
3170           and in server to use the silc_parse_version_string.  Affected
3171           files are lib/silcclient/protocol.c, silcd/protocol.c.
3172
3173         * Added SILC_STATUS_ERR_NO_CHANNEL_FOPRIV error status to few
3174           commands that was missing it, and updated protocol specs and
3175           the server implementation.  Protocol TODO #10.  The affected
3176           file is silcd/command.c.
3177
3178         * Defined new message flags SILC_MESSAGE_FLAG_REPLY to be
3179           generic reply to a generic request (REQUEST flag), and
3180           SILC_MESSAGE_FLAG_DATA to send any kind of data in a generic
3181           way.  A draft-riikonen-silc-flags-payloads-00.txt is written
3182           to define the payload for DATA flag.  Added the flags to
3183           the implementation.  Protocol TODO #9.  Affected file is
3184           lib/silccore/silcchannel.h.
3185
3186           Changed the client library to return the message length
3187           to application as well in the channel_message and private_message
3188           client operations.  Affected files are
3189           lib/silcclient/client_prvmsg, lib/silcclient/client_channel.c,
3190           lib/silcclient/silcclient.h, irssi/src/silc/core/client_ops.c,
3191           and lib/silcclient/client_ops_example.c.
3192
3193         * Added two new channel modes: SILC_CMODE_SILENCE_USERS
3194           and SILC_CMODE_SILENCE_OPERS which can be used to moderate
3195           the channel.  Updated protocol specs and impelemented this
3196           to client and server.  Protocol TODO #6.  Affected files are
3197           silcd/packet_receive.c, server_util.c, lib/silcclient/command.c,
3198           lib/silcclient/client_channel.c, lib/silccore/silcmode.h.
3199
3200           Added new options m and M to CMODE command in Irssi SILC
3201           client to set these modes.
3202
3203         * Deprecated all administrative commands from SILC protocol
3204           since they are highly implementation specific commands.
3205           Updated protocol specs.  Moved the old commands in
3206           implementations to private range of command types.  Affected
3207           files are silcd/command.c, lib/silcclient/command.c and
3208           lib/silcclient/command_reply.c.  Protocol TODO #8.
3209
3210         * Fixed a bug in server where sending unknown command crashes
3211           the server.  Affected file silcd/command.c.
3212
3213 Wed Apr  3 09:57:47 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
3214
3215         * Added SILC_PROTOCOLVERSION macro to check protocol version
3216           of a socket connection.  The affected file is
3217           lib/silcutil/silcsockconn.h.
3218
3219         * Added better error logging in rekey protocol.  Affected file
3220           silcd/protocol.c.
3221
3222         * Do not check public key types in SKE during rekey.  Affected
3223           file lib/silcske/payload.c.
3224
3225         * Fixed the rekey protocol with PFS, which was totally broken.
3226           Affected file silcd/protocol.c.
3227
3228 Tue Apr  2 14:55:06 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
3229
3230         * Some client implementations quit network by doing first LEAVE
3231           and then immediately SIGNOFF (like Bombyx).  We now do check
3232           after a short time after LEAVE notify and check whether the
3233           client is still valid after LEAVE, and if not we remove it from
3234           cache.  Affected file is lib/silcclient/client_notify.c.
3235
3236 Tue Apr  2 13:39:04 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
3237
3238         * Merged version 1.1.4 of zlib. Even if it not currently in use,
3239           it's good not to have security holes here.
3240
3241         * Fixed a negative refcount situtuation for the config context.
3242           Affected file is silcd/serverconfig.c.
3243
3244 Mon Apr  1 20:15:10 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
3245
3246         * ROBOdoc documented lib/silcutil/silcutil.h.
3247
3248 Sat Mar 30 21:06:45 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3249
3250         * Optimized even more the SilcPacketContext structure.  Now
3251           totally saved 16 bytes of memory per context after optimization.
3252           Affected files are lib/silccore/silcpacket.[ch].
3253
3254         * Made strict checks for valid SILC IDs.  Affected file is
3255           lib/silccore/silcid.c.
3256
3257 Sat Mar 30 18:15:55 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3258
3259         * Changed the object argument for silc_cipher_register,
3260           silc_hash_register, silc_hmac_register and silc_pkcs_register
3261           to const.  Affected files are lib/silccrypt/silccipher.[ch],
3262           silchash.[ch], silchmac.[ch] and silcpkcs.[ch].
3263
3264         * Changed the silc_get_username and silc_get_real_name to
3265           never fail.  Affected file lib/silcutil/unix/silcunixutil.c.
3266
3267         * Fixed the Irssi SILC Client to use the silc_get_username and
3268           silc_get_real_name insted of glib routines since the glib
3269           routines only corrupt stack.  Fixes the Irssi SILC to work in
3270           Cygwin.  Affected file irssi/src/silc/core/silc-core.c.
3271
3272         * Fixed the Irssi to not use g_get_home_dir since it crashes
3273           or returns garbage on cygwin and corrupts stack.  Added function
3274           get_home_dir to Irssi routines.  Affected files are
3275           irssi/src/core/misc.[ch] and irssi/src/core/core.c.
3276
3277 Fri Mar 29 21:55:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3278
3279         * Made some structure optimizations.  SFTP memory FS MemFSEntry
3280           entry structure.  Optimized SilcTask structure.  Optimized
3281           SilcPacketContext structure.
3282
3283           Affected files lib/silcsftp/sftp_fs_memory.c,
3284           lib/silcutil/silcschedule.c, lib/silccore/silcpacket.h.
3285
3286 Fri Mar 29 10:41:07 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3287
3288         * And yet again reverted back the config thing since Johnny
3289           screwed it up.  Affected file silcd/serverconfig.[ch], server.c,
3290           and silcd.c.
3291
3292         * Fixed memory leaks from config object.  Affected files are
3293           silcd/serverconfig.[ch].
3294
3295         * Added support for adding new connections to the server in rehash.
3296           After rehash they take effect.
3297
3298           Added support for changing the maximum allowed connections in
3299           rehash.  The number can grow but going smaller is not supported.
3300
3301           Added function silc_server_num_sockets_by_remote to the
3302           silcd/server_util.[ch].
3303
3304           Affected files are silcd/server.c, and silcd/serverconfig.[ch].
3305
3306 Fri Mar 29 03:26:12 CET 2002 Johnny Mnemonic <johnny@themnemonic.org>
3307
3308         * Added preliminary checking during config parsing for a valid
3309           public/private key and removed further checks in the code.
3310           Affected files are silcd/serverconfig.[ch], server.c.
3311
3312         * Moved functions silc_server_drop() and silc_server_daemonise()
3313           from server.c to silcd.c since they are stricly related to
3314           the application activity.
3315
3316         * Reverted a small part of the automatic ref/unref since
3317           it caused a double unref in some situations.  Affected
3318           files are silcd/silcd.[ch], server.c, serverconfig.c.
3319
3320         * Added some .cvsignore files in the lib directory.
3321
3322 Thu Mar 28 22:51:15 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3323
3324         * Fixed silc_net_gethostbyaddr to correctly resolve by
3325           address.  Affected file lib/silcutil/silcnet.c.
3326
3327         * Fixed the notify relaying to client.  The HMAC to be used
3328           with relayed packets ws wrong and caused decryption failure
3329           at the client end.  Affected file is silcd/packet_receive.c.
3330
3331 Thu Mar 28 19:02:05 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3332
3333         * Created new branch silc_protocol_1_0_branch.
3334
3335         * Reverted the silc_log_quick change in lib/silcutil/silclog.c.
3336
3337         * Changed the silc_server_config_* routines to be SilcServer
3338           independent.  They are now officially application specific code
3339           and not part of generic server implementation.  Affected files
3340           are silcd/serverconfig.[ch], silcd/silcd.c, silcd/server.c.
3341
3342 Thu Mar 28 17:01:43 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3343
3344         * Added automatic referencing of config context in the
3345           silc_server_config_alloc, and automatic unreferencing in the
3346           silc_server_config_destroy.  Affected files are
3347           silcd/serverconfig.[ch], silcd/silcd.c.
3348
3349         * Fixed the silc_log_quick handling in the logging routines.
3350           It didn't log quickly when it was TRUE.  Affected file is
3351           lib/silcutil/silclog.c.  Also the flush delay was set even
3352           if it was 0 in config file.  Affected file is
3353           silcd/serverconfig.c.
3354
3355         * Added support for changing key pair of the server in rehash.
3356           Affected file silcd/server.c.
3357
3358 Thu Mar 28 12:17:21 CET 2002  Pekka Riikonen <priikone@silcnet.org>
3359
3360         * Fixed the TOPIC_SET notify to not cras.  It changed the topic
3361           too early, before getting the channel entry.  Affected file
3362           is silcd/packet_receive.c.
3363
3364 Thu Mar 28 09:58:16 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
3365
3366         * Added functions silc_server_config_[ref/unref], these are used
3367           to prevent that the config object is destroyed.
3368
3369           No longer directly affect global variables silc_log_quick and
3370           silc_log_delay, they are first cached inside the config object
3371           and then applied with silc_server_config_setlogfiles().
3372
3373           silc_server_config_set_defaults() is now internal to
3374           serverconfig.c, there are no reasons to show this internal stuff
3375           to the server.
3376
3377           Affected files are silcd/serverconfig.[ch].
3378
3379         * Added macro SILC_SERVER_LOG_STDERR(), this should replace most
3380           fprintf's to stderr, since some code may be executed again after
3381           the server went into the background.  Affected files are
3382           silcd/server.[ch].
3383
3384         * Added rehash support. Added function silc_server_rehash() that
3385           will perform all the basic tasks of the rehashing procedure.
3386
3387         * Added command line option `-x, --hexdump'. This will enable the
3388           SILC_LOG_HEXDUMP calls that are no longer enabled with `--debug'.
3389           The option `--hexdump' implies `--debug'.
3390
3391         * Fixed a bad bug in the logging APIs (silcutil library) where
3392           the application would crash after calling silc_log_reset_all().
3393
3394 Wed Mar 27 19:43:16 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3395
3396         * Fixed the KICKED notify handling in client library to
3397           correctly remove the channel and all entries from the
3398           channel when I was kicked.  This bug crashed the client.
3399
3400           Fixed yet another but in KICKED notify handling to remove
3401           the kicked client correctly from the channel.
3402
3403           Affected file is lib/silcclient/client_notify.c.
3404
3405         * Fixed a minor bug in looking up correct client entry
3406           in KICKED notify in server.  Affected file is
3407           silcd/packet_receive.c.
3408
3409         * Fixed the lib/silcmath/Makefile.am to include the MPI and GMP
3410           sources correctly to distribution.  Fixes --with-gmp option.
3411
3412         * Removed the manual rehashing from ID Cache, and changed it
3413           to use the SILC Hash Table's auto rehash feature.  Affected
3414           file is lib/silccore/silcidcache.c.
3415
3416 Wed Mar 27 00:07:11 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3417
3418         * Fixed a bug in the silc_client_nickname_format function that
3419           handles the multiple same nickname formatting.  Two clients
3420           with same nickname caused problems after the first one left
3421           and rejoined.  It didn't format the nickname correctly.
3422           Affected file is lib/silcclient/idlist.c.
3423
3424 Tue Mar 26 19:33:03 CET 2002  Pekka Riikonen <priikone@silcnet.org>
3425
3426         * Don't change the topic if olod topic is same as new one.
3427           Affected file is silcd/packet_receive.c.
3428
3429 Mon Mar 25 21:11:35 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3430
3431         * Added cross-reference support to the SILC Documentation
3432           generator.  All types across all HTML files are now cross-
3433           referenced.  Affected files util/robodoc/generator.c and
3434           scripts/silcdoc/silcdoc.
3435
3436         * Added file lib/silcutil/silctypes.h to include all the
3437           arithmetic type definitions and some macros.  Removed
3438           includes/bitmove.h and moved macros to silctypes.h.
3439
3440 Mon Mar 25 17:19:46 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3441
3442         * Merged bugfixes for Irssi SILC client from irssi.org CVS.
3443
3444 Sun Mar 24 11:21:04 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3445
3446         * Added `type' argument to silc_id_payload_parse_id function which
3447           now returns the type of the ID to the sent pointer.  Affected
3448           file is lib/silccore/silcid.[ch].
3449
3450         * Added check for CMODE_CHANGE notify type that mode change is
3451           allowed by the sender.  Affected file silcd/packet_receive.c.
3452
3453         * Added check for CUMODE_CHANGE notify type that mode change is
3454           allowed by the sender.  Affected file silcd/packet_receive.c.
3455           Added the ID type as CUMODE_CHANGE notify type as argument
3456           to the `notify' client operation.  Affected files are
3457           lib/silcclient/client_notify.c, irssi/src/silc/core/client_ops.c.
3458
3459         * Added function silc_client_add_server to the client library.
3460           Added support for resolving also channel and server info when
3461           received unknown entity in notify packet.  Affected files are
3462           lib/silcclient/idlist.[ch], lib/silcclient/client_notify.c.
3463
3464         * Added function silc_command_get_status to return the command
3465           status from the command reply's argument payload.  Affected files
3466           are lib/silccore/silccommand.[ch].
3467
3468         * Added check for KICKED notify type that the kicking is
3469           allowed by the client.  Affected file silcd/packet_receive.c.
3470
3471         * Created function silc_get_input which can be used to get input
3472           (echo on or off) from user on command line.  Affected files are
3473           lib/silcutil/silcutil.[ch].
3474
3475 Sat Mar 23 09:51:26 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3476
3477         * Optimized silc_server_packet_relay_to_channel function.
3478           Added new function silc_channel_message_payload_encrypt which
3479           can be called directly if channel message payload needs to
3480           be encrypted and is already encoded (no need to call _encode
3481           function).  Packet relaying is now done by router without any
3482           extra memory allocations.  Affected files are
3483           lib/silccore/silcchanel.[ch], silcd/packet_receive.c and
3484           silcd/packet_send.c.
3485
3486         * Fixed the INVITE notify handling.  It took wrong arguments
3487           as invite list and invite delete.  Affected file is
3488           silcd/packet_receive.c.
3489
3490         * Added check for TOPIC_SET notify type that the topic change is
3491           allowed by the client.  Affected file silcd/packet_receive.c.
3492
3493         * Added check for INVITE notify type that inviting is allowed by
3494           the client.  Affected file silcd/packet_receive.c.
3495
3496         * Changed the silc_server_client_on_channel to return the
3497           SilcChannelClientEntry as well.  Moved the function
3498           silc_server_check_cmode_rights to server_util.[ch].
3499           Affected files are silcd/server_util.[ch], silcd/command.c.
3500
3501         * Added function silc_server_check_umode_rights to check whether
3502           changing client's user mode is allowed.  Added check for
3503           UMODE_CHANGE notify type that the umode change is allowed
3504           by the client.  Affected files are silcd/server_util.[ch],
3505           silcd/packet_receive.c and silcd/command.c.
3506
3507 Fri Mar 22 12:25:58 CET 2002  Pekka Riikonen <priikone@silcnet.org>
3508
3509         * Fixed the SILC_PACKET_MAX_ID_LEN to actually be the max
3510           ID length.  It ignored that ID can be IPv6 based as well.
3511           Affected file lib/silccore/silcpacket.h.
3512
3513         * Fixed the silc_id_id2str and silc_id_str2id to take the
3514           IPv6 address offset's into consideration.  Affecte file is
3515           lib/silccore/silcid.c.
3516
3517 Thu Mar 21 20:44:13 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3518
3519         * Fixed the internal Unix scheduler functions to check for
3520           NULL context they may receive.  The affected file is
3521           lib/silcutil/unix/silcunixschedule.c.
3522
3523 Thu Mar 21 19:12:22 EET 2002  Timo Sirainen <tss@iki.fi>
3524
3525         * Changed hardcoded ~/.silc paths to use get_irssi_dir() so you
3526           can specify different directory with --home command line
3527           parameter. Affected files irssi/src/silc/core/client_ops.c,
3528           clientutil.c
3529
3530         * SILC-specific commands aren't now executed if the active server
3531           isn't of SILC-type, so there won't be problems with having
3532           IRC and SILC protocol support in same client. Affected files
3533           irssi/src/silc/core/silc-channels.c, silc-servers.c,
3534           silc-commands.h
3535
3536 Wed Mar 20 11:06:57 CET 2002  Pekka Riikonen <priikone@silcnet.org>
3537
3538         * Improved the signal support in SILC Schedule.  Added new
3539           function silc_schedule_signal_call which is used by application
3540           to mark a signal to be called.  It is now safe to perform
3541           any kind of tasks in signal callbacks since it is guaranteed
3542           that the application specified signal callback is called
3543           after the signal is over.  Affected files are
3544           lib/silcutil/silcschedule.[ch], lib/silcutil/*/silc*schedule.c.
3545
3546 Tue Mar 19 20:42:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3547
3548         * Added `name' field to SilcChannelPrivateKey to represent
3549           application given name for the key.  Moved also the context from
3550           lib/silcclient/idlist.h into lib/silcclient/silcclient.h.
3551           Added the `name' argument also to the function
3552           silc_client_add_channel_private_key.
3553
3554           Added function silc_client_current_channel_private_key to set the
3555           current channel private key in use.
3556
3557           Added "change" command to KEY command which can be used to change
3558           the current channel private key.  Bound the command also to
3559           alt+K (Alt+Shift+k).
3560
3561           Also affected files lib/silcclient/client_channel.c,
3562           irssi/src/docs/help/in/key.in, irssi/src/silc/core/silc-channel.c.
3563
3564 Tue Mar 19 16:32:43 CET 2002  Pekka Riikonen <priikone@silcnet.org>
3565
3566         * Added silc_rng_get_byte_fast function in to the
3567           lib/silccrypt/silcrng.[ch].
3568
3569         * Changed the interface of silc_packet_assemble and the
3570           silc_packet_send_prepare.  If silc_packet_assmble is now
3571           called the application does not call silc_packet_send_prepare
3572           because the library will call it automatically.  These
3573           interfaces now also return a reference to the outgoing buffer
3574           which includes the assembled packet, which the application can
3575           use to encrypt the packet.
3576
3577           Affected files are lib/silccore/silcpacket.[ch],
3578           lib/silcclient/client.c, client_channel.c client_prvmsg.c,
3579           silcd/packet_send.c, server_backup.c and packet_receive.c.
3580
3581         * Fixed a packet sending bug on very high load, where outgoing
3582           packet queue wasn't handled correctly and packets got corrupted.
3583           Affected files are lib/silcutil/*/silc*sockconn.c,
3584           lib/silcclient/client.c and silcd/server.c.
3585
3586 Mon Mar 18 21:00:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3587
3588         * Added macro SILC_PACKET_DATALEN which can be used during
3589           packet assembling to check whether the data to be added to
3590           the packet will fit to SILC_PACKET_MAX_LEN.  If not the data
3591           len is truncated until it fits it.
3592
3593           Added checks for maximum length of channel message payload and
3594           private message payload also.
3595
3596           Added checks for maximum packet length in server and in
3597           client library.
3598
3599           Affected files are lib/silccore/silcpacket.h, silcd/packet_send.c,
3600           lib/silcclient/client.c, lib/silccore/silcchannel.c and
3601           lib/silccore/silcprivate.c, lib/silcclient/client_channel.c and
3602           lib/silcclient/client_prvmsg.c.
3603
3604 Mon Mar 18 14:54:42 CET 2002  Pekka Riikonen <priikone@silcnet.org>
3605
3606         * Added silc_server_packet_queue_purge call to the
3607           silc_server_disconnect_remote to assure that all data in the
3608           queue before disconnecting is sent to the network.  Affected
3609           file silcd/server.c.
3610
3611 Sun Mar 17 19:26:16 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3612
3613         * Added the deleting of server's own ID cache entry to the
3614           silc_server_free function.  Free also everything else that
3615           has been allocated in silc_server_init.  The affected file
3616           is silcd/server.c.
3617
3618 Sun Mar 17 15:44:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3619
3620         * Added functions silc_parse_version_string, silc_version_to_num,
3621           and silc_ske_parse_version to parse SILC protocol style version
3622           strings.  Affected files lib/silcutil/silcutil.[ch] and
3623           lib/silcske/silcske.[ch].
3624
3625         * Added new configuration params: version_protocol, version_software
3626           and version_software_vendor to specify what version the remote
3627           host must at least be to be able to connect to server.  The vendor
3628           string can be regex matched too.  Added new function
3629           silc_server_connection_allowed to check maximum number of allowed
3630           connections, and allowed versions for incoming connections.
3631           Affected files are silcd/server.c, server_util.[ch] and
3632           serverconfig.[ch].
3633
3634 Sun Mar 17 10:24:50 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3635
3636         * Added preliminary support for signals in scheduler.  The
3637           signals we care about are now blocked always when the scheduler
3638           is locked.  This way we can synchronise the use of signal with
3639           scheduler.  It is guaranteed that when signal occurs the scheduler
3640           is not locked, and thus new tasks can be safely added to the
3641           scheduler.
3642
3643           Renamed silc_schedule_wakeup_init and silc_schedule_wakeup_uninit
3644           to silc_schedule_internal_init and silc_schedule_internal_uninit.
3645           Added new platform specific routines
3646           silc_schedule_internal_signals_[un]block and
3647           silc_schedule_internal_signal_[un]register.
3648
3649           Added new functions to SILC Schedule API:
3650           silc_schedule_signal_[un]register.  Each signal that application
3651           is going to use should be registered to the scheduler.
3652
3653           Affected files are lib/silcutil/silcschedule.[ch],
3654           lib/silcutil/*/silc*schedule.c.
3655
3656 Sat Mar 16 22:39:23 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3657
3658         * Check for unauthenticated client and server in the
3659           silc_server_new_client and silc_server_new_server functions.
3660           Affected file silcd/packet_receive.c.
3661
3662         * Added function silc_string_is_ascii to check whether given
3663           string is 7-bit ASCII string.  Affected files are
3664           lib/silcutil/silcutil.[ch].
3665
3666         * Added function silc_id_is_valid_server_id into the
3667           silcd/serverid.c and added checking for valid Server ID's in
3668           silc_server_new_server.  The Server ID must always be based
3669           on the server's public IP address.
3670
3671         * Added logging of DISCONNECT packet message in the server.
3672           Affected file silcd/server.c.
3673
3674 Sat Mar 16 18:04:30 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3675
3676         * Changed all library interfaces that use Global RNG to also
3677           accept SilcRng as argument.  Affected files are
3678           lib/silcclient/command.c, lib/silccore/silcauth.[ch],
3679           lib/silccore/silcchanel.[ch], lib/silcclient/client_channel.c,
3680           silcd/packet_send.c, lib/silccore/silcprivate.[ch],
3681           lib/silcmath/silcprimegen.c, lib/silcmath/silcmath.h, and
3682           lib/silccrypt/rsa.c.
3683
3684         * Added function silc_pkcs_generate_key to the
3685           lib/silccrypt/silcpkcs.[ch] for applications so that they
3686           don't need to do pkcs->pkcs->init calls anymore.
3687
3688         * Remove SilcSocketConnection from the SFTP API since it really
3689           wasn't needed there.  The application has the information
3690           saved in its contexts anyway and the SFTP layer doesn't need
3691           know about it.  Affected files lib/silcsft/silcsftp.h and
3692           lib/silcsftp/sftp_[server/client].c.
3693
3694         * Rewrote the SILC SIM (modules) interface in lib/silcsim.[ch].
3695           The SilcSimContext is not SilcSim.
3696
3697         * Fixed possible buffer overflows in silc_id_render in the
3698           lib/silcutil/silcutil.c.
3699
3700         * On EPOC the global crypto module lists are not used at all
3701           in the crypto library.  Added support for using the constant
3702           algorithm list on EPOC.  Affected files are
3703           lib/silccrypt/silccipher.c, silchash.c, silchmac.c and
3704           silcpkcs.c.
3705
3706         * Fixed the handling of third parameter of KICKED notify, since
3707           it was mistakenly updated to SILC Protocol 1.0 even though it
3708           is to be included in 1.1.  Since it is not in 1.0 it is not
3709           mandatory, and this fix now handles it only if it is provided,
3710           and it is not error if it is not provided.  Affected file
3711           lib/silcclient/client_notify.c.
3712
3713 Sat Mar 16 09:07:27 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3714
3715         * Handled CHANNEL_CHANGE notify (ignore it) in Irssi SILC
3716           client.  Affected file irssi/src/silc/core/client_ops.c.
3717
3718         * Merged with Irssi 0.8.4 from irssi.org CVS.
3719
3720 Thu Mar 14 12:53:57 CET 2002  Pekka Riikonen <priikone@silcnet.org>
3721
3722         * Check for valid socket connection in client entries before
3723           sending any messages.  Fixes a crash, but doesn't fix some
3724           other underlaying bug that is lurking there.  Affected
3725           file silcd/packet_send.c.
3726
3727 Thu Mar 14 13:38:12 EET 2002  Timo Sirainen <tss@iki.fi>
3728
3729         * $usermode, $cumode and $cumode_space expandos shouldn't do
3730           anything with non-SILC server records. Affected file
3731           irssi/src/silc/core/silc-expandos.c
3732
3733 Wed Mar 13 21:38:26 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3734
3735         * Fixed the silc_net_check_[host/local]_by_sock to support
3736           IPv6 bound sockets as well.  Now they can return IPv6 addresses
3737           as well.  Affected file lib/silcutil/silcnet.c.
3738
3739         * Fixed silc_net_addr2bin to correctly convert IPv6 addresses.
3740           Affected lib/silcutil/unix/silcunixnet.c.
3741
3742         * Fixed ID rendering (at least on some platforms, not NetBSD)
3743           for IPv6 addresses.  Affected file lib/silcutil/silcutil.c.
3744
3745 Tue Mar 12 17:58:59 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3746
3747         * Added silc_hash_public_key and silc_hash_public_key_compare
3748           functions to be used with SilcHashTable.  They can be used to
3749           hash public keys and compare public keys in hash table.  Affected
3750           file lib/silcutil/silcutil.[ch].
3751
3752         * Added support for specifying multiple public keys for Client
3753           connection section in server configuration file.  This makes it
3754           possible to accept multiple public keys from same host, or to
3755           make a section that accepts any incoming host, and have the
3756           accepted public keys listed in the section.
3757
3758           Added functions silc_sever_[find/get]_public_key,  added the
3759           support for this actually to all connection sections but only
3760           the Client section is currently allowed to specify multiple
3761           public keys.
3762
3763           Affected files are silcd/server.c, server_internal.h,
3764           command.c, protocol.c, server_util.[ch], packet_receive.c.
3765
3766 Mon Mar 11 23:37:38 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3767
3768         * Merged Irssi 0.8.2 from irssi.org CVS.
3769
3770 Sun Mar 10 23:34:48 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
3771
3772         * If silc_debug is TRUE, also output standard logging messages
3773           to stderr with the debug output.
3774
3775           Made silc_log_reset_all() flushing all channels before returning.
3776           Also fixed some documentation typos.
3777
3778           Affected files are lib/silcutil/silclog.[ch].
3779
3780 Sun Mar 10 20:07:49 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3781
3782         * Fixed the server to check correctly the amount of connections
3783           from single host, by checking also the type of the connection.
3784           Fixed also the comparison of number of connections and number
3785           of allowed connections.  Affected files are silcd/server.c,
3786           server_util.[ch].
3787
3788 Fri Mar  8 17:16:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3789
3790         * Fixed the USERS command reply to save the user's mode on the
3791           channel as well.  Fixed JOIN command reply to check whether a
3792           client is on channel already and not join it twice.  Affected
3793           file lib/silcclient/command_reply.c.
3794
3795         * Added new file silc-expandos.c into irssi/silc/core/ to return
3796           various stuff for various signal for the statusbar etc. updating.
3797           Now Irssi SILC client prints channel user modes etc. on the
3798           statusbar.
3799
3800         * The user mode (like server/router operator changes) is now shown
3801           on the Irssi SILC client's statusbar.  The affected files are
3802           irssi/src/silc/core/client_ops.c, silc-expandos.c.
3803
3804 Thu Mar  7 19:21:22 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3805
3806         * Changed silc_mutex_[un]lock calls in lib/silcutil/silcschedule.c
3807           to SILC_SCHEDULE_[UN]LOCK macros.
3808
3809         * Added more error printing to logs in server code.  Affected
3810           files silcd/server.c and silcd/protocol.c.
3811
3812         * Fixed -S option parsing in Irssi SILC Client.  Affected file
3813           irssi/src/silc/core/silc-core.c.
3814
3815         * Added silc_buffer_alloc_size function.  Affected file is
3816           lib/silcutil/silcbuffer.h.
3817
3818 Tue Mar  5 14:37:27 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3819
3820         * Changed all silc_[hash|hmac|cipher|pkcs]_default tables to
3821           constants.  Affected files in
3822           lib/silccrypt/silcpkcs.[ch], silchash.[ch], silchmac.[ch] and
3823           silccipher.[ch].
3824
3825         * Changed the internal SFTP Memory FS table to const.  Affected
3826           file lib/silcsftp/sftp_fs_memory.c.
3827
3828 Sun Mar  3 18:37:13 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3829
3830         * Fixed the buffer formatting and unformatting routines to
3831           check the size of 64 bits types with sizeof().  Affected
3832           file is lib/silcutil/silcbuffmt.c.
3833
3834 Mon Feb 25 17:19:05 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3835
3836         * Removed 0.6.x backwards support.
3837
3838 Sun Feb 24 12:53:25 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3839
3840         * Changed all integer type names:
3841           [u]int[8/16/32/64] -> Silc[UInt/Int][8/16/32/64].  This is
3842           to avoid collisions with other libraries using same type names
3843           as we did.
3844
3845 Sat Feb 23 20:31:43 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3846
3847         * Added `prefer_ipv6' argument to the functions
3848           silc_net_gethostbyname[_async].  If it is TRUE it will return
3849           IPv6 address over IPv4.  If FALSE IPv4 address is returned
3850           even if IPv6 address was found.  Affected files
3851           lib/silcutil/silcnet.[ch].
3852
3853         * Added support silc_net_create_connection[_async] to fallback
3854           to IPv4 address if IPv6 address could not be used (like if
3855           it doesn't work on a specific system).  Affected file in
3856           lib/silcutil/unix/silcunixnet.c.
3857
3858 Sat Feb 23 15:20:30 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3859
3860         * Added silc_schedule_reinit function to do the enlarging
3861           of the max tasks handling capabilities of the scheduler.
3862           Affected files lib/silcutil/silcschedule.[ch].
3863
3864 Wed Feb 20 20:41:01 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3865
3866         * Added automatic extern "C" { ... } for C++ compilers so the
3867           application does not need to define them.  Affected file
3868           includes/silcincludes.h.
3869
3870         * Renamed lib/silcclient/silcapi.h to silcclient.h as the
3871           old name went against naming convention.  Applications now
3872           include "silcclient.h" instead of "clientlibincludes.h".
3873           Removed includes/clientlibincludes.h, it is redundant now.
3874
3875         * Renamed includes/version.h to silcversion.h.
3876
3877         * Added really preliminary support for OS/2 into the util
3878           library.  Only thread & mutex API is implemented, others
3879           are still to be implemented.  Created the lib/silcutil/os2/
3880           directory.  Created also file includes/silcos2.h.
3881
3882 Wed Feb 20 18:48:49 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3883
3884         * Added preliminary BeOS support into the util library.
3885           Created lib/silcutil/beos/, and implemented all the needed
3886           functions to support SILC on BeOS.  Created also file
3887           includes/silcbeos.h.
3888
3889 Mon Feb 18 15:49:22 EET 2002  Timo Sirainen <tss@iki.fi>
3890
3891         * Added proper initializations to silc's irssi code, so it's
3892           now possible to load it as module.  Affected files
3893           irssi/src/silc/core/silc-core.c,
3894           fe-common/silc/fe-common-silc-core.[ch] and fe-text/silc.c
3895
3896 Sun Feb 17 19:02:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3897
3898         * Merged latest Irssi (0.8.1) from the irssi.org's CVS into
3899           the SILC tree.
3900
3901         * Fixed the silcdoc document generator to correct generate
3902           docs from all kinds of filenames.  Affected files are
3903           util/robodoc/Source/generator.c, scripts/silcdoc/silcdoc
3904
3905         * ROBOdoc documented lib/silcutil/silcmemory.h.
3906           Added also new function silc_memdup.
3907
3908         * Removed lib/silcutil/silcbufutil.h and moved those routines
3909           to the lib/silcutil/silcbuffer.h.
3910
3911 Sun Feb 17 15:52:30 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3912
3913         * Added `user_count' to the SilcChannelEntry which now tells the
3914           number of users on the channel.  The user count is now saved
3915           in normal server of global channels as well.  Affected files
3916           silcd/server.c, idlist.h, packet_receive.c and command.c.
3917
3918         * Splitted lib/silcutil/silcutil.[ch] into silcfileutil.[ch] to
3919           include file utility functions.
3920
3921         * Fixed the lib/silcsftp/sftp_fs_memory.c to use silcutil routines
3922           instead of calling directly OS routines.
3923
3924         * Fixed NICK change printing in Irssi SILC Client. Fixed
3925           KICKED notify printing in Irssi SILC Client.  Affected file
3926           irssi/src/silc/core/client_ops.c.
3927
3928         * Fixed a NICK change bug in client library, to not recreate the
3929           client_entry->channels hash table everytime nick is changed.
3930           Affected file lib/silcclient/client.c.
3931
3932 Sun Feb 17 10:10:14 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3933
3934         * ROBOdoc documented the lib/silcske/silcske.h, and improved
3935           the SKE interface a bit.
3936
3937         * Fixed padding problem in PKCS#1. The padding was not actually
3938           random since the random number generator was used incorrectly.
3939           This security bug affects only when encrypting with PKCS#1, and
3940           it is not currently used at all in SILC. SILC only use signing
3941           with PKCS#1. Affected file lib/silccrypt/pkcs1.c.
3942
3943 Sat Feb 16 13:44:24 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3944
3945         * Rewrote the notify handling in Irssi SILC client to not call
3946           the events as signals.  Fixes problems with Perl support.
3947           Affected files irssi/src/silc/core/client_ops.c, silc-channels.c.
3948
3949         * Send the auto-nicking NICK command in client library with
3950           little timeout after connecting.  The affected file is
3951           lib/silcclient/client.c.
3952
3953         * Added following new config file settings:
3954           channel_rekey_secs, key_exchange_rekey, key_exchange_pfs,
3955           key_exchange_timeout, conn_auth_timeout, connections_max,
3956           links_max.
3957
3958           Implemented all the new config settings handling in the server.
3959
3960           Optimized the use of SKE Mutual flag usage.  Use it only
3961           if connection authentication protocol is not based in public
3962           key authentication.
3963
3964           Renamed all SilcServerConfigSection* to SilcServerConfig*
3965           to have a bit shorter names.
3966
3967           Affected files silcd/serverconfig.[ch], server.[ch], and
3968           protocol.[ch].
3969
3970 Sat Feb 16 02:46:43 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
3971
3972         * Cleaned up the listening sockets code, preparing for the rehash
3973           support.  Affected file is silcd/server.c.
3974
3975         * Fixed some output messages.  Affected files are silcd/silcd.c,
3976           and silcd/server.c.
3977
3978 Fri Feb 15 19:10:20 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3979
3980         * Create lib/doc/silcrng_intro.html document as introduction
3981           to SILC RNG.  ROBOdoc documented lib/silccrypt/silcrng.h.
3982
3983 Fri Feb 15 13:23:03 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
3984
3985         * Fixes to the silcd config template.  Affected file is
3986           doc/example_silcd.conf.in.
3987
3988         * Removed type casts from silc_calloc(), conforming to the
3989           CodingStyle.  Affected file is lib/silcutil/silcconfig.c.
3990
3991         * Removed param_name member from client, server, and router
3992           section structs, now identifying the param directly.
3993
3994           Added CONFIG_FREE_AUTH macro in config file parsing.
3995
3996           Affected files are silcd/serverconfig.[ch].
3997
3998 Fri Feb 15 12:24:08 EET 2002  Timo Sirainen <tss@iki.fi>
3999
4000         * Fixed command line parameter handling. All SILC initialization
4001           is now done in silc_core_init() which also fixes autoconnecting
4002           to servers.
4003
4004           Affected files irssi/src/silc/core/silc-core.c,
4005           irssi/src/fe-text/silc.c.
4006
4007 Thu Feb 14 22:03:58 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4008
4009         * Added new configuration options and blocks:
4010           keepalive_secs, reconnect_count, reconnect_interval,
4011           reconnect_interval_max, reconnect_keep_trying and
4012           require_reverser_lookup.  Added ConnectionParam block, and
4013           implemented the connection parameters when connecting as
4014           initiator and when accepting connections as responder.
4015
4016           Added CONFIG_IS_DOUBLE macro in config file parsing, to check
4017           whether given configuration value has been given already.
4018
4019           Affected files silcd/serverconfig.[c], server.[c].
4020
4021         * Splitted the doc/example_silcd.conf.in.  Separated the crypto
4022           algorithm parts and created new file silcalgs.conf, that
4023           is now included from the example_silcd.conf.in.
4024
4025         * Optimized the silc_server_connect_to_router_second to take
4026           the connection configuration object from the SilcServerConnection
4027           object instead of finding it during the connecting phase.
4028           Added the configuration object to SilcServerConnection struct.
4029           Affected files silcd/server_internal.h, server.c.
4030
4031 Thu Feb 14 16:02:26 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4032
4033         * Add the client on channel after it was resolved at the
4034           channel message receiving, and it was not already on the
4035           channel.  Affected file lib/silcclient/client_channel.c.
4036
4037 Wed Feb 13 23:16:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4038
4039         * Fixed the public key authentication to allocate always the
4040           destination signature buffer instead of using static buffer.
4041           Affected file silcd/protocol.c.
4042
4043 Wed Feb 13 20:51:13 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4044
4045         * Unified the serverconfig.[ch]'s helper function interface.
4046           Affected file silcd/serverconfig.[ch].
4047
4048         * Removed doc/example_silc.conf.in since it is redundant.
4049           The make install will now install irssi/silc.conf file.
4050
4051         * Added new Passphrase and Publickey authentication methods to
4052           config file, allowing both public key and passphrase based
4053           authentication to be set at the same time.
4054
4055           Added `prefer_passphrase_auth' setting in config file which
4056           can be used to set to prefer passwd auth if both passwd and
4057           public key is set.  If not set, public key is preferred.
4058           This has effect only when being initiator (responder will try
4059           both anyway).
4060
4061           Added support for authentication with passphrase and public key
4062           at the same time.  The passphrase is tried first always since
4063           it is faster to check.
4064
4065           Affected file silcd/serverconfig.[ch], server.c, protocol.[ch].
4066
4067 Wed Feb 13 12:46:25 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
4068
4069         * Merged the new SILC Config library, with the server parsing
4070           support.  Read the header file silcconfig.h or the toolkit
4071           documentation for the news.  Affected files are
4072           doc/example_silcd.conf.in lib/silcutil/silcconfig.[ch]
4073           silcd/command.c silcd/packet_receive.c silcd/packet_send.c
4074           silcd/protocol.c silcd/server.c silcd/server_backup.c
4075           silcd/serverconfig.[ch] silcd/silcd.c.
4076
4077         * Fixed some silclog documentation.  Affected file is
4078           lib/silcutil/silclog.h.
4079
4080 Sun Feb 10 18:11:30 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4081
4082         * The silc_cipher_register, silc_hash_register and
4083           silc_hmac_register now checks if the object to be registered
4084           is registered already.  Affected files are
4085           lib/silccrypt/silccipher.c, silchash.c and silchmac.c.
4086
4087 Sun Feb 10 15:48:38 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4088
4089         * Merged new irssi from irssi.org's CVS, the version 0.7.99.
4090
4091 Sat Feb  9 14:54:33 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4092
4093         * Allow zero length channel messages inside the Channel Message
4094           Payload.  Affected file lib/silccore/silcchannel.c.
4095
4096         * Fixed scripts/silcdoc/silcdoc to support all kinds of filenames
4097           as header filenames.
4098
4099         * Removed lib/silcclient/README and created HTML file
4100           lib/silcclient/silcclient_using.html, which is now included
4101           as part of Toolkit documentation.
4102
4103 Thu Feb  7 10:12:25 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4104
4105         * Fixed CUMODE_CHANGE notify handling to change the mode of
4106           correct client.  Affected file lib/silcclient/client_notify.c.
4107
4108         * Make silc_rng_alloc fail if it cannot allocate the sha1
4109           hash algorithm.  Affected file lib/silccrypt/silcrng.c.
4110
4111 Sun Feb  3 17:20:52 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4112
4113         * Fixed the file transfer's key agreement payload to include
4114           zero port also if the hostname is NULL because it could not
4115           be bound.
4116
4117           Call file transfer monitor callback now also if error occurs
4118           during key agreement protocol.
4119
4120           Changed the silc_client_file_send interface to return the
4121           SilcClientFileError instead of session id.  The session ID
4122           is returned into pointer provided as argument.
4123
4124           Check that the file exists locally before sending the
4125           file transfer request at all.
4126
4127           Affected file lib/silcclient/client_ftp.c, silcapi.h.
4128
4129         * Added SILC_CLIENT_FILE_KEY_AGREEMENT_FAILED file transfer
4130           error than can occur while key agreement protocol.  Affected
4131           file lib/silcclient/silcapi.h.
4132
4133         * Fixed the event_mode CMODE handler to not crash when mode
4134           is changed and +k mode is set in the channel.  Affected file
4135           irssi/src/silc/core/silc-channels.c.
4136
4137         * Fixed SILC_LOG_ERROR to give out Error and not Warning, and
4138           SILC_LOG_WARNING to give out Warning and not Error.  Affected
4139           file lib/silcutil/silclog.c.
4140
4141         * Fixed the channel message payload decryption in the function
4142           silc_channel_message_payload_decrypt to not modify the original
4143           buffer before it is verified that the message decrypted
4144           correctly.  Otherwise, next time it is called with correct
4145           channel key it won't encrypt since the payload is corrupted.
4146           Affected file lib/silccore/silcchannel.c.
4147
4148 Sun Feb  3 11:46:12 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4149
4150         * Do not constantly resize the window.  A fix patch by cras.
4151           Affected file irssi/src/fe-text/screen.c.
4152
4153 Sat Feb  2 16:54:18 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4154
4155         * Applied IPv6 fix patch from Jun-ichiro itojun Hagino.
4156           Affected file lib/silcutil/silcnet.c.
4157
4158 Fri Feb  1 22:33:11 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4159
4160         * Fixed a bug in hash table internal routine for traversing
4161           the table with foreach callback.  The current entry may
4162           become invalid in the callback but it was referenced after
4163           the callback returned.
4164
4165           Do not allow auto rehashing of hash table during the
4166           silc_hash_table_foreach operation, for same reasons as it is
4167           not allowed for SilcHashTableList.  Affected files are
4168           lib/silcutil/silchashtable.[ch].
4169
4170 Fri Feb  1 14:55:00 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4171
4172         * Defined DLLAPI into silcincludes.h and silcwin32.h for
4173           Win32 DLL.  extern's in header files are now declared with
4174           DLLAPI.
4175
4176 Thu Jan 31 23:34:33 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4177
4178         * Fixed private message handling.  It used some old code that
4179           caused the client to crash.  Affecte file is
4180           lib/silcclient/client_prvmsg.c.
4181
4182 Thu Jan 31 19:06:22 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4183
4184         * Added function silc_client_add_channel,
4185           silc_client_replace_channel_id, and removed functions
4186           silc_client_new_channel_id and silc_idlist_get_channel_by_id
4187           from client library.
4188
4189         * Added cross reference of the joined channels to the
4190           SilcClientEntry, and changed the SilcChannelEntry's
4191           users list to SilcHashTable.  The affected files are
4192           lib/silcclient/idlist.[ch].
4193
4194         * Fixed a bug in hash table tarversing.  While the hash table
4195           is traversed with SilcHashTableList the table must not be
4196           rehashed.  It is now guaranteed that auto rehashable tables
4197           are not rehashed while tarversing the list.  Also defined that
4198           silc_hash_table_rehash must not be called while tarversing
4199           the table.  Added function silc_hash_table_list_reset that must
4200           be called after the tarversing is over.  The affected files are
4201           lib/silcutil/silchashtable.[ch].
4202
4203         * Changed all hash table traversing to call the new
4204           silc_hash_table_list_reset in server and in client library.
4205
4206         * Added function silc_client_on_channel to return the
4207           SilcChannelUser entry if the specified client entry is joined
4208           on the specified channel.  This is exported to application as
4209           well.  Affected files lib/silcclient/client_channel.c, silcapi.h.
4210
4211 Wed Jan 30 19:14:31 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4212
4213         * Fixed founder regaining problem with JOIN command on normal
4214           server.  The notify for mode change must be sent always and
4215           not only if !cmd->pending.  Affected file silcd/command.c.
4216
4217         * Fixed the WHOWAS command's reply sending to support the
4218           lists correctly.  Affected file silcd/command.c.
4219
4220 Wed Jan 30 11:11:47 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4221
4222         * When sending JOIN command to router for processing the
4223           sender's old command identifier was not saved back to the
4224           sender's command context, fixed now.  The affected file is
4225           silcd/command.c.
4226
4227         * Create the key in JOIN command of the router did not return
4228           the channel key, added check for this.  Affected file is
4229           silcd/command.c.
4230
4231         * Fixed a channel ID update bug in JOIN command reply.  Do
4232           not directly upgrade the ID but call the function
4233           silc_idlist_replace_channel_id if the ID was changed.
4234           Affected file silcd/command_reply.c.
4235
4236         * Fixed memory leaks from command calling if it would fail.
4237           Affected file silcd/command.c.
4238
4239 Tue Jan 29 19:49:31 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4240
4241         * Applied patches from cras:
4242
4243           Memory leak fixes around libaries, irssi window resize fix,
4244           new silclist.h and silcdlist.h, all extern inline changed to
4245           static inline.
4246
4247         * Removed dotconf from lib/dotconf, not needed anymore.
4248
4249         * Removed TRQ from lib/trq, not needed anymore.
4250
4251         * Do more frequent heartbeats (5 minutes instead of 10 minutes)
4252           with server connections.  Later this will be configurable
4253           in config file after new config file is done.  Affected file
4254           silcd/server.c.
4255
4256 Tue Jan 29 10:35:03 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4257
4258         * Fixed a crash in server related to channel announcements.
4259           Affected file silcd/server.c.
4260
4261 Mon Jan 28 17:49:42 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4262
4263         * Fixed memory leaks in silc_server_create_new_channel*
4264           functions.  Affected file silcd/server.c.
4265
4266         * Fixed the CHANNEL_CHANGE notify to re-announce the channel
4267           which ID was changed.  This way the router will send the
4268           user list for the channel again, and server won't be in
4269           desync in some rare circumstances.  Affected file is
4270           silcd/packet_receive.c.
4271
4272 Sun Jan 27 21:04:19 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4273
4274         * Check for NULL socket pointer in the function
4275           silc_server_packet_send_to_channel_real.  Affected file
4276           silcd/packet_send.c.
4277
4278         * Fixed the BAN notify handling to correctly remove ban
4279           list.  Affected file silcd/packet_receive.c.
4280
4281 Sat Jan 26 23:01:03 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4282
4283         * Fixed some header addition to Toolkit distribution in
4284           lib/silcutil/Makefile.am and lib/trq/Makefile.am.
4285
4286         * Added lib/silcclient/client_ops_example.h as an template
4287           file for application programmers to quickly start using
4288           the SilcClientOperation functions in their application.
4289           Updated the lib/silcclient/README as well to tell about this
4290           nice file made available.
4291
4292 Sat Jan 26 10:45:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4293
4294         * Call silc_server_remove_from_channels when removing client
4295           entry when NO_SUCH_CLIENT_ID was received.  Affected file
4296           is silcd/command_reply.c.
4297
4298 Fri Jan 25 19:12:36 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4299
4300         * Added server & router operator statistics updating.  Affected
4301           file silcd/packet_receive.c and silcd/command.c.
4302
4303         * Fixed the SERVER_SIGNOFF notify handling on normal server
4304           not to save the history information for clients.  Same was
4305           fixed earlier in remove_clients_by_server function, but not
4306           here.  Affected file silcd/packet_receive.c.
4307
4308         * Raised the default connection-retry count from 4 to 7 in
4309           server.  Affected file silcd/server.h.
4310
4311         * Cancel any possible reconnect timeouts when we start the
4312           key exchange.  Affected file silcd/server.c.
4313
4314         * Do not reconnect on connection failure when SCONNECT was
4315           given.  Affected files silcd/server.[ch].
4316
4317 Tue Jan 22 18:19:36 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4318
4319         * Removed assert()'s from the lib/silcclient/client_keyagr.c.
4320
4321         * Fixed the NICK command to always give the unformatted
4322           nickname to the one giving the NICK command.  If unformatted
4323           nickname is cached already it will be formatted and the
4324           local entry will always get the unformatted nickname.
4325           Affected file lib/silcclient/idlist.c.
4326
4327         * Fixed some double frees from client library commands.
4328           Affected file is lib/silcclient/command.c.
4329
4330         * Fixed CUMODE command in server to assure that no one can
4331           change founder's mode than the founder itself, there was a
4332           little bug.  Affected file silcd/command.c.
4333
4334 Mon Jan 21 19:07:53 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4335
4336         * Removed the SilcClientCommandDestructor from the client
4337           libary, it is not needed anymore.  Affected files are
4338           lib/silcclient/silcapi.h, command[_reply].[ch],
4339           client_notify, idlist.c.
4340
4341         * Fixed GETKEY command to first resolve client, and then
4342           resolve the server only if the client was not found, instead
4343           of resolving both at the same time.  Affected file is
4344           lib/silcclient/command.c.
4345
4346         * Added silc_client_start_key_exchange_cb and lookup the
4347           remote hostname and IP address before starting the key
4348           exchange with server.  The affected file is
4349           lib/silcclient/client.c.
4350
4351         * The server's public key is now saved using the IP address
4352           of the server and not the servername for the filename.
4353           The hostname public key filename is checked as an fall back
4354           method if the IP address based filename is not found.
4355
4356           Fixed the GETKEY command to save the fetched server key
4357           in correct filename.
4358
4359           Print the remote server's hostname now when new key is
4360           received during connection process.  Affected file is
4361           irssi/src/silc/core/client_ops.c.
4362
4363         * Return always our own public key to the client if it asks
4364           for it with GETKEY command.  Affected file silcd/command.c.
4365
4366         * Removed the use_auto_addr variable from default config
4367           file since it was in wrong section.  Affected file is
4368           irssi/src/config.
4369
4370         * Fixed TOPIC_CHANGE notification to not route it when it
4371           was sent using silc_server_send_notify_to_channel function.
4372           Affected file silcd/command.c.
4373
4374         * Fixed silc_server_send_notify_kicked to send the kicker's
4375           Client ID also, it was missing.  Affected files are
4376           silcd/command.c, silcd/packet_send.[ch].
4377
4378 Thu Jan 17 18:59:11 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4379
4380         * Do not save client history information in SERVER_SIGNOFF.
4381           Fixes the bug in normal server that it does not detect
4382           the client becoming valid after the server becomes back
4383           online.  Affected file silcd/server_util.c.
4384
4385         * Added `sock_error' field  into the SilcSocketConnection
4386           context.  When error occurs during socket operation (read
4387           or write) the error is saved.  Added also new function
4388           silc_socket_get_error to return human readable socket error
4389           message.  Affected files are lib/silcutil/silcsockconn.[ch],
4390           lib/silcutil/unix/silcunixsockconn.c, and
4391           lib/silcutil/win32/silcwin32sockconn.c.
4392
4393         * The server now prints the socket error message in the
4394           signoff for client.  Affected file silcd/server.c.
4395
4396         * Fixed the `created' channel information sending from router
4397           to server in JOIN command.  Checks now whether the channel
4398           really was created or not and set it according that.
4399
4400           Fixed the JOIN command to use the client entry's current
4401           ID during the joining procedure instead of the one it sent
4402           in the command (it is checked though), since it can change
4403           between the packet processing and command processing, and
4404           would just case unnecessary pain in the client end.  Affected
4405           file silcd/command.c.
4406
4407         * Fixed a channel key payload sending to use correct channel
4408           ID when the server was forced to change the channel's ID by
4409           router.  Router sent the key payload with the old Channel ID.
4410           Affected file silcd/packet_receive.c.
4411
4412 Wed Jan 16 22:26:30 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4413
4414         * Call silc_server_save_channel_key only if the key payload
4415           was provided in the JOIN command's command reply.  Affected
4416           file silcd/command_reply.c.
4417
4418 Tue Jan 15 18:49:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4419
4420         * Fixed silc_mp_sizeinbase to return the value correctly with
4421           MPI.  Affected file lib/silcmath/mp_mpi.c.
4422
4423         * Fixed the stop_server signal to correctly stop the scheduler
4424           and gracefully stop the server when SIGTERM or SIGINT signals
4425           are received.  Affected file silcd/silcd.c.
4426
4427 Mon Jan  7 23:38:19 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
4428
4429         * Simple handling of TERM and HUP signals. Also added some log
4430           flushing call around.  Affected file is
4431           silcd/silcd.c.
4432
4433         * Fixed small bugs in silclog.c. Now buffering output will take
4434           effect after 10 seconds since startup: This will ensure that
4435           no important startup messages are lost. Also output redirection
4436           will preserve original format ([Date] [Type] message).
4437           Affected file is lib/silcutil/silclog.c.
4438
4439         * Added two options to the config file, in the logging section:
4440           quicklogs:<yes/no>: and flushdelay:<seconds>:.  Affected files
4441           lib/silcutil/silclog.[ch], silcd/serverconfig.[ch].
4442
4443 Sun Jan  6 12:49:40 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4444
4445         * Do not print the warning about log files not being initialized
4446           more than once to avoid excess logging.  Affected file is
4447           lib/silcutil/silclog.c.
4448
4449         * Fixed the SIM compilation in lib/silcsim/Makefile.am.  Fixed
4450           the SIM copying in make install in Makefile.am.pre.
4451
4452 Sun Jan  6 01:10:21 CET 2001  Johnny Mnemonic <johnny@themnemonic.org>
4453
4454         * Rewritten silclog APIs. Globally interesting changes follows:
4455           silc_log_set_files() changed to silc_log_set_file().
4456           silc_log_set_callbacks() changed to silc_log_set_callback().
4457           ROBOdoc documented silclog header file.
4458           SilcLogCb now returns bool to wether inihibit the default
4459           handler or not (to keep the old behaviour return always TRUE).
4460           The new APIs should also fix the problem of the
4461           silcd_error.log file that was written in the current directory.
4462
4463           New features:
4464           Log files streams will remain opened after silc_log_set_file()
4465           call, means less CPU usage notably on high traffic servers.
4466           File streams are now full buffered, and flushed to the disk
4467           every 5 minutes, lesses HD activity and CPU usage.
4468           Messages can be redirected, allowing admins to configure
4469           one single logfile for all server messages.
4470           the silc_log_quick global variable to activate fast-logging.
4471           Affected files lib/silcutil/silclog.[ch]
4472
4473         * Changed some code to conform new silclog APIs. Affected
4474           files are doc/example_silcd.conf.in, silcd/server.c
4475           irssi/src/silc/core/silc-core.c, silcd/serverconfig.[ch],
4476           silcd/silcd.c.
4477
4478         * Fixed a memory leak that could occur in some situations.
4479           Affected file silcd/serverconfig.c.
4480
4481 Sat Jan  5 13:37:29 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4482
4483         * Added the silc_client_del_client to remove the client from
4484           all channels as well.  Affected file lib/silcclient/idlist.c.
4485
4486         * Fixed the client library to correctly remove the client
4487           from all channels when the client entry is being destroyed.
4488           Affected file lib/silcclient/client_notify.c, command.c.
4489
4490         * Added auto-nicking support to the client library.  If the
4491           applicatio now sets client->nickname it will be sent to the
4492           server after connecting by the library.  This way for example
4493           SILCNICK (or IRCNICK) environment variables will have effect
4494           and always change the nickname automatically to whatever
4495           it is wanted.  Affected file lib/silcclient/client.[ch].
4496
4497         * Renamed silc_server_command_bad_chars to the
4498           silc_server_name_bad_chars and moved it to the
4499           silcd/server_util.[ch].  Added also new function
4500           silc_server_name_modify_bad to return nickname that
4501           includes bad characters as new nickname without those
4502           bad characters.  This check and modify is now used in
4503           silc_server_new_client when the username is initially set
4504           as nickname, so it must be checked to be valid nickname.
4505           Affected file silcd/packet_receive.c.
4506
4507         * The nickname length is now taken from the packet for real
4508           and not trusted to strlen() since it clearly can return
4509           wrong length for nickname including bad characters.  This
4510           also applies to channel names.  Affected file silcd/command.c.
4511
4512         * Removed the lib/silcsilm/modules directory.  Modules are now
4513           compiled into the lib/silcsim.  Fixed the copying of the
4514           modules to follow symbolic links in Makefile.am.pre.
4515
4516 Wed Jan  2 18:56:21 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4517
4518         * Fixed silc_string_regexify list creation.  Fixes bugs with
4519           BAN and INVITE commands in server.  The affected file is
4520           lib/silcutil/unix/silcunixutil.c.
4521
4522 Sun Dec 30 13:41:34 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4523
4524         * Removed the command destructor entirely from the server's
4525           command and command reply routines.  It is not needed, and
4526           its usage was buggy and caused crashes.  Affected files are
4527           silcd/command[_reply].[ch].
4528
4529 Fri Dec 28 12:43:22 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4530
4531         * Cancel protocol and NULL sock->protocol if timeout
4532           occurred during protocol.  Affected file silcd/server.c.
4533
4534         * Cancel protocol timeouts always before calling the final
4535           callback, to assure that after final callback is called
4536           no other state will be called for the protocol anymore.
4537           Affected file silcd/protocol.c.
4538
4539         * Print error log if incoming connection configuration could
4540           not be found.  Affected file silcd/server.c.
4541
4542         * Fixed JOIN command to correctly save the founder mode
4543           to the client on normal SILC server, when the channel
4544           was created by the router.  Affected file silcd/command.c.
4545
4546         * Fixed LIST command (hopefully) to send correct reply
4547           packets.  Affected file silcd/command.c.
4548
4549 Thu Dec 20 16:14:52 CET 2001  Pekka Riikonen <priikone@silcnet.org>
4550
4551         * The silc_packet_receive_process now returns FALSE if the
4552           read data was invalid packet, and TRUE if it was ok.
4553
4554           The server now checks that if unauthenticated connection
4555           sends data and its processing fails the server will close
4556           the connection since it could be a malicious flooder.
4557
4558           Affected files lib/silccore/silcpacket.[ch], silcd/server.c.
4559
4560 Wed Dec 19 21:31:25 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4561
4562         * Make sure the warning about error opening a log file is
4563           printed only once and not everytime it fails (produces
4564           too much useless log).  Affected file lib/silcutil/silclog.c.
4565
4566 Wed Dec 19 18:21:51 CET 2001  Johnny Mnemonic <johnny@themnemonic.org>
4567
4568         * Made the silc_server_daemonise() function more readable.
4569           Affected file silcd/server.c.
4570
4571         * Pid file is now optional, the user may comment it out from
4572           the config file. Removed define SILC_SERVER_PID_FILE, we
4573           don't need a default any longer.  Affected file
4574           configure.in.pre, lib/Makefile.am.pre.
4575
4576         * Make some use of the pid file. The server now dies at startup
4577           if it detects a valid pid file on his path. The server would
4578           die anyway in this circumstance, because of the bind() failure.
4579           Affected file silcd/silcd.c.
4580
4581         * No longer compiling lib/dotconf.
4582
4583 Mon Dec 17 18:24:27 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4584
4585         * Fixed JOIN command parsing not to crash.  Affected file
4586           lib/silcclient/command.c.
4587
4588         * Fied the NICK_CHANGE notify to add the new client entry
4589           even it is resolved.  This removes an <[unknown]> nick
4590           thingy bug in the client.  Affected file is
4591           lib/silcclient/client_notify.c.
4592
4593         * Do not try to allocate 0 bytes (efence does not like it)
4594           in lib/silccore/silccomand.c when encoding payload.
4595
4596         * Do not take IRCNICK as nickname in Irssi SILC client since
4597           it is not possible to set nickname before hand connecting
4598           the server (TODO has an entry about adding auto-nicking
4599           support).
4600
4601         * Changed the silc_server_command_pending to check whether
4602           there already exists an pending entry with the specified
4603           command, command identifier and pending callback.  This is
4604           to fix IDENTIFY and WHOIS related crashes that may register
4605           multiple pending commands with same identifier.  Affected
4606           file silcd/command.c.
4607
4608         * Fixed the server to reconnect to the router even if it
4609           was already reconnecting and EOF was received.  This to
4610           fix a possibility that the server wouldn't ever try to
4611           auto-reconnect to the router.  Affected file silcd/server.c.
4612
4613 Sat Dec 15 20:31:50 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4614
4615         * Fixed the server's password authentication to use the
4616           length of the locally saved password, and not the one
4617           sent in the packet.  Affected file silcd/protocol.c.
4618
4619         * Fixed same password authentication problem in the
4620           Authentication Payload handling routines in
4621           lib/silccore/silcauth.c.
4622
4623         * Yet another password authentication problem fixed with
4624           channel password handling in silcd/command.c.
4625
4626 Mon Dec 10 19:57:40 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4627
4628         * If first character of string in silc_parse_userfqdn is '@'
4629           then do not parse it.  Affected file is
4630           lib/silcutil/silcutil.c.
4631
4632 Sun Dec  9 22:18:50 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4633
4634         * Fixed minor bug in IDENTIFY command reply sending, which
4635           caused various weird problems during JOIN when it was
4636           resolving names for users.  Affected file silcd/command.c.
4637
4638 Sun Dec  9 19:18:41 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4639
4640         * Fixed the IDENTIFY command reply sending to chech better valid
4641           clients.  It was possible to send incomplete list of replies.
4642           Affected file silcd/command.c.
4643
4644 Sat Dec  8 15:58:31 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4645
4646         * Added silc_client_command[s]_[un]register functions now to
4647           dynamically register the commands in client library.  Removed
4648           the static table of commands.  This allows the client library
4649           to call commands without causing the application to know about
4650           what commands library has called.
4651
4652           Removed the INFO command reply kludge to detect when the command
4653           was called by library.  Now library use its own command reply
4654           function for INFO command.
4655
4656           Added function silc_client_command_call to call a command.
4657           Application can use it to call command, not access the structure
4658           directly.
4659
4660           Now all commands that are sent by the client library (not
4661           explicitly sent by application) use own command reply functions.
4662
4663           Affected files around lib/silcclient/ and in
4664           irssi/src/silc/core/.
4665
4666         * Fixed the WHOIS command reply sending to chech better valid
4667           clients.  It was possible to send incomplete list of replies.
4668
4669           Fixed the WHOIS and IDENTIFY to send the request to router
4670           if normal server did not do it and did not find any results.
4671
4672           Affected file silcd/command.c.
4673
4674 Thu Dec  6 17:21:06 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4675
4676         * Moved the internal data from SilcClient context into its
4677           own file, not accesible to application.  Affected files
4678           lib/silcclient/client.h and lib/silcclient/client_internal.h,
4679           and other files in client library.
4680
4681 Thu Dec  6 10:37:55 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4682
4683         * Added doc/examples installation target in Makefile.am.pre.
4684           A patch by salo.
4685
4686 Tue Dec  4 17:43:19 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4687
4688         * If NO_SUCH_CLIENT_ID notify is received for WHOIS or IDENTIFY
4689           commands the found client entry will be removed from the
4690           cache, after notifying application about the error.  Affected
4691           file lib/silcclient/command_reply.c.
4692
4693         * Changed the /MSG to check for exact nickname user gave, and
4694           not let `nick' match `nick@host' if it is only one found.  Now,
4695           user must type the exact nickname (like nick@host2) even if
4696           there are no more than one same nicks found.  This is to avoid
4697           a possibility of sending nickname to wrong nickname since
4698           `nick' could match `nick@host'.  Affected file is
4699           irssi/src/core/silc-servers.c.
4700
4701 Mon Dec  3 18:49:45 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4702
4703         * Do not print "you are now server operator" or similar when
4704           giving /away command.  Affected files are
4705           irssi/src/silc/core/client_ops.c, silc-servers.h.
4706
4707         * Made the silc_server_command_pending_error_check to send
4708           the same command reply payload it received back to the
4709           original sender of the command.  This way all arguments
4710           that was received by the server will be received by the
4711           client too.  Affected file silcd/command.c.
4712
4713         * Added the silc_idcache_add to return the created cache entry
4714           to a pointer.  Affected file lib/silccore/silcidcache.[ch].
4715
4716         * Add global clients to expire if they are not on any channel.
4717           This is because normal server will never know if they signoff
4718           if they are not on any channel.  The cache expiry will take
4719           case of these entries.  This is done by normal servers only.
4720           The affected files are silcd/command_reply.c,
4721           silcd/idlist.[ch], silcd/server and silcd/packet_receive.c.
4722
4723         * If server receives invalid ID notification for WHOIS or
4724           IDENTIFY and the ID exists in the lists, it is removed.
4725           Affected file silcd/command_reply.c.
4726
4727         * If NO_SUCH_CLIENT_ID is received for WHOIS or IDENTIFY command
4728           in client then client entry that it matches is searched and
4729           the nickname is printed on the screen for user.  Affected
4730           file irssi/src/silc/core/client_ops.c.
4731
4732 Mon Dec  3 11:56:59 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4733
4734         * Use cache entry expire time in the LIST command reply to
4735           purge old entries from the cache after the LIST command
4736           reply has been received.  This way we don't have non-existent
4737           entries in the cache for too long.  Affected file is
4738           silcd/command_reply.c.
4739
4740 Sun Dec  2 23:29:07 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4741
4742         * If we are normal server, and we've not resolved client info
4743           in WHOIS or IDENTIFY from router, and it is global client,
4744           we'll check whether it is on some channel.  If it is not
4745           then we cannot be sure about its validity and will resolve it
4746           from router.  Fixes a bug in WHOIS and IDENTIFY.  Affected
4747           file silcd/command.c.
4748
4749         * Search channel by name (if possible) rather than by ID
4750           in IDENTIFY command's command reply.  Affected file is
4751           silcd/command_reply.c.
4752
4753 Sun Dec  2 13:48:46 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4754
4755         * Distribute to the channel passphrase in CMODE_CHANGE notify.
4756           Updated specs and implemented it.  Affected file silcd/command.c,
4757           silcd/packet_send.c and silcd/packet_receive.c.
4758
4759         * Implemented the <founder auth> payload handling in the JOIN
4760           command.  If provided all conditions for channel joining
4761           except requirement to provide correct passphrase can be
4762           overrided by the channel founder.  Updated the protocol specs.
4763           Affected file silcd/command.c.
4764
4765           Added support for founder auth in JOIN command in client
4766           library.  Fixed the parsing of the JOIN command now to support
4767           all options as they should be.  The affected file is
4768           lib/silcclient/command.c.
4769
4770         * Optimized the WHOIS and IDENTIFY commands to send the request
4771           to router only if it includes nicknames or other names.  If
4772           they include only IDs then check the local cache first before
4773           routing.  Affected file is silcd/command.c.
4774
4775         * Added channels topic announcements.  Affected file is
4776           silcd/packet_receive.c and silcd/server.c.
4777
4778         * Fixed the silc_server_send_notify_topic_set to really destine
4779           the packet to channel.  Affected file silcd/packet_send.c.
4780
4781         * Fixed a crash in CHANNEL_CHANGE notify handling in the client
4782           library.  Affected file lib/silcclient/client_notify.c.
4783
4784         * Added UMODE announcements.  Affected file silcd/server.c.
4785
4786 Sat Dec  1 12:52:39 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4787
4788         * Memory leak fixes in:
4789
4790           lib/silcutil/silcsockconn.c
4791           lib/silcske/silcske.c
4792           lib/silcske/groups.c
4793           lib/silccrypt/rsa.c
4794           lib/silccrypt/silcpkcs.c
4795           lib/silccore/silccommand.c
4796           lib/silccore/silcidcache.c
4797           silcd/idlist.c
4798           silcd/packet_send.c
4799           silcd/command.c
4800
4801         * ROBOdoc documented the lib/silcske/groups.h file and a
4802           bit changed the interface for better.
4803
4804 Thu Nov 29 22:12:50 EET 2001  Pekka Riikonen <priikone@silcnet.org>'
4805
4806         * Update the client entry context in the ID cache after
4807           nick change.  Affected file lib/silcclient/command.c.
4808           Fixes the CUMODE command when regaining founder privileges,
4809           and a little WHOIS problem.
4810
4811         * Fixed silc_net_gethostbyname to correctly call the
4812           inet_ntop.  Affected file lib/silcutil/silcnet.c.
4813
4814 Thu Nov 29 19:31:23 EET 2001  Pekka Riikonen <priikone@silcnet.org>'
4815
4816         * Added IPv6 support checking to the configure.in.pre, added
4817           also --enable-ipv6 option to override the check.  Affected
4818           file configure.in.pre.
4819
4820         * The silc_thread_create now calls the start function
4821           directly if threads support is not compiled in.  Removes
4822           ugly #ifdef's from generic code.  Affected files are
4823           lib/silcutil/unix/silcunixthread, win32/silcwin32thread.c.
4824
4825         * Added silc_net_gethostby[name/addr]_async to asynchronously
4826           resolve.  Affected files are lib/silcutil/silcnet.[ch].
4827
4828         * Added support for rendering IPv6 based server, client and
4829           channel IDs.  Affected file lib/silcutil/silcutil.c.
4830
4831         * Added support for creating IPv6 based server IDs.  Affected
4832           file is silcd/serverid.c.
4833
4834 Wed Nov 28 23:46:09 EET 2001  Pekka Riikonen <priikone@silcnet.org>'
4835
4836         * Added silc_net_gethostby[addr/name] into the
4837           lib/silcutil/silcnet.[ch].  Added IPv6 support to Unix network
4838           routines.  Added silc_net_is_ip[4/6].  Affected file is
4839           lib/silcutil/unix/silcunixnet.c.  All routines that take
4840           address as argument now supports both IPv4 and IPv6 addresses.
4841
4842 Mon Nov 26 18:09:48 EET 2001  Pekka Riikonen <priikone@silcnet.org>'
4843
4844         * Fixed LIST command reply sending in server.  Affected file
4845           silcd/command.c.
4846
4847         * Server now sends the kicker's client ID in the KICK notify
4848           to the kicked client.  Affected file silcd/command.c.
4849
4850         * The client library now parses the kickers client ID and
4851           UI displays it.  Affected files lib/silcclient/client_notify.c
4852           and irssi/src/silc/core/silc-channels.c, module-formats.c.
4853
4854         * Made all payload parsing function prototypes consistent.
4855           They all take now const unsigned char * and uint32 pair as
4856           the payload data instead of SilcBuffer.  Changes all around
4857           the source tree.  Other unsigned char* -> const unsigned char*
4858           changes around the tree as well.
4859
4860         * Optimized SFTP client and server packet sending not to
4861           allocate new buffer for each packet but to recycle the
4862           first allocated buffer.  Affected files are
4863           lib/silcsftp/sftp_client.c, sftp_server.c, sftp_util.[ch].
4864
4865         * Optimized the SFTP client to use SilcList instead of
4866           SilcDList for requests, because it is faster.  Affected file
4867           is lib/silcsftp/sftp_client.c.
4868
4869         * Moved the ID Payload routines from lib/silccore/silcpayload.[ch]
4870           into lib/silccore/silcid.[ch].
4871
4872           Renamed silcpayload.[ch] into silcargument.[ch].
4873
4874 Mon Nov 26 15:01:53 CET 2001  Pekka Riikonen <priikone@silcnet.org>
4875
4876         * If client entry is deleted with active key agreement
4877           session, abort the session.
4878
4879           The silc_client_abort_key_agreement now calls the completion
4880           callback with new SILC_KEY_AGREEMENT_ABORTED status.
4881
4882           Affected file lib/silcclient/silcapi.h, client_keyagr.c and
4883           idlist.c.
4884
4885 Sun Nov 25 18:01:45 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4886
4887         * Don't use __restrict in older GCC's.  Affected file is
4888           lib/silcmath/mpi/mpi-priv.h.  A patch by salo.
4889
4890         * silc_net_localhost now attempts to reverse lookup the
4891           IP/hostname.  Affected file lib/silcutil/silcnet.c.
4892
4893         * Defined <founder auth> argument to the SILC_COMMAND_JOIN
4894           command.  It can be used to gain founder privileges at
4895           the same time when joining the channel.
4896
4897           Defined that the SILC_NOTIFY_TYPE_KICKED send the
4898           kicker's client ID as well.  Updated protocol specs.
4899
4900           Defined that the server must send SILC_COMMAND_IDENTIFY
4901           command reply with error status to client who sent
4902           private message with invalid client ID.
4903
4904           Updated the protocol specification.
4905
4906         * Added silc_server_send_command_reply to send any
4907           command reply.  Affected file silcd/packet_send.[ch].
4908
4909         * Added silc_id_payload_encode_data to encode ID payload
4910           from raw ID data.  Affected file lib/silccore/silcpayload.[ch].
4911
4912         * The server now send IDENTIFY command reply with error
4913           status if client ID in private message is invalid.  Affected
4914           file silcd/packet_receive.c.
4915
4916         * Save the server key file with server's IP address in
4917           the filename instead of hostname.  The affected file is
4918           irssi/src/silc/core/client_ops.c.
4919
4920 Sat Nov 24 20:08:22 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4921
4922         * Typo fixes in irssi/src/fe-common/silc/module-formats.c.
4923           A patch by Sunfall.
4924
4925         * Added libtool support for compiling shared objects in
4926           lib/silcsim.  Affected file configure.in.pre and
4927           lib/silcsim/Makefile.am.  Original patch by cras.
4928
4929 Fri Nov 23 23:30:59 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4930
4931         * Pid file configuration, and server's config file fixes
4932           patch by toma.  Updated CREDITS file.
4933
4934 Sun Nov 18 01:34:41 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4935
4936         * Fixed silc_client_channel_message to not try to decrypt
4937           the message twice if it resolved the destination client
4938           information.  This could cause of dropping one channel
4939           message.  Affected file lib/silcclient/client_channel.c.
4940
4941 Wed Nov 14 23:44:56 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4942
4943         * Added silc_client_run_one into lib/silcclient/silcapi.h and
4944           lib/silcclient/client.c. This function is used when the SILC
4945           Client is run under some other scheduler, or event loop or
4946           main loop.  On GUI applications, for example this may be
4947           desired to used to run the client under the GUI application's
4948           main loop.  Typically the GUI application would register an
4949           idle task that calls this function multiple times in a second
4950           to quickly process the SILC specific data.
4951
4952 Wed Nov 14 19:16:52 CET 2001  Johnny Mnemonic <johnny@themnemonic.org>
4953
4954         * Fixed silc_server_drop() for dropping the supplementary
4955           groups as well, this could cause a security hole on some
4956           systems.
4957
4958 Wed Nov 14 16:22:25 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4959
4960         * __pid_t -> pid_t in lib/silccrypt/silcrng.c.  A patch by
4961           johnny.
4962
4963         * Write PID file after dropping privileges.  Added -F option
4964           to run server on foreground.  A patch by debolaz.
4965           Affected files silcd/server.c, silcd/silcd.c.
4966
4967         * Fixed MOTD to return the MOTD file server name.  Affected
4968           file silcd/command.c.
4969
4970         * Added INFO command reply handling to the Irssi SILC Client.
4971           Affected file irssi/src/silc/core/client_ops.c.
4972
4973 Wed Nov 14 00:18:08 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4974
4975         * Fixed the silc_idcache_list_* routines to really support
4976           the dynamic list.  Fixes a crash.  Affected file is
4977           lib/silccore/silcidcache.c.
4978
4979         * Fixed the LIST command reply to really call LIST command's
4980           pending callbacks.  Affected file silcd/command_reply.c.
4981
4982 Tue Nov 13 00:49:17 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4983
4984         * Update conn->local_entry->nickname after giving NICK
4985           command.  Affected file lib/silcclient/command.c.
4986
4987 Sun Nov 11 23:43:02 PST 2001  Brian Costello <bc@wpfr.org>
4988
4989         * Added the [pid] option to the silcd configuration file
4990
4991           Affected files: serverconfig.[ch] and silcd.c
4992
4993 Sun Nov 11 23:56:39 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4994
4995         * Save fingerprint in WHOIS command reply in server.
4996           Affected file silcd/command_reply.c.
4997
4998         * Fixed NICK commands pending callback registration.
4999           Affected file lib/silcclient/command.c.
5000
5001 Sun Nov 11 10:49:10 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5002
5003         * Use ++server->cmd_ident when sending commands in server,
5004           instead of random number.  Affected file silcd/command.c.
5005
5006         * Fixed GETKEY command reply to call actually GETKEY pending
5007           command callbacks.  Affected file silcd/command_reply.c.
5008
5009         * A bit stricter check for nicknames.  Check for same nickname
5010           in NICK command also.  Affected file silcd/command.c.
5011
5012         * Do not call INFO command everytime client ID changes, only
5013           during first connecting.  Affected file lib/silcclient/client.c.
5014
5015         * Set the new nickname only after successful command reply for
5016           NICK command is returned by server.  Affected file
5017           lib/silcclient/command.c.
5018
5019         * Remove nicknames from nicklist during server_signoff notify.
5020           Should fix /NAMES bit more.  The affected file is
5021           irssi/src/silc/core/silc-channels.c.
5022
5023         * Added `fingerprint' field to the SilcIDListData in the
5024           silcd/idlist.h to hold the fingerprint of the client's
5025           public key.
5026
5027           Send the fingerprint of the client's public key in WHOIS
5028           command reply.
5029
5030           Affected files silcd/command.c, and silcd/idlist.[ch].
5031
5032         * Added silc_fingerprint into lib/silcutil/silcutil.[ch] to
5033           create fingerprint from given data.
5034
5035         * Show the fingerprint of the client's public key in WHOIS.
5036           Affected files irssi/src/module-formats.[ch] and
5037           irssi/src/silc/core/client_ops.c.
5038
5039         * Format the multiple same nicknames also during JOIN and
5040           NICK_CHANGE notifys.  Affected file is
5041           lib/silcclient/client_notify.c.
5042
5043         * Do not print error on screen for invalid private message
5044           payload since it can come if someone is sending private
5045           messages with wrong key.  Affected file
5046           lib/silccore/silcprivate.c.
5047
5048         * Fixed multiple concurrent /PING crash.  Affected file
5049           lib/silcclient/command.c.
5050
5051         * Changed the wrong ID encoding.  All IP addresses must be
5052           in MSB first order in encoded format.  They were encoded
5053           wrong and was in LSB format.  Affected files are
5054           silcd/serverid.c, lib/silcutil/silcutil.c.
5055
5056         * Remove silc_net_addr2bin_ne from lib/silcutil/silcnet.[ch].
5057
5058         * Call the `connect' client operation through the scheduler
5059           in case of error.  Affected file lib/silcclient/client.c.
5060
5061         * Call the `failure' client operation even if the error
5062           occurred locally during a protocol.  Affected file is
5063           lib/silcclient/protocol.c.
5064
5065         * Added support of sending LIST command to router from normal
5066           server.  This way normal server can get list of all channels
5067           in the network too.  Fixed the channel list sending in the
5068           server too.  Affected files are silcd/command.c, and
5069           silcd/command_reply.[ch].
5070
5071         * Added silc_server_update_channels_by_server and
5072           silc_server_remove_channels_by_server.  They are used during
5073           disconnection of primary router and in backup router protocol.
5074           Affected file silcd/server_util.[ch], silcd/server.c and
5075           silcd/server_backup.c.
5076
5077         * Fixed channel adding to global list in IDENTIFY command
5078           reply in server.  Affected file silcd/command_reply.c.
5079
5080 Sat Nov 10 21:39:22 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5081
5082         * If the incoming packet type is REKEY or REKEY_DONE process
5083           that packet always synchronously.  Fixes yet another MAC
5084           failed error on slow (dialup) connections.  Affected file
5085           lib/silcclient/client.c and silcd/server.c.
5086
5087 Thu Nov  8 22:21:09 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5088
5089         * Call check_version SKE callback for initiator too.  Affected
5090           file lib/silcske/silcske.c.
5091
5092         * Implemented fix for security hole found in the SKE that was
5093           fixed in the specification few days back; the initiator's
5094           public key is now added to the HASH value computation.
5095           Added backwards support for the old way of doing it too, for
5096           old clients and old servers.  Affected file is
5097           lib/silcske/silcske.c.
5098
5099         * Enabled mutual authentication by default in SKE.  If initiator
5100           is not providing mutual authentication the responder will
5101           force it.  This will provide the proof of posession of the
5102           private key for responder.  The affected files are
5103           lib/silcclient/protocol.c and silcd/protocol.c.
5104
5105         * Do not cache anymore the server's public key during SKE.
5106           We do mutual authentication so the proof of posession of
5107           private key is done, and if the server is authenticated in
5108           conn auth protocol with public key we must have the public
5109           key already.  Affected file silcd/protocol.c.
5110
5111         * Added new global debug variable: silc_debug_hexdump.  If
5112           it is set to TRUE SILC_LOG_HEXDUMP will be printed.  Affected
5113           file lib/silcutil/silclog.[ch].
5114
5115         * Fixed compilation warning due to char * -> const char *.
5116           Affected files lib/silcutil/silcnet.h, and
5117           lib/silccore/silcauth.[ch].
5118
5119 Wed Nov  7 20:43:03 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5120
5121         * Fixed CMODE command when new channel key was created.  If
5122           the creation failed the old key was removed.  Next time giving
5123           same command would crash the server since the old key was
5124           freed already.  Affected file silcd/command.c.
5125
5126         * Fixed the silc_server_announce_get_channels to not crash
5127           on reconnect.  Affected file silcd/server.c.
5128
5129 Wed Nov  7 17:15:07 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5130
5131         * Added silc_log_set_debug_string function to set a regex
5132           string to match for debug output.  Only the function names,
5133           or filenames matching the given debug string is actually
5134           printed.  This way it is possible to filter out those debug
5135           strings that user is not interested in.
5136
5137           Fixed a bug in silc_string_regexify.
5138
5139           Affected files lib/silcutil/silclog.[ch], and
5140           lib/silcutil/unix/silcunixutil.c.
5141
5142         * Changed the -d options in both server and Irssi SILC client
5143           to take the debug string as argument.  Affected files
5144           silcd/silcd.c and irssi/src/silc/core/silc-core.c.
5145
5146 Tue Nov  6 21:31:54 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5147
5148         * Added silc_hash_babbleprint to create a Bubble Babble
5149           Encoded fingerprint.  The encoding is developed by Antti
5150           Huima (draft-huima-babble-01.txt), and it creates human
5151           readable strings out of binary data.  Affected file
5152           lib/silccrypt/silchash.[ch].
5153
5154         * Print the babble print now in addition of fingerprint as well
5155           in Irssi SILC client.  Affected files are
5156           irssi/src/fe-common/silc/module-formats.[ch],
5157           irssi/src/fe-common/silc/core/client_ops.c.
5158
5159 Sun Nov  4 23:37:28 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5160
5161         * Fixed a security problem found in SKE.  The initiator's
5162           public key too is now added to the HASH hash value creation
5163           which is signed by the responder to create the SIGN value.
5164           This will prevent anyone in the middle to lie to the responder
5165           about the initiator's public key.  If this is done now, the
5166           man in the middle will get caught.  Updated the protocol
5167           specification.
5168
5169 Sun Nov  4 11:43:53 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5170
5171         * Better installation directory handling.  Configure module
5172           paths and other paths automatically to example_silc* files
5173           in doc/.  A patch by toma.
5174
5175         * Fixed compiler warning from MPI library, and from SILC RNG.
5176           A patch by johnny.
5177
5178         * Added SILC_SERVER_PID_FILE to define the pid file for server.
5179           It can be configured with ./configure.  A patch by toma.
5180
5181 Sat Nov  3 23:48:23 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5182
5183         * Find correct make to use in prepare-clean.  A patch by
5184           toma.  Affected file prepare-clean.
5185
5186 Sat Nov  3 22:04:00 PST 2001  Brian Costello <bc@mksecure.com>
5187
5188         * Added irssi variables use_auto_addr, auto_bind_ip,
5189           auto_bind_port and auto_public_ip.
5190
5191         * Changed the interface for silc_client_send_key_agreement
5192           in lib/silcclient/silcapi.h
5193
5194         Affected files:
5195
5196          irssi/src/silc/core/silc-core.c
5197          irssi/config
5198          lib/silcclient/silcapi.h
5199          irssi/src/silc/core/silc-channels.c
5200          lib/silcclient/client_keyagr.c
5201          irssi/docs/help/key
5202
5203 Sat Nov  3 17:48:55 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5204
5205         * Added silc_pkcs_public_key_compare to compare two
5206           public keys.  Affected file lib/silccrypt/silcpkcs.[ch].
5207
5208         * Check that the client who set the founder mode on the
5209           channel is the same client that is giving the founder
5210           mode to itself.  It is done by comparing the saved public
5211           key (it is saved even in the authentication is passphrase).
5212           Affected file silcd/command.c.
5213
5214 Fri Nov  2 18:52:08 EST 2001  Pekka Riikonen <priikone@silcnet.org>
5215
5216         * Do not process packet for disconnected socket connection.
5217           Affected file lib/silccore/silcpacket.c.
5218
5219         * Process the DISCONNECT packet through scheduler in the
5220           client library.  Affected file lib/silcclient/client.c.
5221
5222         * Fixed the silc_client_packet_parse to not to increase
5223           the packet sequence number if the conn->sock and the
5224           current socket connection is not same.  This can happen
5225           for example during key agreement when the conn includes
5226           multiple socket connections (listeners).  Affected file
5227           lib/silcclient/client.c.
5228
5229         * The sender of the file transfer request now provides also
5230           the pointer (listener) for the key exchange protocol.  If
5231           the listener cannot be created then it sends empty key
5232           agreement and lets the receiver provide the listener.
5233
5234           Added `local_ip' and `local_port' arguments to the
5235           silc_client_file_send.  If they are provided they are used,
5236           if not then it will attempt to find local IP address, if
5237           not found or bind fails then the remote client will provide
5238           the listener.
5239
5240           Affected files are lib/silcclient/client_ftp.c and
5241           lib/silcclient/silcapi.h.
5242
5243         * Extended the FILE SEND command to support defining the
5244           local IP and port for key exchange listener.  They are
5245           optional.  Affected file irssi/src/silc/core/silc-servers.c.
5246
5247 Thu Nov  1 22:10:07 EST 2001  Pekka Riikonen <priikone@silcnet.org>
5248
5249         * Defined to WHOIS command reply the sending of fingerprint
5250           of the client's public key (if the proof of posession of the
5251           corresponding private key is verified by the server).
5252           Updated to the protocol specification.
5253
5254         * Added support of receiving the client's public key's
5255           fingerprint in command reply in client library.  Affected
5256           file is lib/silcclient/command_reply.c, and
5257           lib/silcclient/idlist.[ch].
5258
5259 Thu Nov  1 18:06:12 EST 2001  Pekka Riikonen <priikone@silcnet.org>
5260
5261         * Do not send over 128 chars long nickname to the server
5262           in NICK command.  Affected file lib/silcclient/command.c.
5263
5264         * Do not send over 256 chars long channel names to the server
5265           in JOIN command.  Affected file lib/silcclient/command.c.
5266
5267 Tue Oct 30 22:48:59 EST 2001  Pekka Riikonen <priikone@silcnet.org>
5268
5269         * Assure that silc_server_close_connection cannot be called
5270           twice for same socket context.  Affected file is
5271           silcd/server.c.
5272
5273 Tue Oct 30 16:58:14 EST 2001  Pekka Riikonen <priikone@silcnet.org>
5274
5275         * Send error message to application if opening file for
5276           writing during file transfer fails.  Affected file is
5277           lib/silcclient/client_ftp.c.
5278
5279           Remove all file transfer sessions for a client that we're
5280           removing from ID cache.
5281
5282           Affected file is lib/silcclient/client_ftp.c.
5283
5284         * Fixed silc_net_addr2bin to return correct address.  Affected
5285           file lib/silcutil/[unix/win32]/silc[unix/win32]net.c.
5286
5287         * Fixed file transfer session removing on signoff notify.
5288           Affected file irssi/src/silc/core/silc-servers.c.
5289
5290         * Added the SilcClientFileError to be returned in the monitor
5291           callback.  Added NO_SUCH_FILE and PERMISSION_DENIED errors.
5292           Affected file lib/silcclient/silcapi.h.
5293
5294 Mon Oct 29 17:43:04 EST 2001  Pekka Riikonen <priikone@silcnet.org>
5295
5296         * Fixed a crash in silc_client_ftp_free_sessions and
5297           silc_client_ftp_session_free_client.  Affected file
5298           lib/silcclient/client_ftp.c.
5299
5300         * Added `disabled' field in the SilcChannelEntry in the server
5301           to indicate if the server entry is disabled.  Affected file
5302           silcd/idlist.h, silcd/command[_reply].c.
5303
5304         * SILC server adds now /var/run/silcd.pid everytime it is
5305           started.  Affected file silcd/silcd.c.
5306
5307         * Added silc_server_packet_send_clients to send a packet to
5308           the provided table of client entries.  Affected file
5309           silcd/packet_send.[ch].
5310
5311         * Fixed a crash in client resolving in client_prvmsg.c in
5312           client library.  Affected file lib/silcclient/client_prvmsg.c.
5313
5314         * Do not actually remove the client directly from ID cache
5315           during SERVER_SIGNOFF, but invalidate it.  This way we
5316           preserve the WHOWAS info for the client.  Affected file
5317           silcd/server_util.c.
5318
5319         * Fixed SERVER_SIGNOFF notify handling in the server.  The
5320           server is now able to process incoming SERVER_SIGNOFF notify
5321           for a server that it doesn't even know about.  It will remove
5322           the clients provided in the notify.  Affected file
5323           silcd/packet_receive.c.
5324
5325         * Check for partial packet in data queue after every packet that
5326           was found from the queue.  Return and wait for more data if
5327           there is partial data in queue.  Affected file is
5328           lib/silccore/silcpacket.c.
5329
5330 Sun Oct 28 18:46:27 EST 2001  Pekka Riikonen <priikone@silcnet.org>
5331
5332         * Added SilcClietFileError enum to indicate error in
5333           file transfer.  Added SILC_CLIENT_FILE_MONITOR_KEY_AGREEMENT
5334           and SILC_CLIENT_FILE_MONITOR_ERROR new monitor statuses.
5335           Affected files lib/silcclient/silcapi.h and
5336           lib/silcclient/client_ftp.c.
5337
5338         * Check that newsize in silc_buffer_realloc is larger than
5339           the old buffer's size.  Affected file lib/silcutil/silcbufutil.h.
5340
5341         * Added better monitor of file transfers.  It now monitors
5342           key agreement protocol during the file transfer too.  Added
5343           error reporting too.  Affected files
5344           irssi/src/silc/core/silc-servers.c,
5345           irssi/src/fe-common/silc/module-formats.[ch].
5346
5347         * Wrote a help file for FILE command.
5348
5349         * Added silc_rng_global_get_byte_fast to get not-so-secure
5350           random data as fast as possible.  Random data is read from
5351           /dev/urandom if available and from the SILC RNG if not
5352           available.  It is used in padding generation.  Affected file
5353           lib/silccrypt/silcrng.[ch].
5354
5355         * All packets in client library are now processed synchronously.
5356           Optimized packet processing a lot.  Affected file
5357           lib/silcclient/client.c.
5358
5359         * All server connection packets are processing synchronously
5360           now in server, to optimize packet processing.  Affected file
5361           silcd/server.c.
5362
5363         * Include files are installed now only in Toolkit distribution
5364           if make install is given.  Affected files: all Makefile.am's.
5365
5366 Thu Oct 25 22:44:06 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5367
5368         * Assure that silc_client_notify_by_server_resolve does not
5369           resolve the client information multiple times.  If it cannot
5370           be found by the first it cannot be found at all.  Affected
5371           file lib/silcclient/client_notify.c.
5372
5373         * Fixed WHOWAS command reply calling.  Affected file
5374           lib/silcclient/command_reply.c.
5375
5376         * Removed all references to silc_idlist_get_client from the
5377           Irssi SILC client since that call is internal call used by
5378           the library.  The Irssi SILC client will use now client
5379           retrieval functions found in silcapi.h.
5380
5381         * Fixed a bug in resolving nickname info before sending
5382           private message.  It used freed memory.  Affected file
5383           irssi/src/silc/core/silc-servers.c.
5384
5385 Thu Oct 25 19:04:49 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5386
5387         * Assure my_channels statistics cannot go negative in server.
5388           Affected files silcd/server.c, silcd/server_util.c.
5389
5390 Wed Oct 24 19:53:05 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5391
5392         * Upgraded dotconf 1.0.2 to 1.0.6 in lib/dotconf.
5393
5394 Tue Oct 23 13:51:19 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5395
5396         * Win32 Toolkit changes.  Affected files
5397           win32/silc.dsw, win32/libsilc/libsilc.def,
5398           win32/libsilcclient/libsilc.def,
5399           lib/silcutil/silcutil.c, and
5400           lib/sftp/sftp_fs_memory.c.
5401
5402 Mon Oct 22 16:35:05 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5403
5404         * Added silc_net_localip to return local host's IP address.
5405           Affected file lib/silcutil/silcnet.[ch].
5406
5407         * If key exchange or rekey protocol is active for a connection
5408           parse all packets syncronously since there might be packets
5409           in packet queue that we are not able to process without first
5410           processing packets before them.  Affected file silcd/server,
5411           lib/silcclient/client.c.
5412
5413         * SilcPacketParserCallback now returns TRUE or FALSE to indicate
5414           whether library should continue processing the packet.
5415           Affected file lib/silccore/silcpacket.h.
5416
5417         * Added SilcSFTPMonitor callback, SilcSFTPMonitors and
5418           SilcSFTPMonitorData to SFTP server to monitor various
5419           SFTP client requests.  Affected file lib/silcsftp/silcsftp.h,
5420           lib/silcsftp/sftp_server.c.
5421
5422         * Added silc_file_size to return file size.  Affected file
5423           lib/silcutil/silcutil.[ch].
5424
5425         * Implemented the file transfer support for the client library.
5426           Added preliminary support for simple client to client one-file
5427           transmission.  Affected file lib/silcclient/client_ftp.c,
5428           lib/silccilent/client.[ch].
5429
5430         * Added new local command FILE to the Irssi SILC Client.
5431           It is used to perform the file transfer.  It has subcommands
5432           SEND, RECEIVE, SHOW and CLOSE.  Affected files
5433           irssi/src/silc/core/client_ops.c,
5434           irssi/src/silc/core/silc-server.[ch].
5435
5436 Mon Oct 22 12:50:08 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5437
5438         * Relay the SILC_PACKET_FTP in the server.  Affected files
5439           silcd/server.c and silcd/packet_receive.c.
5440
5441 Sun Oct 21 20:21:02 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5442
5443         * Renamed silc_file_read and silc_file_write to functions
5444           silc_file_readfile and silc_file_writefile.  Added function
5445           silc_file_open and silc_file_close.  Affected files
5446           lib/silcutil/silcutil.[ch].
5447
5448 Thu Oct 18 20:58:13 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5449
5450         * Resolve the client info when received private message or
5451           channel message for a client which nickname we don't know.
5452           Affected files lib/silcclient/client_prvmsg.c and
5453           lib/silcclient/client_channel.c.
5454
5455         * Do not crash in /KEY if client is not connected.  Affected
5456           file irssi/src/silc/core/silc-channels.c.
5457
5458         * Added SilcClientStatus field to the SilcClientEntry in the
5459           lib/silcclient/idlist.h.
5460
5461           Added SILC_CLIENT_STATUS_RESOLVING to mark that the entry
5462           is incomplete and is being resolved, it won't be resolved
5463           twice.
5464
5465           Make sure also that USERS command reply does not resolve
5466           twice information.  Affected file is
5467           lib/silcclient/command_reply.c.
5468
5469           Make sure that silc_client_get_clients_by_list does not
5470           resolve twice same information.
5471
5472         * Check for valid client->id in the silc_server_free_client_data.
5473           Affected file silcd/server.c.
5474
5475         * Fixed /GETKEY nick@server not to crash if the server entry
5476           is not found.  Affected file lib/silcclient/command.c.
5477
5478         * Fixed the silc_server_check_cmode_rights to check the
5479           requested modes correctly.  Affected file silcd/command.c.
5480
5481 Thu Oct 18 12:10:22 CEST 2001  Pekka Riikonen <priikone@silcnet.org>
5482
5483         * Better checks for non-printable chars in nick added.
5484           Affected file silcd/command.c.
5485
5486 Thu Oct 18 09:18:58 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5487
5488         * Call the silc_server_udpate_servers_by_server in the
5489           primary router that comes back online in the backup resuming
5490           protocol.  Otherwise it routes packets wrong.  Affected file
5491           silcd/server_util.[ch], silcd/server_backup.c.
5492
5493 Wed Oct 17 16:51:18 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5494
5495         * Added SILC_STR_UI8_[N]STRING[_ALLOC] formats to the
5496           lib/silcutil/silcbuffmt.[ch].
5497
5498         * Redefined the SILC packet header to include the padding
5499           length.  Affected file lib/silccore/silcpacket.[ch].
5500
5501         * Added SILC_PACKET_PADLEN_MAX macro to return the padding
5502           length for maximum padding up to 128 bytes).  Affected
5503           file lib/silccore/silcpacket.h.
5504
5505         * Removed all backwards support for old 0.5.x MAC thingies.
5506           The SILC packet header change makes it impossible to be
5507           backwards compatible.
5508
5509         * Send the ENDING packet with timeout in the backup resuming
5510           protocol.  This is to assure that all routers has connected
5511           to the primary router.  Affected file silcd/server_backup.c.
5512
5513         * Changed the RNG to take the first IV from random data.  It
5514           used to take it from zero actually.  Changed the RNG also
5515           to use /dev/urandom during session.  /dev/random is used
5516           in initialization.  Affected file lib/silccrypt/silcrng.[ch].
5517
5518 Tue Oct 16 20:45:49 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5519
5520         * Changed the SILC packet header to have the first two bytes
5521           (the packet length) encrypted.  Affected files aroung the
5522           code tree, lib/silccore/silcpacket.[ch].  Removed the
5523           SilcPacketCheckDecrypt callback.  It is not needed anymore
5524           since the silc_packet_receive_process will determine now
5525           whether the packet is normal or special.
5526
5527         * Implemented the unidirectional MAC keys.  Affected files
5528           lib/silcske/silcske.c, silcd/protocol.c and
5529           lib/silcclient/protocol.c.
5530
5531         * Implemented the packet sequence number to the MAC computation.
5532           Affected files lib/silccore/silcpacket.c, silcd/protocol.c,
5533           silcd/packet_send.c, silcd/server.c, lib/silcclient/client.c,
5534           lib/silcclient/protocol.c.
5535
5536 Mon Oct 15 17:42:55 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5537
5538         * Allow backup router to announce servers.  All servers
5539           announced by backup router are added to the global list
5540           automatically.  Update hte server's socket to our primary
5541           router also when backup router announces a server.
5542           Affected file silcd/packet_receive.c.
5543
5544         * Do not update the client->router in the function
5545           silc_server_udpate_clients_by_server if the client is on
5546           global list.  We might fail to find any specific server
5547           for locally connected clients and local cell clients.  They
5548           should still use the `from' and not `to' as client->router.
5549           This fixes backup router resuming protocol.  Affected file
5550           silcd/server_util.c.
5551
5552         * Decrease channel statistics count only if the channel
5553           deletion worked.  Affected files are silcd/server.c and
5554           silcd/server_util.c.
5555
5556         * Added silc_server_update_servers_by_server to update origin
5557           of all server entries.  Used during backup router protocol.
5558           Affected files silcd/server_util.[ch], silcd/server.c. and
5559           silcd/backup_router.c.
5560
5561         * ROBODoc documented the lib/silccrypt/silchmac.h.  Added new
5562           function silc_hmac_init, silc_hmac_update, silc_hmac_final,
5563           silc_hmac_get_hash and silc_hmac_get_name.  Affected file
5564           lib/silccrypt/silchmac.c.
5565
5566 Sun Oct 14 18:28:22 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5567
5568         * Assure that router cannot reroute the same channel message
5569           to the sender.  Affected file silcd/packet_receive.c.
5570
5571 Sat Oct 13 12:46:18 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5572
5573         * Made better checks that the channel message is not sent
5574           to the router it came from.  Affected file is
5575           silcd/packet_send.c.  Fixed memory leak too.
5576
5577         * Announce informations for incoming router connection, but
5578           only after checking if it is replaced by backup router.
5579           Affected file silcd/packet_receive.c.
5580
5581 Fri Oct 12 18:37:24 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5582
5583         * Fixed the backup resuming protocol to work in multiple
5584           router environment.  Affected file silcd/server_backup.c.
5585
5586         * Route packet only to one router in the function
5587           silc_server_packet_send_to_channel.  Affected file is
5588           silcd/packet_send.c.
5589
5590         * Fixed silc_server_send_notify_dest to set the broadcast
5591           flag.  Fixed the silc_server_send_notify_topic to actually
5592           send the TOPIC_CHANGE notify and not SERVER_SIGNOFF notify.
5593           Affected file silcd/packet_send.c.
5594
5595         * Changed the SFTP Filesystem interface.  Changed the
5596           SilcSFTPFilesystemStruct to SilcSFTPFilesystemOps to include
5597           the filesystem operation function.  The SilcSFTPFilesystem
5598           is now a context that is allocated by all filesystem allocation
5599           functions and it already includes the operations structure
5600           and filesystem specific context.  It is given as argument
5601           now to the silc_sftp_server_start.  This made the interface
5602           a bit cleaner.  Affected file lib/silcsftp/silcsftp[_fs].h,
5603           lib/silcsftp/sftp_fs_memory.c and sftp_server.c.
5604
5605 Thu Oct 11 22:19:26 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5606
5607         * Changed the backup router adding and getting interfaces
5608           in the server.  The router that will be replaced by the
5609           specified backup router is now sent as argument.  Affected
5610           files silcd/serverconfig.[ch], silcd/backup_router.[ch], and
5611           silcd/server.c.
5612
5613         * Added silc_net_addr2bin_ne to return the binary form of
5614           the IP address in network byte order.  Affected files
5615           lib/silcutil/[unix/win32].silc[unix/win32]net.[ch].
5616
5617 Thu Oct 11 12:14:19 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5618
5619         * Check for existing server ID in silc_server_new_server
5620           and in silc_server_connect_to_router_final and remove the
5621           old entry if it exists.  Affected file silcd/packet_receive.c,
5622           silcd/server.c.
5623
5624         * Send the channel message always to only one router, either
5625           in upstream or downstream.  Affected file is
5626           silcd/packet_send.c.
5627
5628 Tue Oct  9 17:45:43 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5629
5630         * Wrote the definition of the backup resuming protocol to the
5631           protocol specification.
5632
5633         * Removed one redundant channel key generation from normal
5634           server during joining procedure.  Removed one redundant
5635           channel key sending from server to router during joining
5636           procedure.  Affected file silcd/command.c.
5637
5638         * Made minor bugfixes to the backup router resuming protocol.
5639           Affected file silcd/server_backup.c, server.c.
5640
5641 Mon Oct  8 16:47:42 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5642
5643         * Added --disable-asm configuration option.  Affected files
5644           configure.in.pre, lib/silcmath/mpi/configure.in.  A patch
5645           by salo.
5646
5647         * Implemented the backup resuming protocol that is used to
5648           resume the primary router position in the cell after the
5649           primary router comes back online.  Affected files
5650           silcd/server_backup.[ch], silcd/server, silcd/packet_receive.c,
5651           and silcd/server_util.[ch].
5652
5653 Sun Oct  7 12:29:25 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5654
5655         * Sleep two (2) seconds after sending QUIT command to server.
5656           Affected file lib/silcclient/command.c.
5657
5658         * Assure that if outgoing data buffer is pending do not force
5659           send any data.  Affected file silcd/packet_send.c.
5660
5661         * Assure that if outgoing data buffer is pending do not force
5662           send any data.  Affected file lib/silcclient/client.c.
5663
5664         * Implemented the backup router support when the primary router
5665           goes down.  The servers and routers can now use the backup
5666           router as new primary router without loosing connectivity.
5667
5668 Sat Oct  6 21:18:54 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5669
5670         * Added new SILC_IDLIST_STATUS_DISABLED flag for entries
5671           in the server to indicate disabled entry.  All data read
5672           from the connection will be ignored and no data is sent
5673           for entry that is disabled.  Affected files are
5674           silcd/idlist.h, silcd/server.c.
5675
5676 Fri Oct  5 00:03:29 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5677
5678         * Created SFTP client and server test programs in the
5679           lib/silcsftp/tests directory.
5680
5681 Wed Oct  3 23:31:42 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5682
5683         * Implemented memory filesystem (virtual filesystem) for
5684           SFTP server.  Affected file lib/silcsftp/silcsftp_fs.h,
5685           sftp_fs_memory.c.
5686
5687 Sun Sep 30 22:10:57 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5688
5689         * Implemented the SFTP (SSH File Transfer Protocol) to the
5690           lib/silcsftp.  It includes SFTP client and SFTP server
5691           implementations.
5692
5693 Sun Sep 30 10:35:44 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5694
5695         * Moved lib/silccore/silcprotocol.[ch] to the
5696           lib/silcutil library.
5697
5698         * Added silc_buffer_format_vp and silc_buffer_unformat_vp to
5699           take variable argument list pointer as argument.  Affected
5700           file lib/silcutil/silcbuffmt.[ch].
5701
5702         * Added silc_buffer_set function that is used to set data
5703           to a SilcBuffer that is not allocated at all (SilcBufferStruct).
5704           Affected file lib/silcutil/silcbuffer.h.
5705
5706         * Changed various routines in the core library to use the new
5707           silc_buffer_set instead of allocating new buffer only for
5708           temporary purposes.
5709
5710         * Added 64-bit value formatting and unformatting support to the
5711           silc_buffer_[un]format routines.  Affected file is
5712           lib/silcutil/silcbuffmt.[ch].
5713
5714           Added also 64-bit macros: SILC_GET64_MSB and SILC_PUT64_MSB,
5715           to includes/bitmove.h.
5716
5717 Fri Sep 28 21:30:10 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5718
5719         * Fixed channel user mode saving in client library.  Affected
5720           file lib/silcclient/command[_reply].c.
5721
5722 Thu Sep 27 22:52:30 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5723
5724         * Defined the file transfer to the SILC Protocol.  Added
5725           new packet type SILC_PACKET_FTP and defined File Transfer
5726           Payload.  The mandatory file transfer protocol is SFTP
5727           (SSH File Transfer Protocol).  Affected file in addition
5728           of the internet draft is lib/silccore/silcpacket.h.
5729
5730         * Deprecated the SILC_PACKET_CELL_ROUTERS and defined new
5731           packet SILC_PACKET_RESUME_ROUTER instead.  The new packet
5732           is used as part of backup router protocol when the primary
5733           router of the cell is back online and wishes to resume
5734           the position as primary router.
5735
5736         * Redefined the MAC generation keys in the protocol.  The
5737           same key is not used anymore in both direction.  Both
5738           direction will now use different keys for sending and
5739           receiving.  This fixes a potential security flaw.  This
5740           change causes incompatibilities in the protocol.
5741
5742         * Redefined also the MAC computation from the packet.
5743           An packet sequence number is now added to the MAC
5744           computation.  This prevents possible replay attacks against
5745           the protocol.  This change too causes incompatibilities
5746           in the protocol.
5747
5748           Added `sequence' field to the SilcPacketContext to hold
5749           the current sequence number for the packet.
5750
5751 Wed Sep 26 20:15:22 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5752
5753         * Added `created' field to the SilcIDListData in the file
5754           silcd/idlist.h to indicate the time when the entry was
5755           created.
5756
5757         * Added `created' field to the SilcChannelEntry too.  Affected
5758           file silcd/idlist.h.
5759
5760         * Added `creation_time' aguments to all the announcement functions
5761           in the server.  If it is provided then only the entries that
5762           was created after the provided time frame are actually
5763           announced.  Affected file silcd/server.[ch].
5764
5765         * The protocol says that the Channel ID's IP address must be
5766           based on the router's IP address.  Added check for this in
5767           the silc_server_new_channel when processing incoming New Channel
5768           Payload.  Affected file silcd/packet_receive.c.
5769
5770         * Print out the correct version with --version in SILC client.
5771           Affected file irssi/src/silc/core/silc-core.c.
5772
5773 Mon Sep 24 17:19:00 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5774
5775         * Fixed WHOWAS command to check for completnes of the client
5776           entry always, not just when the command is coming from client.
5777           Affected file silcd/command.c.
5778
5779         * Added new function silc_server_packet_queue_purge to purge the
5780           outgoing data queue to the network.  After the function returns
5781           it is guaranteed that the outgoing packet queue is empty.
5782           Affected file silcd/packet_send.[ch].
5783
5784         * Purge the outgoing packet queue in the rekey protocol's final
5785           callback to assure that all rekey packets go to the network
5786           before quitting the protocol.  Affected file silcd/server.c.
5787
5788         * Added silc_client_packet_queue_parse as similar function as
5789           in server to the client library.  The affected file is
5790           lib/silcclient/client.c.
5791
5792 Sun Sep 23 15:15:53 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5793
5794         * Splitted silcd/server.c and created silcd/server_util.[ch]
5795           for utility functions.
5796
5797         * Added new socket flag SILC_SF_DISABLED to indicate that the
5798           connection is open but nothing can be sent to or received from
5799           the connection.  Affected file lib/silcutil/silsockconn.[ch].
5800           The checking for disabled socket is checked in the low level
5801           silc_socket_write and silc_socket_read functions.
5802
5803 Thu Sep 20 23:11:28 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5804
5805         * Allow only nicknames and channel names that fits into the
5806           7-bit unsigned char ASCII set.  Affected file silcd/command.c.
5807
5808 Thu Sep 20 18:04:12 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5809
5810         * When processing JOIN command reply in server check that if
5811           the channel exists in our global list we'll move it the local
5812           list.  Affected file silcd/command_reply.c.
5813
5814         * Fixed the check whether client is joined on the channel already
5815           in JOIN command.  Affected file lib/silcclient/command.c.
5816
5817         * Fixed the JOIN command reply to check whether the channel
5818           already exists.  Affected file lib/silcclient/command_reply.c.
5819
5820 Wed Sep 19 22:58:32 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5821
5822         * Added silc_ske_status_string to map the SKE error numbers
5823           to readable strings.  The affected files are
5824           lib/silcske/silcske[_status].[ch].
5825
5826 Tue Sep 18 22:50:41 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5827
5828         * Do not show the private channels on the WHOIS channel list
5829           as it is not allowed by the protocol.  The affected file is
5830           silcd/server.c.
5831
5832 Sun Sep 16 12:32:58 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5833
5834         * Assure that the packet length digged from the actual packet
5835           is something sensible in the silc_packet_decrypt_rest_special
5836           in lib/silccrypt/silcpacket.c.
5837
5838         * Free and NULL the allocated pointer in silc_hmac_alloc if
5839           the HMAC allocation fails.  The affected file is
5840           lib/silccrypt/silchmac.c.
5841
5842         * Print the selected security properties to the log files in
5843           the server.  Affected file silcd/protocol.c.
5844
5845         * Add SKE's reference counter even if calling the completion
5846           callback manually.  Otherwise it goes negative, although it
5847           does not cause any problems.  The affected file is
5848           lib/silcske/silcske.c.
5849
5850         * Remove the client entry with short timeout after giving the
5851           KILL command.  Affected file lib/silcclient/command.c.
5852
5853         * Fixed to send error reply in WHOIS and IDENTIFY commands in
5854           case all found clients are already disconnected (WHOWAS would
5855           found them) in the server.  Affected file silcd/command.c.
5856
5857         * Update the last_receive (time of last data received) to be
5858           updated only when received private or channel message so that
5859           the idle time showed in WHOIS makes more sense.
5860
5861         * Added boolean field `valid' in to the SilcClientEntry in the
5862           client library to indicate whether the entry is valid or not.
5863           This fixes the nickname change bug on channel when changing
5864           the nickname to be same than the old (like nick to Nick) the
5865           nickname formatter doesn't set the new nick anymore to Nick@host.
5866           Affected file lib/silcclient/idlist.[ch].
5867
5868         * Now actually fixed the nickname changing on disconnection.
5869           Added new function silc_change_nick to the Irssi SILC Client.
5870           Affected file irssi/src/silc/core/client_ops.c,
5871           irssi/src/silc/core/silc-nicklist.[ch].
5872
5873 Sat Sep 15 13:29:17 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5874
5875         * Check that the public key exists in the GETKEY command before
5876           trying to encode it.  Affected file silcd/command.c.
5877
5878         * Print some notifications on received public keys with GETKEY
5879           command in the Irssi SILC Client.  Affected files are
5880           irssi/src/fe-common/silc/module-formats.[ch],
5881           irssi/src/silc/core/client_ops.c.
5882
5883         * Use IDENTIFY command to resolve the server information in the
5884           GETKEY command instead of INFO command.  Affected file
5885           lib/silcclient/command.c.
5886
5887         * All command reply functions in the client library now calls
5888           the pending command reply callbacks even if an error has
5889           occurred.  The server has done this a long time and now it was
5890           time to move the client library to this as well.  Now all
5891           errors can be delivered back to the pending command reply
5892           callbacks if necessary.  Affected files are
5893           lib/silcclient/command[_reply].[ch].
5894
5895         * Change the nickname on disconnection back to the username
5896           because in reconnect the server will enforce it to it anyway.
5897           Affected file irssi/src/silc/core/silc-servers.c.
5898
5899         * Fixed a config file parsing bug in the Irssi SILC client.
5900           Affected file irssi/src/silc/core/clientconfig.c.
5901
5902 Thu Sep 13 23:11:18 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5903
5904         * When printing the channel mode on JOIN, verify that the
5905           channel key and channel's HMAC are valid.  Affected file
5906           irssi/src/silc/core/client_ops.c.
5907
5908 Thu Sep 13 20:24:52 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5909
5910         * Added defines SILC_DEFAULT_CIPHER, SILC_DEFAULT_HMAC,
5911           SILC_DEFAULT_HASH and SILC_DEFAULT_PKCS in the file
5912           lib/silccrypt/[silccipher.h|silchmac.h|silchash.h|silcpkcs.h].
5913
5914         * Removed channel key rekey task deleting from the function
5915           silc_server_save_channel_key.  Affected file silcd/server.c.
5916           Added explicit timeout task context instead that is used to
5917           delete the task if we are registering a new task before the
5918           new task has elapsed.
5919
5920         * When channel key rekey occurs the client library now saves
5921           the old channel key for a short period of time (10 seconds) and
5922           is able to use it in case some is still sending channel
5923           messages encrypted with the old key after the rekey.  Affected
5924           file lib/silcclient/[idlist.h|client_channel.c].
5925
5926 Sun Sep  9 15:49:16 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5927
5928         * Added check to the silc_server_new_id_real to not accept
5929           new ID if it is the sender's own ID.  Affected file is
5930           silcd/packet_receive.c.
5931
5932         * Assure that we do not announce ourself or the one we've
5933           sending our announcements when we're router and are announcing
5934           servers to our primary router.  Affected file silcd/server.c.
5935
5936         * Fixed silc_server_command_identify_check_client to assemble
5937           correct WHOIS packet.  It send corrupted WHOIS packet and
5938           caused problem with router to router connections.  Affected
5939           file silcd/command.c.
5940
5941           Fixed also silc_server_command_whois_check the same way
5942           as for the IDENTIFY command.
5943
5944         * Added new SilcIDListStatus to the server in the SilcIDListData
5945           structure.   The status now includes the current status of
5946           the entry (like registered, resolved etc.).  Affected file
5947           silcd/idlist.[ch].  Defined a bunch of different status types
5948           as well.  This replaced the old boolean registered field as well.
5949
5950           Added resolve_cmd_ident field to the SilcClientEntry structure
5951           too so that if the entry is for example being resolved so
5952           another command may attach to the same pending command reply
5953           without requiring to resolve the same entry again.  This concept
5954           should optimize the WHOIS and the IDENTIFY resolving under
5955           heavy load by taking away unnecessary resolving for entries
5956           that are being resolved already.
5957
5958           Added support for adding multiple pending commands for one
5959           command idenfier.  Affected file silcd/command[_reply].[ch].
5960
5961         * Fixed WHOIS and IDENTIFY save to remove the cache entry
5962           before deleting the data.  Otherwise the hash table will have
5963           freed data in comparison functions.  Affected file is
5964           silcd/command_reply.c.
5965
5966         * Fixed silc_idlist_replace_client_id to add the new entry to
5967           the cache with NULL nickname.  Otherwise there will be invalid
5968           memory as the nickname after the nickname is freed.  Affected
5969           file silcd/packet_receive.c.
5970
5971         * Fixed the silc_idlist_get_clients_by_hash.  The entries was
5972           saved into wrong slots because the previous number of entries
5973           was not taken into account.  Affected file silcd/idlist.c.
5974           Fixed same thing in silc_idlist_get_clients_by_nickname too.
5975
5976         * If we are router and we receive JOIN notify to a channel that
5977           does not have any users then notified client is marked as the
5978           channel founder, as it is it.  The affected file is
5979           silcd/packet_receive.c
5980
5981         * Added to the extended hash table API's table_del_*ext functions
5982           the destructor as argument too, so that the caller can decide
5983           which destructor to use or whether to use destructor at all.
5984           Affected file lib/silcutil/silchashtable.[ch].
5985
5986         * Fixed ID Cache purging.  It actually deleted the entries from
5987           the hash table after the data was freed.  The hash table ended
5988           up comparing freed memory.  The affected file is
5989           lib/silccore/silcidcache.c.
5990
5991 Sat Sep  8 10:22:10 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5992
5993         * Fixed Irssi SILC client's KILL command's HELP syntax.
5994
5995         * The USERS command now resolves the detailed user information
5996           if the userinfo field is missing.  Affected file is
5997           lib/silcclient/command_reply.c.
5998
5999         * Do not print error in silc_file_read if the read file does
6000           not exist.  Just silently return NULL.  Affected file is
6001           lib/silcutil/silcutil.c.
6002
6003         * Fixed the silc_log_output to not wine about NULL filename
6004           and to not create some bogus " " filename.  Affected file is
6005           lib/silcutil/silclog.c.
6006
6007 Fri Sep  7 22:16:38 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6008
6009         * Fixed various printing bugs on the user interface in the
6010           Irssi SILC Client.  Minor changes that were forgotten from
6011           the release.
6012
6013 Fri Sep  7 17:28:37 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6014
6015         * Fixed the configure.in.pre and the compilation and distribution
6016           environment to support the new autoconf 2.52.  That version is
6017           now required to compile the CVS trunk.
6018
6019 Thu Sep  6 12:47:37 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6020
6021         * Renamed function silc_parse_nickname to silc_parse_userfqdn
6022           to generally parse user@fqdn format strings.  Affected file
6023           lib/silcutil/silcutil.c.
6024
6025         * Added nickname_format and nickname_force_format fields to the
6026           SilcClientParams structure.  The first one defines the format
6027           for the nicknames that the library will enforce if the receives
6028           multiple same nicknames.  The second one is boolean value and
6029           can be used to force the library to always enforce the format
6030           to the nicknames regardles whether there are multiple nicknames
6031           or not.  This configurable formatting was employed to flexibly
6032           support accessing multiple nicknames from the user interface.
6033           The userinterface can now set the nicknames to what ever format
6034           they prefer.  Affected file lib/silcclient/silcapi.h.
6035
6036           Added function silc_client_nickname_format to the file
6037           lib/silcclient/idlist.c.  It performs the nickname formatting.
6038
6039           Added new field `hostname´ to the SilcClientEntry context.
6040           It holds the hostname of the client.  Affected file is
6041           lib/silcclient/idlist.h.
6042
6043         * Irssi SILC Client sets the nicknames in nick@hostn format.
6044           Fe. priikone@otaku, priikone@otaku2 etc.  Affected file
6045           irssi/src/silc/core/silc-core.c.
6046
6047           The WHOIS printing now also shows both the real nickname and
6048           the formatted nickname so that user knows how to access the
6049           user if there are multiple same nicknames cached.  Affected
6050           file irssi/src/silc/core/client_ops.c.  Changed the WHOIS
6051           printing formatting too to take the hostname now as a separate
6052           argument.  The Affected file is
6053           irssi/src/fe-common/silc/modules-formats.[ch].
6054
6055         * Changed the silc_client_get_clients_local to accept the formatted
6056           nickname as argument.  It accepts the real nickname too but the
6057           formatted nickname can be used to find the true entry from
6058           multiple entries.  Affected file lib/silcclient/silcapi.h and
6059           lib/silcclient/idlist.c.
6060
6061         * Added nickname_format_parse field to the SilcClientParams.
6062           It is a callback function provided by the application to parse
6063           the nickname out of the formatted nickname string. The library
6064           calls it to get the nickname from the formatted string. Since
6065           the application generally knows better the format of the nickname
6066           string it parses it instead of the library, even though library
6067           encodes the formatted string.  If the callback function is not
6068           provided then the library will use the string as is.  The
6069           affected file is lib/silcclient/silcapi.h.
6070
6071         * All the nickname strings passed to the client library in
6072           commands are now expected to be formatted nickname strings.
6073           If the command does not support the formatted nickname string
6074           it will assume that the sent string is the actual nickname.
6075           Affected file lib/silcclient/command.c.
6076
6077 Tue Sep  4 22:31:28 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6078
6079         * Added public key authentication support to OPER and SILCOPER
6080           commands in the client library.  Affected file is
6081           lib/silcclient/command.c.
6082
6083 Tue Sep  4 12:39:17 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6084
6085         * Changed the get_auth_methdod client operation to be asynchronous.
6086           It can be async if the application resolves the authentication
6087           method from the server during the negotiation.  Added new
6088           SilcGetAuthMeth completion callback that the application will
6089           call after resolving the authentication method.
6090
6091           Added function silc_client_request_authentication_method that
6092           the application can use to resolve the authentication method
6093           from the server.  Added also SilcConnectionAuthRequest callback
6094           that the library will call after the server has replied.  The
6095           application can call this function if it does not know the
6096           current authentication method.
6097
6098           Affected files are lib/silcclient/client.c and
6099           lib/silcclient/silcapi.h.
6100
6101         * The Irssi SILC client now automatically resolves the authentication
6102           method incase any configuration information is not present (and
6103           currently there never is).  The affected file is
6104           irssi/src/silc/core/client_ops.c.
6105
6106         * Fixed public key authentication from the client library.
6107           Affected file lib/silcclient/protocol.c.  Changed also the
6108           protocol specification about the public key authentication in
6109           the connection authentication protocol.  The actual data to be
6110           signed is now computed with a hash function before signing.
6111
6112         * Fixed the public key authentication from the server as well.
6113           Affected file silcd/protocol.c.
6114
6115         * Removed the mlock()'s from the memory allocation routines.
6116           Affected file lib/silcutil/silcmemory.c.  The ./configure does
6117           not check anymore for the mlock().  Affected file is
6118           configure.in.pre.
6119
6120         * Fixed USERS command in server to allow the execution of the
6121           command for private and secret channels if the client sending
6122           the command is on the channel.  Affected file silcd/command.c.
6123
6124         * Fixed silc_client_get_clients_local to return the clients
6125           count correctly.  It could return wrong value.  Affected file
6126           lib/silcclient/idlist.c.
6127
6128 Mon Sep  3 20:09:59 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6129
6130         * Fixed the lib/silcmath/mpi/mpi.h to always use 32-bit data
6131           types.  The assembler optimizations seemed not to like 64-bit
6132           data types.  The assmebler optimizations thus are now enabled
6133           also for BSD systems as opposed to only enable them for Linux.
6134
6135         * Do not check for threads at all on BSD systems.  Affected
6136           file configure.in.pre.
6137
6138         * Removed -n and -h options from the Irssi SILC Client since
6139           they are not used in silc.
6140
6141         * Fixed the prime generation to assure that the first digit
6142           of the generated random number is not zero since our conversion
6143           routines does not like number strings that starts with zero
6144           digit.  If zero digit is seen the random number is regenerated.
6145           This caused some corrupted RSA keys when the zero first digit
6146           was met.  Affected file lib/silcmath/silcprimegen.c.
6147
6148 Sun Sep  2 17:17:24 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6149
6150         * Fixed WIN32 configuration in the ./configure script.
6151           Fixed to include xti.h on environments that has it.
6152           Patches by Carsten Ilchmann and andrew.
6153
6154 Sat Sep  1 00:29:33 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6155
6156         * Changed the silc_id_create_client_id to be collision
6157           resistant.  It is now assured that there cannot be created
6158           two same client ID's.  I suspect that some weird bugs in
6159           the server were actually caused by duplicate Client IDs.
6160           Affected file silcd/serverid.[ch].  A router receiving
6161           new ID now also assures and informs the sending server
6162           if the ID caused collision.
6163
6164         * Changed the silc_id_create_channel_id to also assure that
6165           there are no collisions.
6166
6167 Wed Aug 29 17:55:01 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6168
6169         * Statement about ignoring the Mutual Authentication flag when
6170           performing rekey with PFS was a bit misleading.  It is ignored
6171           if it was set in the initial negotiation, it cannot be even
6172           set in the rekey.  Fixed in the ke-auth draft.  Started the
6173           new versions of the protocol drafts in the doc/.
6174
6175 Sun Aug 26 14:59:15 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6176
6177         * Fixed a bug in silc_client_command_identify_save when saving
6178           new channel information.  The channel name was no duplicated
6179           and caused crash on exit.  Affected file is
6180           lib/silcclient/command_reply.c.
6181
6182 Fri Aug 17 23:07:45 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6183
6184         * Fixed the getkey command handling in the server.  Send just
6185           empty OK reply to the sender if the key could not be fetched
6186           (but everything else was ok, like the key just was not available).
6187           Changed the public key parameter to optional in the protocol
6188           specs so that empty OK reply can be sent.  Affected file
6189           silcd/command.c.
6190
6191           Added a message to Irssi SILC client to tell to user if the
6192           server did not return a public key.
6193
6194 Tue Aug 14 07:29:27 CEST 2001  Pekka Riikonen <priikone@silcnet.org>
6195
6196         * Fixed a channel key regeneration bug.  It registered new
6197           timeout tasks exponentially until all system resources were
6198           used.  Affected file silcd/server.c.
6199
6200 Sun Aug 12 20:48:14 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6201
6202         * Added the SILC Document generator to the scripts/silcdoc.
6203           It can be used to generate the Toolkit Reference Manual out
6204           of the source tree.  Internally it will also use the RoboDoc
6205           generator now imported in util/robodoc.
6206
6207 Sun Aug 12 12:28:17 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6208
6209         * Added couple of return's in rekey protocol if error orccurred
6210           during the protocol.  The execution must be terminated.
6211           Affected file silcd/protocol.c.  Also, terminate the protocol
6212           always with timeout.
6213
6214 Sat Aug 11 12:36:02 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6215
6216         * The client's Client ID was created initally from the wrong
6217           nickname (it could have been in format nick@host) in the
6218           silc_server_new_client.  Affected file silcd/packet_receive.c
6219
6220 Sat Aug 11 00:29:57 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6221
6222         * Added some SILC_LOG_ERROR's to various error conditions
6223           if client could not be added to ID cache.  Affected files
6224           silcd/packet_receive.c and silcd/server.c.
6225
6226         * When client's sock->user_data is freed, NULL also the
6227           client->router and client->connection pointers.  Added check
6228           for these pointers being NULL to various places around the
6229           code.  Affected file silcd/server.c.
6230
6231         * Added client->data.registered == TRUE checks to various
6232           places around the code to assure that unregistered client's
6233           are not handled when it is not allowed.  Affected file
6234           silcd/server.c.
6235
6236         * Added `bool registered' fields to all
6237           silc_idlist_[server|client]_get_* routines to indicate whether
6238           the fetched client needs to be registered or not.  Affected
6239           file silcd/idlist.[ch].
6240
6241         * Add your own entry as registered to the ID cache in the
6242           server.  Affected file server.c.
6243
6244         * Fixed a bug in silc_server_new_server.  The SilcServer was
6245           set as the new server's context instead of SilcServerEntry.
6246           This naturally caused some weird bugs.
6247
6248         * Added "updated" field the SilcChannelEntry which indicates
6249           the time since the channel entry was last accessed.  This
6250           can be used to determine whether it is necessary to
6251           announce the channel after backup resuming protocol.
6252           Affected files silcd/idlist.[ch].
6253
6254 Thu Aug  9 18:28:37 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6255
6256         * Do not delete the channel rekey task when adding it
6257           for in silc_server_create_channel_key.
6258
6259         * Changed the silc_server_create_channel_key to return
6260           TRUE or FALSE to indicate the success of the channel key
6261           creation.
6262
6263 Thu Jul 26 11:32:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6264
6265         * Fixed MSVC++ project files and added missing files to
6266           Makefiles under win32/.
6267
6268 Wed Jul 25 18:43:54 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6269
6270         * Do not add TCP_NODELAY flag if the operating system
6271           does not have it defined.  Affected files are
6272           lib/silcutil/[unix/win32]/silc[unix/win32]net.c.
6273
6274         * Fixed buffer overflow from Irssi SILC Client.  Affected
6275           file irssi/src/fe-common/core/themes.c.
6276
6277         * Fixed double free in client library in the file
6278           lib/silcclient/client.c when disconnecting from server.
6279
6280         * Applied double free patch from cras to Irssi SILC client.
6281           Affected files irssi/src/core/[modules/expandos].c
6282
6283         * Fixed the disconnection handling to Irssi SILC Client.
6284           The application must call silc_client_close_connection
6285           in ops->connect client operation in case of failure of
6286           the connection.  Affected file is
6287           irssi/src/silc/core/client_ops.c.
6288
6289         * Do not set sock->protocol to NULL in the function
6290           silc_client_close_connection after executing the protocol's
6291           final callback since the sock might not be valid anymore.
6292           Affected file lib/silcclient/client.c.
6293
6294 Wed Jul 25 16:04:35 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6295
6296         * Do not enable SILC_THREADS if the linking with libpthread
6297           did not happen.  Affected file configure.in.pre.
6298
6299         * Added notion to protocol specification that server must
6300           verify the sent authentication payload with CMODE when
6301           setting the channel founder key.  Implemented it to the
6302           server.  Affected file silcd/command.c.
6303
6304 Mon Jul 23 18:31:43 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6305
6306         * Added _EXTRA_DIST SILC distribution variable to the
6307           distributions file.  It is used to conditionally add extra
6308           files or directories to the specific distribution.  Affected
6309           files ./prepare, Makefile.am.pre and distributions.
6310
6311           Removed the `_' from the start of the distribution names.
6312           It is redundant.
6313
6314         * Added README.WIN32 for instructions to compile the Toolkit
6315           under WIN32.
6316
6317 Mon Jul 23 10:12:37 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6318
6319         * Fixed a double free in disconnection in the server.  Affected
6320           file is silcd/server.c.
6321
6322         * Fixed the lib/silcske/groups.c to work now also with GMP
6323           MP library.  The string conversion did not work when using
6324           specific base and the base is indicated in the string as well.
6325
6326         * Created win32/ directory which now includes MSVC++ specific
6327           stuff so that toolkit (DLLs) may be compiled with MSVC++.
6328           It will appear only in the toolkit distribution
6329
6330 Sun Jul 22 19:40:30 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6331
6332         * Changed the key material distribution function in case when
6333           the hash output is too short.  The data is now concatenated
6334           a bit differently than it used to.  Made the change to the
6335           SKE protocol specification.
6336
6337         * Added better GMP detection to configure.in.pre.  A patch
6338           by salo.
6339
6340 Fri Jul 20 13:16:00 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6341
6342         * Fixed a minor bug in SKE that might cause some problem on
6343           some platforms.  Affected file lib/silcske/silcske.c.
6344
6345         * Added the cookie checking for initiator in the SKE.  It checks
6346           that the responder returns the sent cookie unmodified.  The
6347           affected file is lib/silcske/silcske.c.  Added new SKE
6348           error type INVALID_COOKIE that can be sent during the
6349           negotiation.  Fixed some memory leaks as well.
6350
6351         * Added the "invalid cookie" error message to Irssi SILC client's
6352           message formats.
6353
6354 Thu Jul 19 21:44:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6355
6356         * Added `task_max' field to the SilcClientParams to indicate
6357           the maximum tasks the scheduler can handle.  If set to zero,
6358           default values are used.  Affected file lib/silcclient/silcapi.h.
6359
6360         * Fixed memory leaks in silc_client_close_connection.  Affected
6361           file lib/silcclient/client.c.
6362
6363         * Added silc_client_del_client_entry to client library to free
6364           all memory of given client entry.  Affected file is
6365           lib/silcclient/idlist.[ch].
6366
6367         * Added new functions silc_client_del_channel and
6368           silc_client_del_server to delete channel and server entries.
6369           Affected file lib/silcclient/[silcapi.h/idlist.c].
6370
6371         * Removed silc_client_del_client_by_id from silcapi.h.
6372
6373         * Fixed the INFO command to return the server's own info
6374           correctly when querying by Server ID.  Affected file is
6375           silcd/command.c.
6376
6377 Thu Jul 19 14:47:30 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6378
6379         * Removed the non-blocking settings in WIN32 code in the
6380           silc_sock_[read/write] and added SleepEx instead.  Affected
6381           file lib/silcutil/win32/silcwin32sockconn.c.  The availability
6382           of input data is now checked with FIONREAD and ioctlsocket.
6383
6384 Wed Jul 18 18:34:01 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6385
6386         * Call silc_schedule_task_del_by_context in the
6387           silc_protocol_cancel instead of silc_schedule_task_del_by_callback.
6388           Affected file lib/silccore/silcprotocol.c.
6389
6390         * Call silc_protocol_cancel for active protocols in the
6391           silc_server_close_connection if the funtion
6392           silc_server_free_sock_user_data has not been called.
6393           Affected file silcd/server.c.
6394
6395         * Generic tasks cannot be deleted using the del_by_fd
6396           task deleting function since generic tasks does not match
6397           any specific fd.  Affected file lib/silcutil/silcschedule.[ch].
6398
6399         * Added a notion to SILCOPER help file that the SILCOPER works
6400           only on router server, not on normal server.
6401
6402 Wed Jul 18 09:40:04 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6403
6404         * Added for WIN32 support for the new scheduler as well.
6405           Affected file lib/silcutil/win32/silcwin32schedule.c.
6406
6407         * Fixed the SHA1 implementation to work on various platforms.
6408
6409 Tue Jul 17 23:04:10 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6410
6411         * Rewrote the SILC Scheduler entirely.  Removed the old SILC Task
6412           API.  It is part of the scheduler now.  Everything else is
6413           as previously but some functions has changed their names.
6414           Checkout the lib/silcutil/silcschedule.h for the interface.
6415           Updated all applications to use the new interface.  Affected
6416           files are lib/silcutil/silcschedule.[ch].
6417
6418 Tue Jul 17 16:53:30 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6419
6420         * Found a bug in the SKE implementation.  The HASH value,
6421           specified by the protocol, was not computed correctly.  The
6422           public key of the responder was not added to the computation
6423           even though it is mandatory.  Affected file lib/silcske/silcske.c.
6424           This unfortunately causes incompatibilities with older
6425           clients and servers.
6426
6427         * Added WIN32 specific network init and uninit functions:
6428           silc_net_win32_init and silc_net_win32_uninit to init and uninit
6429           the Winsock2.  Affected file lib/silcutil/silcnet.h and
6430           lib/silcutil/win32/silcwin32net.c.
6431
6432         * Set the socket always to nonblocking mode on WIN32 after
6433           reading data or writing data.  Affected file is
6434           lib/silcutil/win32/silcwin32sockconn.c.
6435
6436 Mon Jul 16 22:55:26 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6437
6438         * Fixed various compilation problems under WIN32.  Affected
6439           files lib/silcutil/win32/silcwin32thread.c and
6440           lib/silcutil/win32/silcwin32schedule.c.
6441
6442         * Removed all _internal.h #includes from public header
6443           files.  Internal headers must never be included from
6444           public headers.
6445
6446           Removed also the lib/silcske/payload_internal.h file.
6447
6448         * All include files that may be needed (public and some others
6449           included by the public headers) by application developers are
6450           now copied to the ./includes directory.  It does not copy any
6451           internal headers.  Affected file Makefile.defines.pre and all
6452           Makefile.am's under lib/ and subdirs.
6453
6454 Thu Jul 12 17:49:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6455
6456         * Do not change the ~/.silc directory's permissions automatically.
6457           Affected file irssi/src/silc/core/clientutil.c.
6458
6459 Thu Jul 12 10:18:40 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6460
6461         * Do not cancel the protocol in silc_server_close_connection
6462           it might cause recursion.  Now cancelled in the function
6463           silc_server_free_sock_user_data.  Affected file silcd/server.c.
6464
6465         * Fixed the silc_server_remove_clients_by_server to regenerate
6466           the channel keys correctly finally.  Added also new function
6467           silc_server_remove_clients_channels to actually do it.
6468           Affected file silcd/server.c.
6469
6470         * Fixed the silc_server_new_channel to not crash by giving
6471           wrong router to the new channel.  Affected file is
6472           silcd/packet_receive.c.
6473
6474 Wed Jul 11 18:31:57 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6475
6476         * Added SilcClientParams structure to the lib/silcclient/silcapi.h
6477           which is given as argument to the silc_client_alloc now.
6478           It can be used to configure the client and set various parameters
6479           that affect the function of the client.
6480
6481         * The USERS command in server did not check whether the channel
6482           is private or secret.  Affected file silcd/command.c.
6483
6484         * Added new argument to the USERS command in protocol specification.
6485           The USERS command now can take the channel name as argument
6486           as well.  Added support for this in client and server and
6487           updated the protocol specs.
6488
6489         * Completed the GETKEY command in client. It can be now used
6490           to fetch also servers public key not only some clients.
6491           Affected files lib/silcclient/command[_reply].c.
6492
6493         * Added silc_client_get_server to return server entry by the
6494           server name.  Affected files lib/silcclient/silcapi.h and
6495           idlist.c.
6496
6497         * Redefined the IDENTIFY command in protocol specification to be
6498           more generic.  It now can be used to query information about
6499           any entity in the SILC Network, including clients, servers and
6500           channels.  The query may be based either the entity's name
6501           or the ID.  Added support for this in both client and server.
6502
6503           Affected files silcd/command.c and lib/silcclient/command.c
6504           and command_reply.c.
6505
6506         * Optimized the WHOIS and WHOWAS commands in the server. Removed
6507           the _from_client and _from_server functions.  Affected file
6508           silcd/command.c.
6509
6510         * Added silc_client_get_channel_by_id_resolve to the file
6511           lib/silcclient/silcapi.h to resolve channel information by
6512           its ID.  Added also silc_client_get_channel_by_id that
6513           does not resolve it from the server.
6514
6515 Tue Jul 10 18:05:38 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6516
6517         * Added SilcServerEntry context into the client library
6518           to represent one server.  The INFO command now allocates
6519           these to save the resolved server info.  For now on the
6520           client library will also keep information about servers,
6521           connected and resolved with INFO.
6522
6523           The INFO command now allocates the SilcServerEntry context
6524           and saves the server info there.  The COMMAND_REPLY in
6525           the INFO now returns the parameters to application in
6526           same order as defined in the protocol specification.
6527
6528           The entries are cached in the client->server_cache.
6529
6530         * The INFO command is now issued after received the Client ID
6531           from the server.  Affected file lib/silcclient/client.c.
6532
6533         * The CMODE_CHANGE notify may now return also an SilcServerEntry
6534           to the application as the mode changer might be server.
6535           It is guaranteed that NULL is not returned anymore to the
6536           application.  Affected file lib/silcclient/client_notify.c.
6537
6538           The ID Type is now also passed to the application so that
6539           it can check whether the returned entry is SilcClientEntry
6540           or SilcServerEntry.
6541
6542           Added new function silc_client_get_server_by_id to return
6543           the server entry by ID.  Affected files are the
6544           lib/silcclient/silcapi.h and lib/silcclient/idlist.c.
6545
6546         * Do not create the channel in the Irssi SILC Client when issuing
6547           the JOIN command but when received the sucessful JOIN command
6548           reply.  Otherwise the channel might get created even though we
6549           could not join it.  The Affected file is
6550           irssi/src/silc/core/[silc-channels.c/client_ops.c].
6551
6552         * Fixed a channel joining bug in router.  The router must also
6553           check the channel modes, invite and ban lists etc. when serving
6554           the JOIN command sent by normal server.  Affected file is
6555           silcd/command.c.  The router now resolves the client's
6556           information from the server who sent the JOIN command if it
6557           does not know it, and processes the JOIN command only after
6558           that.
6559
6560         * Changed the SilcCommandCb to take new argument; void *context2.
6561           Affected file lib/silccore/silccommand.h
6562
6563           The second argument in the command callbacks in the server now
6564           includes the SilcServerCommandReplyContext if the command was
6565           called as pending command callback from the command reply.
6566           Otherwise it is NULL. When called as pending the status of the
6567           command reply will be checked and if it was erronous the
6568           error will be sent to the original sender of the command.
6569           This way the client always receives the error messages even
6570           though the server was actually the one who received the error
6571           when it resent the command to router, for example.  Affected
6572           files silcd/command[_reply].[ch].
6573
6574         * Fixed sending WHOWAS command's error message to client if
6575           the requested client could not be found.  It was missing.
6576           silcd/command.c.
6577
6578         * Changed the CMODE and CUMODE commands reply arguments in the
6579           protocol specification.  The Channel ID is now sent in both
6580           of the commands to identify the channel.  Implemented this
6581           new feature to the client and server.  Affected files
6582           lib/silcclient/command_reply.c and silcd/command.c.
6583
6584         * Made better checks for invite and ban lists in the JOIN
6585           command in server.  Affected file silcd/command.c.
6586
6587 Mon Jul  9 18:28:34 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6588
6589         * The server now performs the incoming host IP/DNS lookup
6590           using the silc_socket_host_lookup and thus does not block
6591           the server anymore.  Affected file silcd/server.c.
6592
6593         * Completed the multi-thread support for SILC Scheduler in
6594           the lib/silcutil/silcschedule.c.
6595
6596         * Fixed the configure.in.pre to detect the pthread correctly
6597           on various systems.
6598
6599         * Fixed a deadlock in silc_task_queue_wakeup in the file
6600           lib/silcutil/silctask.c.
6601
6602 Mon Jul  9 13:40:03 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6603
6604         * Added new function silc_schedule_wakeup that is used in
6605           multi-threaded environment to wakeup the main thread's
6606           schduler. It needs to be used when a thread adds a new task
6607           or removes a task from task queues. After waking up, the
6608           scheduler will detect the task queue changes. If threads
6609           support is not compiled in this function has no effect.
6610           Implemented the wakeup mechanism to both Unix and WIN32
6611           systems.  Affected files are lib/silcutil/silcschedule.[ch],
6612           lib/silcutil/unix/silcunixschedule.c and the
6613           lib/silcutil/win32/silcwin32schedule.c.
6614
6615         * Added new function silc_task_queue_wakeup to wakeup the
6616           scheduler by the specified task queue.  Affected file
6617           lib/silcutil/silctask.[ch].
6618
6619         * The silc_socket_host_lookup_start now wakes up the scheduler
6620           after adding the timeout task.  Affected file is
6621           lib/silcutil/silcsockconn.c.
6622
6623         * The silc_socket_host_lookup is synchronous now if the threads
6624           support is not compiled in.  However, the callback is still
6625           called asyncronously through the scheduler, anyway.  Affected
6626           file lib/silcutil/silcsockconn.c.
6627
6628 Mon Jul  9 00:24:45 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6629
6630         * Added new function silc_socket_host_lookup to perform
6631           asynchronous IP and FQDN lookups for the socket connection.
6632           Affected files lib/silcutil/silcsockconn.[ch].
6633
6634 Sun Jul  8 18:44:53 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6635
6636         * Added SILC_MUTEX_DEFINE to define the mutex on environments
6637           that may or may not compile the mutex support in.
6638
6639           Changed the silc_mutex_alloc interface. It allocates the
6640           mutex now to the sent pointer and returns TRUE or FALSE.
6641
6642           Affected file lib/silcutil/silcmutex.h.
6643
6644         * Wrote the SILC Task Queue interface to support multi-threads.
6645           Affected file lib/silcutil/silctask.[ch].
6646
6647         * Wrote the SILC Scheduler to support multi-threads.  Affected
6648           file lib/silcutil/silcschedule.c.
6649
6650 Sun Jul  8 11:16:01 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6651
6652         * Implemented the SILC Mutex API and SILC Thread API for WIN32
6653           in lib/silcutil/win32/.
6654
6655 Sun Jul  8 00:18:15 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6656
6657         * Defined SILC Mutex API and SILC Thread API and implemented
6658           them for Unix.  Affected files are
6659           lib/silcutil/silcmutex.h, lib/silcutil/silcthread.h,
6660           lib/silcutil/unix/silcunixmutex.c and
6661           lib/silcutil/unix/silcunixthread.c.
6662
6663 Sat Jul  7 14:40:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6664
6665         * Fixed the silc_server_remove_clients_by_server's channel
6666           key re-generation.  The hash table handling was incorrect
6667           and would not work with many channels.  Affected file is
6668           silcd/server.c.
6669
6670         * Fixed some memory leaks around the server code.
6671
6672         * Rewrote the silc_server_get_users_on_channel to support IPv6
6673           based Client ID's.  Affected file silcd/server.c.
6674
6675         * Defined the SILC_MESSAGE_FLAG_SIGNED to the protocol
6676           specification.  However, a separate document must be written
6677           to define the detailed signing procedure and the payload
6678           associated with the flag.  Defined the flag to the
6679           lib/silccore/silcchannel.h as well.
6680
6681 Fri Jul  6 18:26:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6682
6683         * Changed the dynamic tables to static size tables in the
6684           lib/silccrypt/silchmac.c.
6685
6686         * Removed GCC dependencies from the code.  A patch by cras.
6687
6688 Fri Jul  6 09:39:35 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6689
6690         * Do not show the error "Error receiving packet bla bla"
6691           in server if it really was not an error (-2 means that reading
6692           is pending).  Affected file silcd/server.c.
6693
6694 Thu Jul  5 21:22:32 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6695
6696         * Fixed a possible crash in silc_server_remove_clients_by_server
6697           in silcd/server.c.  Fixed there also some memory leaks.
6698
6699         * Fixed the silc_idlist_replace_client_id.  It could replace
6700           wrong key in the hash table.  Affected file silcd/idlist.c.
6701
6702         * Do not check whether there are global users on the channel
6703           if the channel->global_users is FALSE.  Affected functions
6704           silc_server_remove_from_one_channel and
6705           silc_server_remove_from_channels in silcd/server.c.  Also,
6706           do not check if the removed client is local as we can be
6707           sure that global client was not removed from the channel
6708           and checking for global users is not needed.
6709
6710         * The silc_server_remove_clients_by_server now re-generates
6711           the channel keys correctly for those channels that had
6712           clients removed from them.  Affected file silcd/server.c.
6713
6714 Tue Jul  3 11:39:20 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6715
6716         * Found the reason of random crashes in the server.  We weren't
6717           ignoring the SIGPIPE signal (which can be sent in write())
6718           and it crashed the server.  Affected file silcd/silcd.c.
6719
6720 Fri Jun 29 20:05:25 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6721
6722         * Assure that sock->user_data is not NULL in the function
6723           silc_server_packet_send in silcd/packet_send.c.
6724
6725         * Disconnect the remote connection if it could not be added
6726           to any ID lists in the server.  The affected file is
6727           silcd/server.c.
6728
6729         * Check in silc_server_packet_send[_real/dest] that the
6730           socket is not disconnecting and ignore the data if it is.
6731           Affected file silcd/packet_send.c.
6732
6733         * Define inline to __inline on native WIN32 compilation.
6734           Affected file includes/silcwin32.h.
6735
6736         * Added some explicit type casts for inline code since MSVC
6737           require them.  Affected files lib/silcutil/silcbuffer.h,
6738           lib/trq/silcdlist.h and lib/trq/silclist.h.
6739
6740         * Print warning in log files from now on if the packet
6741           decryption fails.  Affected file silcd/server.c.
6742
6743 Thu Jun 28 21:30:39 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6744
6745         * Changed the `say' client operation's interface to accept
6746           new `type' argument to indicate the type of the message sent
6747           by the library.  The application may filter the library's
6748           messages according the type.  The affected file is the
6749           lib/silcclient/silcapi.h.
6750
6751         * Added two new functions to lib/silcclient/silcapi.h:
6752           silc_client_del_client and silc_client_del_client_by_id.
6753           Affected file lib/silcclient/idlist.c.
6754
6755         * Moved the clientincludes.h from includes/ to silc/ and
6756           serverincludes.h from includes/ to silcd/.
6757
6758         * The modes for the CMODE and CUMODE are now passed as
6759           uint32 for application with COMMAND_REPLY.  The affected
6760           file is lib/silcclient/command_reply.c.
6761
6762 Wed Jun 27 22:24:47 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6763
6764         * /WHOIS without arguments shows client's own information.
6765           Affected file lib/silcclient/command.c.
6766
6767         * Changed PING to not accept any arguments.  The specs
6768           says that client can ping only the connected server so
6769           requiring an argument is not needed.  Affected file is
6770           lib/silcclient/command.c.
6771
6772 Wed Jun 27 00:10:33 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6773
6774         * Fixed a fatal bug in private message sending and reception
6775           encryption and decryption when using private message keys.
6776           The implementation was incorrect and did not follow the
6777           specification.  It causd that some of the message were
6778           lost since it did not use the sending and receiving keys
6779           as the protocol suggests.  This has been fixed and will cause
6780           incompatibilities with older clients when sending private
6781           message encrypted with private message keys.  Affected files
6782           lib/silcclient/client_prvmsg.c, lib/silcclient/client_keyagr.c
6783           and various other in Irssi SILC Client.
6784
6785           Added `responder' boolean argument to the functions
6786           silc_client_add_private_message_key[_ske] to indicate when
6787           the key is added as responder or initiator of the key
6788           negotiation.
6789
6790 Tue Jun 26 19:23:07 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6791
6792         * Removed the silc_ske_check_version function and created
6793           a SilcSKECheckVersion callback.  Added also a function
6794           silc_ske_set_callbacks that is now used to set all SKE
6795           callbacks.  The callback functions are not given to
6796           the SKE functions anymore, but this function is used to
6797           set the callbacks.
6798
6799         * Fixed the WIN32 DLL generation in lib/Makefile.am.pre.
6800
6801         * Added `silc_version' argument to the silc_client_alloc
6802           to define the version of the application for the library.
6803           The library will use the version string to compare it
6804           against the remote host's (usually a server) version
6805           string.  Affected file lib/silcclient/silcapi.h
6806
6807         * Added the KE protocol context to Key Agreement context
6808           in client library so that we can abort the SKE if it
6809           is in process when we get timeout.  Affected file is
6810           lib/silcclient/client_keyagr.c.
6811
6812         * Do not resolve the client ID forever if it returns in the
6813           first time that such client does not exist.  This was done
6814           for example with private message.  Affected file is
6815           lib/silcclient/client_prvmsg.c.
6816
6817 Mon Jun 25 21:42:51 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6818
6819         * Do not add regex.h for WIN32.  The affected file
6820           includes/silcincludes.h.
6821
6822         * Added WIN32 DLL generation to lib/Makefile.am.pre.  It might
6823           not work yet 100%.  It generates the DLL's automatically
6824           when compiling with --with-win32 under cygwin.
6825
6826 Sun Jun 24 19:49:23 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6827
6828         * lib/contrib/regex.c is not compiled on WIN32.
6829
6830         * Added silc_net_get_socket_opt function to the
6831           lib/silcutil/silcnet.h.
6832
6833         * Added includes/silcwin32.h for WIN32 specific includes
6834           and definitions.
6835
6836         * Do not use ptime structure or any of the posix process
6837           functions on WIN32 in lib/silccrypt/silrng.c.
6838
6839         * Added silc_gettimeofday to provide generic function
6840           for struct timeval on all platforms.  Added the function
6841           to lib/silcutil/silcutil.h.
6842
6843 Sun Jun 24 12:19:52 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6844
6845         * Moved the lib/silccore/silcsockconn.[ch] to the utility
6846           library as they clearly belong there.  As a plus side we
6847           can make the actual socket connection routines platform
6848           specific.
6849
6850           Added also new generic function silc_socket_read and
6851           silc_socket_write (that used to be silc_packet_[read/write].
6852           The implementation of these are platform specific.
6853
6854         * Added WIN32 specific routines of silc_socket_[read/write]
6855           to lib/silcutil/win32/silcwin32sockconn.c.
6856
6857 Sat Jun 23 16:01:00 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6858
6859         * Added preliminary support for native WIN32 compilation under
6860           cygwin (using the -mno-cygwin option for GCC) to the
6861           ./configure.in.pre.  The --with-win32 now prepares the
6862           compilation for native WIN32.
6863
6864         * Rewrote the SILC Scheduler interface in the file
6865           lib/silcutil/silcschedule.h.  The scheduler is now context
6866           based and does not have anymore any global static scheduler.
6867           Moved the Unix scheduler to the lib/silcutil/unix/ directory
6868           and created lib/silcutil/win32 directory for WIN32 based
6869           scheduler.
6870
6871         * Added Unix specific network routines to the
6872           lib/silcutil/unix/silcunixnet.c and the old
6873           lib/silcutil/silcnet.c includes now only generic routines.
6874
6875           Added WIN32 specific network routines to the
6876           lib/silcutil/win32/silcwin32net.c.
6877
6878         * Added Unix specific utility functions from the
6879           lib/silcutil/silcutil.c to lib/silcutil/unix/silcunixutil.c.
6880
6881         * Added WIN32 SILC Scheduler to the file
6882           lib/silcutil/win32/silcwin32schedule.c. The code is of course
6883           untested.
6884
6885 Fri Jun 22 10:44:14 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6886
6887         * Do not handle JOIN notify in the server if the target client
6888           is not registered (idata->registered == FALSE).  The affected
6889           file is silcd/packet_receive.c.
6890
6891         * Update the nickrec->founder in event_cumode in the Irssi SILC
6892           client.  Affected file irssi/src/silc/core/silc-channels.c.
6893
6894         * Fixed the CUMODE_CHANGE notify handling in the server when
6895           server and router are announcing their clients on channels.
6896           Now the mode changes are saved and notified correctly.  The
6897           affected file is /silcd/packet_receive.c.
6898
6899         * Fixed silc_idlit_replace_[server/client/channel]_id functions.
6900           They really did not replace the cache entry in the ID Cache.
6901           Now they do that.  Affected file silcd/idlist.c.
6902
6903         * Fixed the KICK notify handling in the Irssi SILC client to
6904           update the channel records so that the kicked client does not
6905           appear to be on the channel.  The affected file is
6906           irssi/src/silc/core/silc-channels.c.
6907
6908         * Always update the conn->current_channel when executing command
6909           on a channel.  Affected file irssi/src/silc/core/silc-servers.c.
6910
6911         * Fixed the KILL notify handling in Irssi SILC client to remove
6912           the killed client on all channels.
6913
6914 Thu Jun 21 17:10:08 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
6915
6916         * Fixed the silc_parse_command_line to remove extra spaces
6917           from the start and end of the arguments.  Affected file is
6918           lib/silcutil/silcutil.c.
6919
6920         * Cancel and free any active protocol in the function
6921           silc_server_close_connection.  Affected file silcd/server.c.
6922
6923         * Cancel and free any active protocol in the function
6924           silc_client_close_connction.  Affected file is
6925           lib/silcclient/client.c.
6926
6927         * Do not execute the KILL command for clients that are in
6928           history (ie. they are not in the network).  Affected file is
6929           silcd/command.c.
6930
6931         * Fixed KILL notify handling, client does not crash anymore.
6932           Affected file irssi/src/silc/core/silc-channels.c.
6933
6934         * Reduced the default packet buffer size from 2048 to 1024 in
6935           lib/silccore/silcpacket.c.
6936
6937         * Added SILC_SKE_STATUS_FREED SKE status type and a reference
6938           counter to the SKE context that is incresed when the SKE library
6939           performs async operation outside the library.  If the outside
6940           process frees the SKE context and FREED status will be set
6941           and the library will detect after the sync operation that the
6942           libary is freed.  The affected files are
6943           lib/silcske/silcske[_status].[ch].
6944
6945         * Resolve the client entry information in the function
6946           silc_client_channel_message to assure that NULL pointer is not
6947           passed as client entry to the application. */
6948
6949         * Fixed the task timeout calculation to assure that there is
6950           never negative timeouts.  The affected file is
6951           lib/silcutil/silcschedule.c.
6952
6953         * Fixed the channel user mode notification sending in server.
6954           It was sent point-to-point to the router (or to server by router)
6955           but it needs to be destined to a channel.  The routines now
6956           supports sending the channel user mode notifys to the channels
6957           when announcing clients and channels.  Affected files are
6958           silcd/server.c and silcd/packet_receive.c.
6959
6960         * Fixed the CHANNEL_CHANGE notify handling in the client libary.
6961           It did not actually replace the old channel entry in the cache.
6962           Affected file lib/silcclient/client_notify.c.
6963
6964 Tue Jun 19 22:10:36 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
6965
6966         * Fixed a possible crash in silc_packet_send_prepare.  It now
6967           assures always that there is enough space in the buffer and
6968           at the tail area of the buffer (for MAC).
6969
6970           Fixed the inbound buffer reallocation in silc_packet_read.
6971           It was old code and did not handle the reallocation correctly.
6972           Affected
6973
6974           The affected file is lib/silccore/silcpacket.c.
6975
6976         * Fixed buffer overflow in silc_parse_nickname in the file
6977           lib/silcutil/silcutil.c.
6978
6979 Tue Jun 19 13:40:09 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
6980
6981         * make install generates new server keys only if there is not
6982           keys already.
6983
6984 Mon Jun 18 18:49:07 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
6985
6986         * Set SILC_MESSAGE_FLAG_NOREPLY when sending the away message.
6987           Added check that if the NOREPLY is set then we will not send
6988           the away message.  This avoids infinite loop of away messages
6989           if both clients are away.  The affected file is
6990           lib/silcclient/client_prvmsg.c.
6991
6992         * Fixed client crash if /NICK was given without arguments.
6993           Affected file lib/silcclient/command.c.
6994
6995         * Server does not send the invite list in INVITE command back
6996           to the client if the list was not altered.  Added this notion
6997           to the protocol spec as well.  Affected file silcd/command.c.
6998
6999           Fixed possible crash in INVITE command by checking the
7000           value of silc_server_get_client_route command.
7001
7002         * Fixed the INVITE notify type handling.  The arguments are now
7003           taken in correct order and client does not crash.  The affected
7004           file is irssi/src/silc/core/silc-channels.c.
7005
7006           Removed the "Inviting xxx to channel" message from the
7007           client library away and let the application handle it.
7008           Affected file lib/silcclient/command.c.  Added that message
7009           to Irssi SILC client's message formats.
7010
7011         * Fixed CMODE command crash in client.  It now checks the
7012           amount of arguments correctly and does not crash.  The affected
7013           file is lib/silcclient/command.c.
7014
7015         * Do not create new channel automatically in silc_channels_join
7016           but check whether the channel by that name already exists.
7017           Affected file irssi/silc/core/silc-channels.c.
7018
7019         * Do not send the SERVER_SIGNOFF to router if the disconnected
7020           entity was the router.  Affected file silcd/server.c.
7021
7022         * Added the handling of the SERVER_SIGNOFF notify to the Irssi
7023           SILC client as it was missing from there.
7024
7025           Added the handling of the KICK notify to the Irssi SILC client
7026           as it was missing.  Added "you have been kicked" message to
7027           Irssi SILC client's message modules formats.
7028
7029           Added the handing of the KILL notify to the Irssi SILC client
7030           as it was missing.  Added the kill message module formats
7031           as well.
7032
7033           The affected file is irssi/src/silc/core/silc-channels.c.
7034
7035         * The router did not save the channel mode the server announced.
7036           Affected file silcd/packet_receive.c.
7037
7038         * Fixed a possible crash in INFO command in server.  If the
7039           server did not provide the server info it crashed.  Affected
7040           file silcd/command.c.
7041
7042 Sun Jun 17 15:26:05 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7043
7044         * Fixed the GETKEY command in the server to check also the
7045           global list.  Otherwise the GETKEY would not work correctly
7046           in normal SILC server.  Affected file silcd/command.c.
7047
7048 Sat Jun 16 18:00:00 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7049
7050         * Fixed GETKEY crash, it crashed if the command did not succseed.
7051
7052 Tue Jun 12 21:36:18 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7053
7054         * Redefined the SILC MP API in lib/silcmath/silcmp.h. The API
7055           is now real and not just an macro interface to GMP.
7056
7057           Removed the entire GMP from the source tree and imported new
7058           NSS MPI library instead.  Reason for removing GMP is that it is
7059           extremely large and compiles extremely slow.  The NSS MPI
7060           is only a few files and compiles in less than 10 seconds.
7061           The speed is also about the same as GMP.  The MPI is imported
7062           to lib/silcmath/mpi.
7063
7064           If the system has GMP installed we will still use the GMP.
7065           If it is not then the NSS MPI will be compiled.
7066
7067 Mon Jun 11 18:07:24 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7068
7069         * Merged a long nickname (127 characters long) crash bugfix from
7070           Irssi CVS tree.  Affected file irssi/src/core/misc.c.
7071
7072         * Merged a freed memory reference bugfix from Irssi CVS tree.
7073           Affected file irssi/src/core/commands.c.
7074
7075 Sun Jun 10 16:08:35 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7076
7077         * Added the server's public key sving and verification to the
7078           server when performing the SKE.  This was missing and the
7079           remote server's (or router's) public key was accepted without
7080           checking whether we have it previously or trust it at all.
7081           Affected file silcd/protocol.c.
7082
7083 Sat Jun  9 20:17:30 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7084
7085         * Check in the silc_server_timeout_remote if protocol is active
7086           and make sure that the protocol's final callback is called so
7087           that all memory if freed.  Affected file silcd/server.c.
7088
7089 Sat Jun  9 12:51:27 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7090
7091         * silc_server_whois_send_reply crashed the server if the nickname
7092           was 127 characters long.  Affected file silcd/command.c.
7093
7094 Thu Jun  7 16:29:56 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7095
7096         * Added sanity check to the silc_server_new_client. If the hostname
7097           is provided inside username then check that the provided hostname
7098           really is the same as the resolved one.  If the hostname was not
7099           resolved then check it from the public key.  Affected file is
7100           silcd/packet_receive.c.
7101
7102         * Fixed a fatal bug in Irssi SILC client. Do not send QUIT command
7103           if the server disconnected us and the connection is not valid
7104           anymore.  Affected file irssi/src/silc/core/silc-channels.c.
7105
7106         * Moved the silc_client_[chmode|chumode|chumode_char] away from
7107           the library to the lib/silcutil/silcutil.[ch].
7108
7109 Thu Jun  7 08:57:16 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7110
7111         * Close log file after open.  Affected file
7112           lib/silcutil/silclog.c.
7113
7114         * Check whether sock == NULL in silc_client_send_packet and return
7115           if it is.  Affected file lib/silcclient/silcclient.c.
7116
7117         * Check rec->entry == NULL in the Irssi SILC Client before
7118           sending the channel message.  Affecte file is
7119           irssi/src/silc/core/silc-servers.c.
7120
7121 Tue Jun  5 08:08:21 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7122
7123         * Merged a splitted window bugfix from Irssi CVS tree.  The
7124           affected file is irssi/src/fe-text/textbuffer-view.c.
7125
7126         * Fixed the ME, ACTION and NOTICE printing in Irssi Client.
7127           It did not print nickname.
7128
7129         * Improved the distributions system a bit.
7130
7131 Mon Jun  4 17:57:16 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7132
7133         * Merged /WINDOW bugfix from irssi CVS tree. Affected file is
7134           irssi/src/fe-text/gui-window.c.
7135
7136         * Fixed a fatal bug in Irssi SILC client. Crashed if sent message
7137           to in-active server.  The affected file is
7138           irssi/src/silc/core/client_ops.c.
7139
7140         * Resolve the client in USERS command reply if the entry does
7141           not have username resolved.  The affected file is
7142           lib/silcclient/command_reply.c.  Also, changed the IDENTIFY
7143           command to WHOIS command to really resolve stuff.  The USERS
7144           is not used any more in any critical section so WHOIS can
7145           be used even though it might be slower than IDENTIFY.
7146
7147         * Changed the lib/silcutil/silchashtable.h header to ROBODoc
7148           format.
7149
7150 Sun Jun  3 14:21:32 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7151
7152         * Changed the protocol API a bit more consistent in the
7153           lib/silccore/silcprotocol.[ch].
7154
7155         * Changed the following headers to ROBODoc format:
7156
7157                 lib/silccore/silcpayload.h
7158                 lib/silccore/silcprotocol.h
7159                 lib/silccore/silcsockconn.h
7160
7161           All core library headers are now formatted.
7162
7163 Sat Jun  2 10:45:09 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7164
7165         * Fixed a bug in Irssi SILC client; do not show that you are
7166           server/router operator if you really are not.  Affected file is
7167           irssi/src/silc/core/client_ops.c.
7168
7169         * Renamed silc_command_free_payload to silc_command_payload_free.
7170           Affected file lib/silccore/silccommand.h
7171
7172         * Added silcmath.h to include the prototoypes of various routines
7173           in the lib/silcmath.  Removed the old modinv.h, mpbin.h and
7174           silcprimegen.h.
7175
7176         * Changed the following headers to ROBODoc format:
7177
7178                 lib/silccore/silcchannel.h
7179                 lib/silccore/silccommand.h
7180                 lib/silccore/silcid.h
7181                 lib/silccore/silcidcache.h
7182                 lib/silccore/silcmode.h
7183                 lib/silccore/silcnotify.h
7184                 lib/silccore/silcpacket.h
7185                 lib/silcmath/silcmath.h
7186
7187 Fri Jun  1 22:19:37 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7188
7189         * Added checking to the server code not to start the server if
7190           ciphers and stuff are not configured properly.  Affected files
7191           silcd/serverconfig.[h] and silcd/server.c.
7192
7193         * Changed the layout of the header files of the public interfaces
7194           in the SILC libraries.  The new layout supports ROBODoc
7195           documentation tool (and some others) so that it is easy to create
7196           a library reference manual.  All the other headers and source
7197           code must still follow the CodingStyle document.  Also source
7198           code must not include these ROBODoc stuffs, only the headers.
7199           Furthermore, all public interface headers must now be named
7200           by using `silc' prefix, example: silcapi.h, silccipher.h.
7201           Some files were renamed due to this.  All the other headers
7202           must not be used as public interfaces.  I will update the
7203           CodingStyle document later.  Changed following headers, so far:
7204
7205                 lib/silcclient/silcapi.h
7206                 lib/silccore/silcauth.h
7207                 lib/silccore/silcprivate.h
7208                 lib/silccrypt/silcdh.h
7209
7210 Fri Jun  1 10:28:09 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7211
7212         * Updated TODO.
7213
7214         * Removed silc_client_packet_send_flush from the client library
7215           as it is not needed.  Affected file lib/silcclient/client.[ch].
7216
7217         * Added printing of message of unresolved authentication method
7218           to the Irssi SILC client.  Added it to the module formats.
7219           Removed the same message from the client library.
7220
7221 Thu May 31 13:57:33 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7222
7223         * Added new distribution feature, DISTLABEL.  Every distribution
7224           can define own preprocessor label that can be used in the
7225           source code.  For example: #ifdef SILC_DIST_CLIENT.  Affected
7226           file distributions, acconfig.h.pre and prepare.
7227
7228 Tue May 29 22:16:40 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7229
7230         * Added Makefile.defines_int to include the actual definitions
7231           for Makefile.defines.in.  Tested the new distribution system,
7232           created distributions and tested installation.
7233
7234         * Added AWAY message printing to the Irssi SILC client.  Added
7235           the messages to the irssi/src/fe-common/silc/module-formats.[ch].
7236
7237         * Added SCONNECT command to call the SILC's CONNECT command.
7238           Cannot use CONNECT directly since Irssi uses that internally.
7239           Affected file irssi/src/silc/core/silc-servers.c.
7240
7241           Added ACTION local command.  It is same as ME command but takes
7242           the channel as mandatory argument.
7243
7244           Rewrote some of the Irssi's help files to suite for SILC
7245           protocol.
7246
7247 Mon May 28 19:05:22 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7248
7249         * Added Makefile.defines[.in] that should for now on be included
7250           in all Makefile.am file in the source tree.  That file includes
7251           all common compilation definitions for SILC source tree.
7252
7253 Mon May 28 10:30:51 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7254
7255         * Minor changes to the ./prepare script to change the package
7256           name according the distribution name to the configure.in.
7257
7258 Sun May 27 22:24:57 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7259
7260         * Created new distribution system.  Added file `distributions'
7261           that defines all the distributions that can be created out of
7262           the SILC source tree.  The ./prepare script now reads that
7263           file to determine how to prepare the distributions.  The
7264           first argument to the ./prepare is the name of the distribution
7265           and second is the version of the distribution.  If given
7266           without arguments it creates the default (toolkit) distribution
7267           with the default version (defined in ./prepare).
7268
7269           All Makefile.am files that are subject to the distributions
7270           are now named as Makefile.am.pre.  These are ./Makefile.am
7271           and lib/Makefile.am.  Others may be changed later.
7272
7273 Sun May 27 15:57:17 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7274
7275         * Added invite list, ban list, some key management and connection
7276           error message printing to module formats in the Irssi SILC client.
7277
7278         * Added new silc_client_set_away_message to set the away message
7279           that is back to the person who sent private message.  The
7280           affected file lib/silcclient/silcapi.h and the
7281           lib/silcclient/client_prvmsg.c.
7282
7283 Sun May 27 12:39:48 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7284
7285         * Fixed the private message sending in the Irssi SILC client,
7286           added local command KEY to the Irssi SILC client.
7287
7288           Added key management and key agreement message formats to the
7289           irssi/src/fe-common/silc/module-formats.[ch].
7290
7291           Added USERS (alias WHO) printing, server/router operator
7292           indication and LIST command printing to the module formats.
7293
7294 Sat May 26 17:43:42 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7295
7296         * Fixed channel joining notify handling, cumode notify handling
7297           from Irssi SILC client.
7298
7299         * Added SILC specific module-formats to the Irssi SILC client so
7300           that SILC specific message hilighting, colors etc is possible.
7301           Affected file irssi/src/fe-common/silc/module-formats.[ch].
7302
7303           Added channel mode, channel user mode, actions, notices,
7304           whois and whowas printing to the the module-formats.c.
7305
7306         * Fixed a bug in channel deletion in the server.  The channel
7307           is not left to the cache even if the channel founder auth mode
7308           is set when there are no users anymore on the channel.  Affected
7309           file silcd/server.c.
7310
7311         * The silc_net_localhost now resolves the entire hostname including
7312           the domain name.  Affected file lib/silcutil/silcnet.c.
7313
7314 Sat May 26 12:13:37 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7315
7316         * Changed the ask_passphrase client operation to be ascynchronous.
7317           It has now a completion callback and a context that the
7318           application must call after it has got the passphrase from
7319           the user.  Affected files lib/silcclient/silcapi.h,
7320           lib/silcclient/protocol.c, lib/silcclient/command.c and
7321           silc/client_ops.c.
7322
7323           Added SilcAskPassphrase callback that the application calls
7324           to deliver the passphrase to the library.
7325
7326         * Changed the SKE protocol's SilcSKEVerifyCb to be asynchronous.
7327           The public key verification and especially a certificate
7328           verification is asynchronous procedure.
7329
7330           Added new SILC_SKE_STATUS_PENDING status to indicate the
7331           request is pending and a callback will be called to finalize
7332           the request.
7333
7334           Added also SILC_SKE_STATUS_PUBLIC_KEY_NOT_PROVIDED status to
7335           indicate that remote end did not send its public key (or
7336           certificate), even though we require it.  Added check for this
7337           condition in the SKE.  This was a security bug, now fixed.
7338
7339           Defined new SilcSKEVerifyCbCompletion callback that is called
7340           when the verification process is completed.
7341
7342           The affected files lib/silcske/silcske_status.h and
7343           lib/silcske/silcske.[ch].
7344
7345         * Changed the verify_public_key client operation to be async
7346           as well.  Defined SilcVerifyPublicKey callback that is used to
7347           indicate the success of the public key verification process.
7348
7349           Changed the server and client to use the new async client
7350           operations.
7351
7352         * Changed the Irssi SILC client's internal scheduler to be called
7353           twice as many times as it used to be.  As a result the client
7354           should be a bit faster now.  Affected file is
7355           irssi/src/silc/core/silc-core.c.
7356
7357         * Added support to Irssi SILC client of asynchronous public key
7358           verification and passphrase inquiry.  Affected file is
7359           irssi/src/silc/core/silc-core.c.
7360
7361 Fri May 25 14:38:38 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7362
7363         * Do not say "You have left channel %s" in client library.
7364           Moved it to the application.  Affected files are
7365           lib/silcclient/command.c and silc/client_ops.c.
7366
7367         * Fixed silc_client_get_clients.  Command context was not
7368           duplicated and was freed memory in the callback.  Affected
7369           file lib/silcclient/idlist.c.
7370
7371         * Do not say "you are now talking..." on JOIN command in the
7372           client library.  The appliation must handle it.
7373
7374         * Do not say ".. changed topic to" in command reply in the
7375           client libary.  The application must handle it.
7376
7377         * Fixed TOPIC command sending in the client library.
7378
7379         * Fixed a memory leak in silc_client_command_free in the file
7380           lib/silcclient/command.c.
7381
7382 Thu May 24 19:08:55 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7383
7384         * Imported a modified version of Irssi client to the source tree.
7385           The Irssi will be used to create a new client called
7386           Irssi SILC.  Imported to irssi/.
7387
7388           Added silc_core_init_finish function to the Irssi.  Affected
7389           file irssi/configure.in.
7390
7391           A lot changes in the Makefile.ams around the irssi tree.
7392
7393 Tue May 22 22:23:49 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7394
7395         * Do not rehash if the new size is same as the old size of the
7396           hash table, in the silc_hash_table_rehash*.  The affected file
7397           lib/silcutil/silchashtable.c.
7398
7399         * Replaced hash_table_del_by_context calls from the server
7400           (when channel->user_list and client->channels) to the
7401           hash_table_del as it is sufficient and faster.
7402
7403 Tue May 22 17:27:16 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7404
7405         * Added silc_hash_table_list, silc_hash_table_get and the
7406           SilcHashTableList structure to provide an alternative way to
7407           traverse the hash table.  The affected files are
7408           lib/silcutil/silchashtable.[ch].
7409
7410         * Changed the server's idlist routines to use the hash table
7411           routines to optimize the code.
7412
7413 Mon May 21 21:46:20 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7414
7415         * Replaced the client entry's `channel' list and channel entry's
7416           `user_list' list to hash tables for optimized lookup.  Changed
7417           the code to use the hash table interface around the code.
7418           Affected file lib/silcd/idlist.[ch].
7419
7420         * Added `auto_rehash' boolean argument to the function
7421           silc_hash_table_alloc to indicate whether the hash table should
7422           auto-rehash when it thinks is appropriate time.  It will
7423           increase the hash table size if the there is twice as much
7424           entries in the table than the size of the table, and will
7425           decrease the size if there are twice as less entries than
7426           the size of the table.
7427
7428 Mon May 21 09:51:11 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7429
7430         * Fixed silc_xxx_get_supported to not crash at some circumstances.
7431
7432 Sun May 20 13:45:58 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7433
7434         * silc_idcache_purge_by_context deletes the entry now by context
7435           as it is supposed to do.  Affected file lib/silccore/idcache.c.
7436
7437         * Send the ERR_NO_SUCH_NICK in the WHOIS command reply if the
7438           client is not anymore valid (WHOWAS givens the info) and not
7439           the ERR_NO_SUCH_CLIENT_ID if the nickname still exists.
7440
7441 Sat May 19 16:30:03 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7442
7443         * Removed the `data' and `data_len' arguments from the ID Cache
7444           interfaces and added `name' argument.  ID Cache does not handle
7445           anymore the binary data only a names associated with given ID.
7446
7447         * When hashing a Client ID with silc_hash_id the entire ID is
7448           not hashed anymore, instead only the hash of the Client ID is
7449           hashed.  This way we can access the Client ID from the cache
7450           with Client ID but with the hash of the ID (which is a hash of
7451           the nickname) as well without any difference in performance.
7452
7453           Added also silc_idcache_find_by_id_one_ext to do one on one
7454           searching when we have the actual ID.  Added also function
7455           silc_hash_client_id_compare.  The affected files are
7456           lib/silccore/idcache.[ch] and lib/silcutil/silcutil.[ch].
7457
7458         * When hashing the name associated with a ID it is always done
7459           in lowercase.  This way we can access the cache without worrying
7460           about case-sensitivity, even though, for example nicknames are
7461           case sensitive.
7462
7463         * Fixed a bug in server with channel message sending.  It put
7464           wrong ID type as destination ID.  The affected file
7465           silcd/packet_send.c.
7466
7467         * silc_idcache_del_by_context now deletes from all hash tables
7468           by context.  Affected file lib/silccore/idcache.c.
7469
7470 Fri May 18 17:42:00 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7471
7472         * Changed the client library to use the new ID Cache interface.
7473           Changes around the source tree.
7474
7475         * Added silc_hash_table_rehash_ext to rehash with specific
7476           hash function.  Affected file lib/silcutil/silchashtable.[ch].
7477
7478         * Added silc_hash_string_compare to compare two strings in the
7479           hash table.  Affected file lib/silcutil/silcutil.[ch].
7480
7481 Fri May 18 11:18:45 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7482
7483         * Added new function silc_idcache_del_by_context into the
7484           lib/silccore/idcache.[ch].
7485
7486         * Changed the server's ID list routines to use the new ID Cache
7487           interface.  Changes around the source tree.
7488
7489 Fri May 18 08:35:31 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7490
7491         * Added silc_hash_table_del[_by_context]_ext functions in to the
7492           lib/silcutil/silchashtable.[ch].
7493
7494           Removed silc_hash_table_find_all* routines and added new
7495           silc_hash_table_find_foreach to replace them.
7496
7497           Added silc_hash_table_replace_ext function as extended
7498           replacing function.  Separated the simple hash table interface
7499           from the extended hash table interface in the file
7500           lib/silcutil/silchashtable.h.
7501
7502         * Fixed minor bugs and changed it to use some of the new
7503           hash table functions in lib/silccore/idcache.c
7504
7505 Thu May 17 18:15:12 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7506
7507         * Added new function silc_hash_table_find_all to return all keys
7508           in the hash table by the specified key.  As the hash table is
7509           collision resistant it also makes it possible to have several
7510           duplicate keys in the hash table.  This function may be used to
7511           find all of the keys from the hash.
7512
7513           Added user_context arguments to the SilcHashFunction,
7514           SilcHashCompare and SilcHashDestructor to deliver user specified
7515           context.
7516
7517           Added new fuctions silc_hash_table_find[_all]_ext to do
7518           extended lookup with specified hash and compare functions and
7519           specified user contexts.
7520
7521           Added new function silc_hash_table_add_ext to add the key
7522           with specified hash function and user context.
7523
7524           Added new function silc_hash_table_foreach to traverse all
7525           entrys in the hash table.  Added SilcHashForeach callback
7526           function.
7527
7528           Added new function silc_hash_table_del_by_context to delete
7529           the entry only if the context associated with the key matches.
7530
7531           Affected files are lib/silcutil/silchashtable.[ch].
7532
7533         * Removed silc_hash_[server/client/channel]_id and added just
7534           silc_hash_id to the lib/silcutil/silcutil.[ch].  Added also
7535           silc_hash_id_compare to compare two ID's using as the hash table
7536           comparison function.  Added also silc_hash_data to hash
7537           binary data and silc_hash_data_compare to compare it.
7538
7539         * Removed silc_idlist_find_client_by_hash as it is not needed
7540           anymore.  Affected file silcd/idlist.[ch].
7541
7542         * Rewrote the entire ID Cache system (in lib/silccore/idcache.[ch])
7543           to use internally the SilcHashTable.  The new ID Cache is a lot
7544           faster than the old one.  Some of the ID Cache interface was also
7545           rewritten and obsolete and stupid functions were removed.
7546
7547 Wed May 16 23:03:30 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7548
7549         * Added entry_count field to the SilcHashTable to keep the number
7550           of the entries in the table.  Implemented the function
7551           silc_hash_table_rehash.  Added new function
7552           silc_hash_table_count.  Affected file lib/silcutil/silchashtable.c.
7553
7554           Fixed a minor bug in silc_hash_table_free.
7555
7556         * Added silc_hash_string, silc_hash_uint, silc_hash_ptr,
7557           silc_hash_client_id, silc_hash_server_id and silc_hash_channel_id
7558           into the lib/silcutil/silcutil.[ch].
7559
7560 Wed May 16 20:02:47 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7561
7562         * Implemented a collision resistant hash table into the
7563           lib/silcutil/silchashtable[ch].  See the header and the source
7564           for the SilcHashTable API.
7565
7566 Tue May 15 22:05:46 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7567
7568         * Merged dotconf version 1.0.2 into lib/dotconf.
7569
7570 Sun May 13 19:32:09 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7571
7572         * Do not compile anything in lib/silcsim/* if the SIM support
7573           is not enabled.  The tree should now compile without problems
7574           under cygwin.
7575
7576 Thu May 10 22:49:51 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7577
7578         * Compiled the SILC under cygwin.  Compiled and tested briefly
7579           without problems.  More tests needed.  The SIMs didn't compile
7580           though.
7581
7582         * Added various #ifdef HAVE_* stuff to lib/silccrypt/silrng.c.
7583
7584         * Fixed possible crash in silc_get_username in the
7585           lib/silcutil/silcutil.c.
7586
7587 Tue May  8 09:04:03 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7588
7589         * Fixed a va_arg in silc/client_ops.c.
7590
7591         * Oops, RC5 routines were named AES and caused some problems
7592           when not using SIM's.  Affected file lib/silccrypt/rc5.c.
7593
7594 Sun May  6 13:59:48 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7595
7596         * Added new SilcIDIP structure into the lib/silccore/id.h and
7597           replaced the old `ip' fields from all SILC ID's to that type.
7598           This is a step towards IPv6 support.
7599
7600           The silc_id_get_len takes now the ID as an extra argument.
7601           The silc_id_id2str, silc_id_str2id and silc_id_dup now supports
7602           both IPv4 and IPv6 based ID's.
7603
7604           The affected files are lib/silccore/id.[ch] and other files
7605           around the tree using these routines.
7606
7607         * Removed the ID length arguments in server from various
7608           silc_server_send_notify_* routines -> they are not needed
7609           anymore.
7610
7611 Sat May  5 13:56:33 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7612
7613         * Fixed memory leak in silc_encode_pem_file in the file
7614           lib/silcutil/silcutil.c.
7615
7616 Thu May  3 21:23:50 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7617
7618         * Check minor version as well in the SKE.  Affected files are
7619           silcd/protocol.c and lib/silcclient/protocol.c.
7620
7621         * Added --identifier option to the server so that an identifier
7622           can be when creating the public key for the server.  Affected
7623           file is silcd/silcd.c.
7624
7625         * Fixed minor decoding bug in silc_pkcs_decode_identifier in
7626           lib/silccrypt/silcpkcs.c.
7627
7628 Wed May  2 20:50:49 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7629
7630         * Register default ciphers and stuff when using -C option with
7631           the server.  Affected file sildc/silcd.c.
7632
7633         * Put back the servers public key filename format, it is better
7634           than the new one.  For now, the client keys are saved with the
7635           new filename format.  The affected file silc/client_ops.c.
7636
7637         * Implemented the Cipher API for the rest of the ciphers that
7638           did not implement it or implemented it the wrong way.
7639
7640 Wed May  2 13:31:26 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7641
7642         * Register default ciphers and stuff when using the -S option
7643           in the client.  Affected file silc/silc.c.  Same also when
7644           creating new key pair with -C option.
7645
7646 Tue May  1 14:18:13 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7647
7648         * Fixed the silc_verify_public_key client operation function to
7649           save the public keys differently.  The fingerprint is now
7650           used as filename and not the hostname.  This way also the
7651           client keys are saved uniquely and not with hostnames.  The
7652           affected file is silc/client_ops.c.
7653
7654         * Trimmed the silc_hash_fingerprint function to remove extra
7655           whitespaces from the end of the fingerprint.  The affected
7656           file is lib/silccrypt/silchash.c.
7657
7658         * Updated TODO.
7659
7660         * Added silc_cipher_register_default function to register all
7661           default ciphers.  It can be used when configuration files
7662           does not exist and the application does not want any specific
7663           ciphers in any specific order.
7664
7665           The SilcDList is now used as silc_cipher_list dynamically
7666           allocated cipher list.  Removed the static list all together
7667           and now all ciphers must be allocated to the dynamic list.
7668           The silc_cipher_alloc routine was changed to check only the
7669           dynamic list.
7670
7671           All silc_cipher_* routines that used to return int returns
7672           now bool.
7673
7674           The affected files lib/silccrypt/silccrypt.[ch].
7675
7676         * The same thing was done to silc_hash_* as for silc_cipher_*
7677           routines.  Affected files lib/silccrypt/silchash.[ch].
7678
7679         * The same thing was done to silc_pkcs_* as for silc_cipher_*
7680           routines.  Affected files lib/silccrypt/silcpkcs.[ch].
7681           Added also silc_pkcs_[un]register[_default] functions.
7682           Removed the data_context from the PKCS API.
7683
7684         * Added silc_hmac_register_default function to register default
7685           hmacs.  Affected files lib/silccrypt/silchmac.[ch].  Added also
7686           SILC_ALL_HMACS macro that can be used with silc_hmac_unregister
7687           to unregister all hmacs at once.
7688
7689         * Register the default ciphers, hash functions, PKCSs and HMACs
7690           if client's configuration file does not exist.  The affected
7691           file silc/silc.c.
7692
7693         * The client did not load the hash functions from the SIM
7694           modules at all.  Added support for this.  Affected file is
7695           silc/clientconfig.c.
7696
7697         * When decoding public key with silc_pkcs_public_key_decode, check
7698           the supported algorithm only if PKCS are registered.  Affected
7699           file lib/silccrypt/silcpkcs.c.  The same was done with the
7700           silc_pkcs_private_key_decode.
7701
7702         * Fixed the SILC List routines to keep the list always in order.
7703           It used to change the list's order when traversing the list but
7704           not it preserves the order.  Affected file lib/trq/silclist.h.
7705
7706 Mon Apr 30 17:29:03 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7707
7708         * Added the client library to use the SilcSocketConnection's
7709           reference counter (by silc_socket_dup) to prevent the bug that
7710           the socket object may be freed underneath async operation.
7711
7712         * The name resolv library checking fixes in the configure.in.pre.
7713           The patch by salo.
7714
7715         * Created new version of the protocol drafts for future
7716           development. The -03 drafts are the ones that will be changed
7717           in the trunk now and the -02 will remain as they are.
7718
7719         * Send list of CUMODE notifys to the router when announcing
7720           the channel users to the router.  Affected file silcd/server.c.
7721           If the router receiving channel founder CUMODE for a channel
7722           that already has channel founder it will send CUMODE notify
7723           to the sender to remove the channel founder rights from the
7724           announced client.  Affected file silcd/packet_receive.c.
7725
7726         * The CUMODE notify may now use Server ID as well as the entity
7727           who changes the mode.  Updated protocool specs.
7728
7729         * Updated INSTALL and README files.
7730
7731 Sun Apr 29 23:17:50 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7732
7733         * New web pages in the http://silc.pspt.fi.  The pages was
7734           designed by salo.
7735
7736         * Updated CREDITS.
7737
7738 Sun Apr 29 13:33:41 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7739
7740         * Implemented the [DenyConnectin] config section in the server.
7741           Added silc_server_config_denied_conn to check whether incoming
7742           connection is denied.  Affected file silcd/serverconfig.[ch].
7743
7744         * Do not check the ports when checking the incoming configuration
7745           data if the port is 0, meaning any.  Affected file is
7746           silcd/serverconfig.c.
7747
7748 Fri Apr 20 18:58:43 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7749
7750         * Fixed buffer overflow in silc_string_compare in the file
7751           lib/silcutil/silcutil.c.
7752
7753         * Fixed double free in silc_server_command_leave in the file
7754           silcd/command.c.
7755
7756 Fri Apr 20 14:00:11 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7757
7758         * Fixed the version checking in the server.  Affected file is
7759           silcd/protocol.c.
7760
7761 Thu Apr 19 19:52:46 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7762
7763         * Fixed the configuration data fetching when accepting new
7764           connections in the server.  Affected file silcd/server.c.
7765
7766 Thu Apr 19 11:40:20 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7767
7768         * Added `sender_entry' argument to the function
7769           silc_server_packet_relay_to_channel so that we can check
7770           whether some destination actually belongs to the same route
7771           the sender belongs (ie, we must not resend the packet to the
7772           sender).  Affected file silcd/packet_send.[ch].
7773
7774         * Added `servername' field to the SilcClientEntry in the server
7775           to hold the name of the server where client is from.  Affected
7776           file is silcd/idlist.h.
7777
7778 Wed Apr 18 22:19:03 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7779
7780         * Moved the channel message encrypting in the router betwen
7781           router connections from silc_server_channel_message to the
7782           silc_server_packet_relay_to_channel since we want to check
7783           whether we have anybody channel before encrypting anything.
7784           Affected files silcd/packet_[receive/send].c.
7785
7786 Tue Apr 17 21:18:19 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7787
7788         * Fixed the [AdminConnection] server config section to support
7789           multiple entries.  Affected file silcd/serverconfig.c.
7790
7791         * Added support into the server to check the validity of the
7792           incoming connection before executing any KE or authentication
7793           protocols.
7794
7795         * The connection configuration is now saved to the KE and
7796           connection auth protocol contexts and not fetched anymore in
7797           the protocol.  Affected files silcd/server.c, silcd/protocol.[ch].
7798
7799         * The local hosts listenning address and port is also resolved
7800           now when starting the server.  We want to have the socket object
7801           to include the real address and port for the listener.  Added
7802           new function silc_net_check_local_by_sock into the files
7803           lib/silcutil/silcnet.[ch].
7804
7805         * Fixed a broadcast bug in server -> do not broadcast if we
7806           are standalone.
7807
7808         * Fixed a routing bug.  Do not route broadcast packets ever.
7809           Broadcast packets must be processed always and not routed since
7810           they may be destined to some other host than yourself and thus
7811           would get routed without no good reason.  Affected file is
7812           silcd/server.c.
7813
7814         * Added function silc_server_config_is_primary_route to check
7815           whether primary router connection has been configured (a router
7816           configuration that we are initiating).  If there is not, we
7817           will assume that there is only two routers in the SILC network
7818           and we will use the incoming router connection as our primary
7819           route.  Affected files silcd/serverconfig.[ch], silcd/server.c.
7820
7821         * Changed the order of the broadcasting.  Broadcast _after_ the
7822           packet has been processed not before.  Affected file is
7823           silcd/server.c.
7824
7825         * Fixed a [ClientConnection] parsing bug.  The port was never
7826           parsed correctly thus resulting to port 0.  Affected file
7827           silcd/serverconfig.c.
7828
7829         * Fixed silc_server_send_notify_args -> it ignored the `broadcast'
7830           argument and did not set the broadcast packet flag.  Affected
7831           file silcd/packet_send.c.  Fixed same bug in the function
7832           silc_server_send_notify as well.
7833
7834         * If we receive NEW_ID packet for our own ID in the server, ignore
7835           the packet.
7836
7837 Mon Apr 16 12:10:33 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7838
7839         * Updated TODO.
7840
7841         * Removed the nickname from the Private Message Payload.
7842           Updated the code and the protocol specs.
7843
7844         * Updated protocol specs for submitting to the IETF.
7845
7846         * Tweaked the Random Number Generator a bit.  Affected file
7847           lib/silccrypt/silcrng.c.  Exported a new function
7848           silc_rng_[global]_add_noise which can be used to add more
7849           noise to the RNG.
7850
7851 Sat Apr 14 16:21:32 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7852
7853         * Do not parse packets with different timeout when protocol
7854           is active -> may cause problem with rekey.  Affected file
7855           silcd/server.c.
7856
7857         * When server receives signoff notify it must not create
7858           new channel key if the client is on any channels since the
7859           sender of the signoff notify will create it.
7860
7861 Fri Apr 13 17:12:46 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7862
7863         * Added printing of error messages during SKE protocol from the
7864           failure packet sent by server during SKE.  Affected file
7865           silc/client_ops.c.
7866
7867         * Removed the client's failure_callback handling with timeout
7868           and handle it immediately when received.
7869
7870         * The SKE library returned wrong type in SUCCESS and FAILURE
7871           packets.  They must be 32 bit MSB not 16 bit MSB.
7872
7873 Fri Apr 13 00:09:08 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7874
7875         * Ok, rewrote the logic of the re-key and now it seems to work.
7876           I tested it on high traffic with frequent re-keys without
7877           problems.  Added hmac_receive (and renamed hmac to hmac_send)
7878           in SilcClientConnection in lib/silcclient/client.h and
7879           in SilcIDListData in silcd/idlist.h.  Also, removed the
7880           SilcPacketParserContext's cipher and hmac fields as they are
7881           not needed anymore and actually caused some problems when
7882           the ciphers and hmac's changed underneath the packet parser.
7883
7884 Thu Apr 12 14:42:51 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7885
7886         * If re-key protocol is active then process the incoming packets
7887           synchronously since we must assure that icoming packets encrypted
7888           with the old key is processed before the new keys is set to
7889           use.  This is true other packets than for REKEY packets.
7890           Affected file silcd/server.c.  The same was done to client library
7891           as well, affected file lib/silcclient/client.c.
7892
7893 Thu Apr 12 12:01:52 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7894
7895         * Fixed bug in client and server to accept the force send if
7896           the packet is send from silc_[server/client]_packet_process
7897           function.  Otherwise the packets are never delivered, oops.
7898
7899 Wed Apr 11 22:10:15 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7900
7901         * Disable force sending of packets when REKEY protocol is active.
7902           We must assure that no packet is sent directly when rekey is
7903           performed.  All packets must be sent through packet queue.
7904           Added macro SILC_SERVER_IS_REKEY to silcd/server.h and
7905           SILC_CLIENT_IS_REKEY to lib/silcclient/client.h.  Affected
7906           function is silc_[server/client]_packet_send_real to check
7907           the situation.
7908
7909         * Replaced the SIM paths from example config files to
7910           /usr/local/modules.  Also, make install creates now
7911           /usr/local/silc/logs directory to hold all the SILC server
7912           logs.
7913
7914 Wed Apr 11 16:59:59 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7915
7916         * Made the configure.in.pre work on Solaris.  Patch by salo.
7917
7918         * Made all ciphers compatible with non-x86 machines.  Defined
7919           CBC mode macros into lib/silccrypt/ciphers_def.h.
7920
7921 Tue Apr 10 20:32:44 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7922
7923         * Fixed the make install.
7924
7925 Tue Apr 10 16:20:34 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7926
7927         * When MAC computation fails the silc_packet_decrypt returned 0
7928           even though it was supposed to return -1.  Fixed this.  The
7929           affected file is lib/silccore/silcpacket.c.
7930
7931         * Do not replace the config files in /etc/silc (in make install)
7932           if they already exist.  Affected file ./Makefile.am.
7933
7934         * Do not send re-key packets immediately but through packet queue.
7935           Affected file silcd/protocol.c and lib/silcclient/protocol.c.
7936
7937         * Changed silc_net_check_host_by_sock to return FALSE if the
7938           IP/DNS could not be resolved.  Though, it returns the IP address
7939           now even if it could not resolve it (but returns also FALSE).
7940           Affected file lib/silcutil/silcnet.[ch].
7941
7942 Mon Apr  9 21:54:44 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7943
7944         * Added silc_pkcs_decode_identifier to decode the public key's
7945           identifier.  Affected file lib/silccrypt/silpkcs.[ch].
7946           Added also silc_pkcs_free_identifier.  Added also new context
7947           SilcPublicKeyIdentifier.
7948
7949         * Added -S option to the silc client.  It is used to dump the
7950           contents of the specified public key file.
7951
7952         * Changed the PKCS api to return the public key length when
7953           setting the public key.
7954
7955         * Fixed a fatal bug in the public and private key file loading.
7956           Affected file lib/silccrypt/silcpkcs.c.
7957
7958         * Execute the packet parsing for client with zero (0) timeout
7959           if the protocol is active.  Affected file silcd/server.c.
7960
7961 Sun Apr  8 19:30:56 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7962
7963         * Made the key generation options to the silcd program.  Added
7964           -C option, equivalent to client's option.
7965
7966         * Added new [ServerKeys] config section to the server.  It
7967           configures the server's public and private key.
7968
7969         * Defined generic Public Key Payload into the protocol
7970           specification to send specific type of public keys and
7971           certificates.
7972
7973         * Defined new command SILC_COMMAND_GETKEY to fetch a client's
7974           public key or certificate.
7975
7976         * Implemented the GETKEY command to the server and to the
7977           client library and on user interface.
7978
7979 Sun Apr  8 01:37:21 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7980
7981         * Made preliminary `make install' work.
7982
7983 Thu Apr  5 17:42:30 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7984
7985         * Added SilcServerRekey context into silcd/idlist.h.
7986
7987         * Added the PFS support as defined in the specification to the
7988           SKE protocol.  Affected files lib/silcske/*.c.
7989
7990         * Added `ske_group' field to the SilcServerRekey context to hold
7991           the number of the SKE group that is used with PFS in re-key.
7992           Affected file silcd/idlist.h.
7993
7994         * Added PFS re-key support to the server.  Affected file is
7995           silcd/protocol.c.
7996
7997         * Added silc_protocol_cancel to cancel execution of the next
7998           state of the protocol.  Affected file is
7999           lib/silccore/silcprotocol.[ch].
8000
8001         * Added the re-key support with and without PFS to the client
8002           library.  Re-key is performed once in an hour, by default.
8003
8004           Added new protocol type SILC_PROTOCOL_CLIENT_REKEY.
8005           Added silc_client_rekey_callback and silc_client_rekey_final.
8006           Affected files are lib/silcclient/protocol.[ch] and
8007           lib/silcclient/client.[ch].
8008
8009         * Removed the `hmac_key' and `hmac_key_len' fields from the
8010           SilcClientConnection structure; not needed.  Affected file is
8011           lib/silcclient/client.h.
8012
8013         * Updated TODO.
8014
8015 Wed Apr  4 16:32:31 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8016
8017         * Do not ask whether user wants to use the negotiated private key
8018           for private messages, just use it.  Affected file is
8019           silc/local_command.c.
8020
8021         * Added `send_enc_key' and `enc_key_len' fields to the
8022           SilcIDListData structure since they are needed in the re-key
8023           phase.  Affected file is silcd/idlist.[ch].
8024
8025         * Implemented the simple re-key protocol into the server.
8026           Affected files silcd/server.c and silcd/protocol.[ch].  The
8027           re-key will be performed once in an hour, by default.
8028
8029           Added new protocol type SILC_PROTOCOL_SERVER_REKEY.
8030           Added silc_server_rekey, silc_server_rekey_callback and
8031           silc_server_rekey_final.
8032
8033         * Removed Tunneled flag from the protocol.  Updated the code
8034           and the specifications.
8035
8036         * Adde `pfs' field to the SilcIDListData to indicate whether
8037           the PFS is to be performed in the re-key.  Affected file is
8038           silcd/idlist.h.
8039
8040 Tue Apr  3 21:52:42 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8041
8042         * Defined uint8, int8, uint16, int16, uint32, int32, uint64 and
8043           int64 of at least the xintXX size.  If void * is less that 4
8044           bytes uint32 * will be used.  Defined bool as boolean.
8045
8046         * Changed _ALL_ unsigned long and unsigned int to uint32,
8047           unsgined short to uint16 in the source tree.
8048
8049         * Fixed a fatal bug in silc_server_remove_clients_by_server.  Do
8050           not handle clients that has entry->data.registered == FALSE.
8051           They are not in the network anymore.  Affected file is
8052           silcd/server.c.
8053
8054 Tue Apr  3 16:39:19 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8055
8056         * Implemented the sending of the SERVER_SIGNOFF notify in the
8057           server.  Affected file is silcd/server.c.
8058
8059         * Added silc_server_send_notify_args into silcd/packet_send.[ch].
8060           Added also silc_notify_payload_encode_args into the
8061           lib/silccore/silcnotify.[ch].
8062
8063         * Implemented ther SERVER_SIGNOFF notify handling in the server.
8064           Affected file silcd/packet_receive.c.
8065
8066         * Implemented the SERVER_SIGNOFF notify handling in the client
8067           library.  Affected file lib/silcclient/client_notify.c.  Also,
8068           implemnted the printing of the SERVER_SIGNOFF info to the
8069           application.  Affected file silc/client_ops.c.
8070
8071         * The silc_idlist_del_server now returns TRUE or FALSE to indicate
8072           if the deleting was successful.  Affected file silcd/idlist.[ch].
8073
8074         * Added support for public key authentication in the connection
8075           authentication protocol in the client library.  Affected file
8076           lib/silcclient/protocol.c.
8077
8078         * Changed the server's silc_idlist_get_clients_by_* interface
8079           to support already allocated array so that new entries may be
8080           added to pre-allocated array.  Affected file silcd/idlist.[ch].
8081           This fixes some bugs with WHOIS, WHOWAS and IDENTIFY commands
8082           and command replies.
8083
8084         * All command reply functions in the server now calls the
8085           pending command callback even if error occured.  This way the
8086           error will be delivered to the client as well.  Affected files
8087           silcd/command.c and silcd/command_reply.c.
8088
8089         * Fixed INFO command to return local server's info if no server
8090           was provided.  Affected file lib/silcclient/command.c.
8091
8092         * Removed RESTART command for good.  Updated the code and the
8093           protocol specs.
8094
8095         * Rewrote parts of the task system.  It is a bit simpler now.
8096           Removed unsued task priorities. The affected files are
8097           lib/silcutil/silctask.[ch].
8098
8099 Mon Apr  2 20:02:33 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8100
8101         * Moved the USERS printing from the library to the application.
8102           Affected files lib/silcclient/command.c and silc/client_ops.c.
8103
8104 Mon Apr  2 13:13:23 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8105
8106         * Updated TODO.
8107
8108         * Added channel key re-key support.  The re-key is perfomed
8109           only by the router and is done once in an hour.  Added `rekey'
8110           field to the SilcChannelEntry in the server.  Affected files
8111           silcd/server.c and silcd/idlist.h.
8112
8113         * Added silc_task_unregister_by_context into the file
8114           lib/silcutil/silctask.[ch].
8115
8116 Sun Apr  1 19:49:34 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8117
8118         * Added SILC_UMODE_GONE mode to indicate when the client is not
8119           present in the SILC network.  Added also support to the local
8120           command AWAY that will set this mode.  Added support of showing
8121           "xxx is gone" in WHOIS command.  The USERS command shows the
8122           gone status as well.
8123
8124         * Fixed setting server and router operator privileges in the
8125           server's UMODE command.  Affected file silcd/command.c.
8126
8127         * Merged the SKE KE1 and KE2 payloads into one payload.  The
8128           new KE payload is equivalent to the old KE2 payload.
8129
8130           Cleaned up the SKE Start Payload parsing.  It now uses the
8131           simple buffer unformatting to do the parsing.  A lot faster
8132           now.
8133
8134           Added new Mutual Authentication flag (SILC_SKE_SP_FLAG_MUTUAL)
8135           to the SKE that is used to indicate whether both of the SKE
8136           parties should perform authentication.  By default only the
8137           responder performs authentication.  By setting this flag also
8138           the initiator must do authentication.  By default it is unset
8139           since in normal SKE case, client to server connection, only
8140           the responder should do authentication.  When doing SKE between
8141           two clients both should perform authentication.  Updated the
8142           code and the protocol specs.
8143
8144         * A little fix to IDENTIFY command in the server.  Search the
8145           client first by hash not nickname.  Affected file is
8146           silcd/command.c.
8147
8148         * Fixed the silc_client_close_connection to support closing
8149           the client to client connections wihtout deleting too much
8150           data.  Affected file lib/silcclient/client.c.
8151
8152         * Fixed a fatal bug in server and client; if KE1 or KE2 packets
8153           are received if protocol used to be active but is not anymore
8154           the application would crash due to NULL pointer dereference.
8155           Affected files silcd/server.c and lib/silcclient/client.c.
8156
8157         * Added `hash' field to the SilcClientConnection to include
8158           the hash function negotiated in the SKE protocol.
8159
8160         * Added new channel mode SILC_CMODE_FOUNDER_AUTH that is used
8161           to set the channel founder authentication data.  A client can
8162           claim the founder rights later by providing the authentication
8163           data to the CUMODE command using SILC_CUMODE_FOUNDER mode.
8164           This way the channel founder can regain the channel founder
8165           privileges even it is left the channel.  This works only on
8166           local server and the client must be connected to the same
8167           server to be able to regain the founder rights.  Updated the
8168           protocol specs accordingly.
8169
8170           Added support to the CMODE command in the client to set the
8171           founder auth data.  Read the README to see how to set it.
8172
8173           Added support to the CUMODE command to claim the founder
8174           rights.  Read the README to see how to do it.
8175
8176           Added support for the founder authentication to the Channel
8177           Entry in the server.  Affected file silcd/idlist.h.
8178
8179           Added support for the SILC_CMODE_FOUNDER_AUTH mode in the
8180           server's CMODE command.  Affected file silcd/command.c.
8181
8182         * Added the following new functions into lib/silccore/silcauth.[ch]:
8183           silc_auth_get_method and silc_auth_get_data.
8184
8185         * The server now saves the remote hosts public key to the
8186           SilcIDListData pointer.  Affected file silcd/protocol.c.
8187
8188         * The normal server now does not remove the channel entry from
8189           the cache if the founder authentication data is set.  It used
8190           to remove it if the founder was the last one on the channel on
8191           the server and left the channel.  The auth data is saved and
8192           if the channel is re-joined later the old entry is used with
8193           the old auth data.  Affected files silcd/command_reply.c and
8194           silcd/server.c.
8195
8196         * Removed the `pkcs' field from the SilcIDListData structure
8197           in the server; it is not used.  Affected file silcd/idlist.h.
8198
8199 Sat Mar 31 15:38:36 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8200
8201         * Fixed packet processing on slow links.  Partial packets were
8202           never re-processed because the incoming data buffer was cleared
8203           by the application.  Application must not directly clear the
8204           sock->inbuf, the packet processing routines handle it.  Fixed
8205           this in client library and in server.
8206
8207 Fri Mar 30 16:35:27 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8208
8209         * Fixed the WHOIS and IDENTIFY send reply function to really
8210           check whether to send list or just one entry.  Affected file
8211           silcd/command.c.
8212
8213         * Cleaned up the LEAVE command's channel key distribution.  The
8214           affected file silcd/command.c.
8215
8216         * Changed CMODE_CHANGE's <Client ID> to <ID Payload> as server
8217           can enforce the channel mode as well.  In that case the ID
8218           includes the ID of the server.  The code now enforces the
8219           mode change if the router have different mode than the server.
8220
8221         * The notify client operation with CMODE_CHANGE notify can now
8222           return NULL client_entry pointer if the CMODE was not changed
8223           by client.  Application must check for this.
8224
8225         * Added <Server ID> argument to INFO command to support server
8226           info fetching by Server ID.
8227
8228         * Added silc_server_announce_get_channel_users to get assembled
8229           packets of channel users of the specified channel.  Affected
8230           file silcd/server.[ch].
8231
8232         * Fixed bug in CHANNEL_CHANGE notify in the server.  The new ID
8233           was freed underneath the ID Cache.
8234
8235         * Re-announce clients when the server received CHANNEL_CHANGE
8236           notify from the router.  Affected file silcd/packet_send.c.
8237
8238 Thu Mar 29 19:10:28 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8239
8240         * Fixed a fatal bug when client does /join 1 2 3 4 5 6 the server
8241           crashed since it did not handle the fact that there is no cipher
8242           called "3" and didn't check the error condition.  Now fixed.
8243
8244         * Added SILC_MESSAGE_FLAG_REQUEST message flag as generic request
8245           flag.  It can be used to send message requests.
8246
8247 Thu Mar 29 12:26:25 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8248
8249         * Implemented the RESTART command in the client.
8250
8251         * Added SILC_MESSAGE_FLAG_NOTICE message flag for informational
8252           notice type messages.  Added notice printing to the user
8253           interface.
8254
8255         * The channel keys are not re-generated if the channel's mode
8256           is PRIVKEY, ie private key on the channel exists.  Affected
8257           files silcd/server.c and silcd/command.c.
8258
8259         * Fixed a little bug in channel message delivery when channel
8260           private keys are set in the server.  Affected file is
8261           silcd/packet_send.c.
8262
8263         * Changed the setting on channel->on_channel = TRUE from the
8264           silc_client_save_channel_key to the JOIN command reply.  The
8265           key payload is not received if the private channel key is set.
8266           Affected file lib/silcclient/command_reply.c and the
8267           lib/silcclient/client_channel.c.
8268
8269         * When the CMODE_CHANGE notify is sent and the channel private
8270           key mode is removed the channel key must be re-generated in
8271           other cells as well.  Added this support for the router in the
8272           silcd/packet_receive.c.
8273
8274         * Added new local command NOTICE to send notice message on
8275           channel.  Affected file silc/local_command.[ch].
8276
8277 Wed Mar 28 23:55:54 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8278
8279         * Added new local command ME to the client.  It is used to send
8280           message to a channel with SILC_MESSAGE_FLAG_ACTION to indicate
8281           some action.  Affected file silc/local_command.[ch].
8282
8283         * Changed channel_message and private_message client operations
8284           to deliver the message flags to the application.  Added also
8285           the `flags' arguments to the silc_client_send_channel_message
8286           and silc_client_send_private_message functions.  Affected file
8287           silcapi.h.
8288
8289 Wed Mar 28 20:50:47 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8290
8291         * Redefined the Private Message Payload to support private message
8292           keys and to support the new private message flags.  Updated
8293           the protocol specs.  Flags makes it possible to have for example
8294           CTCP style messages.
8295
8296         * Added new type SilcPrivateMessagePayload and defined an API
8297           for it in the lib/silcclient/silcprivate.[ch].
8298
8299         * Tested private message private keys successfully.  Tested the
8300           private message key set, unset and list commands with the new
8301           KEY command.
8302
8303         * Redefined the Channel Message Payload to include the channel
8304           message flags (equal with private message flags) to support
8305           for example CTCP style messages.
8306
8307         * Defined some of the message (for channel and private message)
8308           flags.  Updated the protocol specs and added the flags to the
8309           lib/silccore/silcchannel.h.  The type is SilcMessageFlags.
8310
8311 Wed Mar 28 15:52:36 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8312
8313         * Added SilcKeyAgreementStatus type to the key agreement routines
8314           to indicate the current status and error if one occured.
8315           The status types are defined in the lib/silcclient/silcapi.h.
8316
8317         * Added new local command KEY that is used to set and unset private
8318           keys for channels, set and unset private keys for private messages
8319           with remote clients and to send key agreement requests and
8320           negotiate the key agreement protocol with remote client.  The
8321           key agreement is supported only to negotiate private message keys,
8322           it currently cannot be used to negotiate private keys for channels,
8323           as it is not convenient for that purpose.
8324
8325         * Fixed a minor pending callback setting bug in the function
8326           silc_client_get_client_by_id_resolve, now the function works.
8327           Affected file lib/silcclient/idlist.c.
8328
8329         * Added function silc_net_get_local_port to get local bound
8330           port by socket.  Added to lib/silcutil/silcnet.[ch].
8331
8332         * Added `sockets' and `sockets_count' fields to the SilcClient
8333           object.  They hold the sockets of the listenning sockets in
8334           the client.  Listenning sockets may be for example the key
8335           agreement server.  Affected file lib/silcclient/client.[ch].
8336           Added functions the silc_client_add_socket and the
8337           silc_client_del_socket.  They are exported to the application
8338           as well.
8339
8340         * Added ~./silc/clientkeys to support other client's public keys.
8341
8342         * Renamed verify_server_key client operation to verify_public_key
8343           and added one argument to indicate the type of the connection
8344           (server, client etc.).
8345
8346 Tue Mar 27 22:22:38 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8347
8348         * Added silc_server_connection_auth_request to handle the
8349           incoming CONNECTION_AUTH_REQUEST packet.  Affected file is
8350           silcd/packet_receive.[ch].
8351
8352         * Added silc_server_send_connection_auth_request into the
8353           silcd/packet_send.c to send the connection auth request packet.
8354
8355         * Cleaned up the silcd/protocol.c a bit and fixed some memory
8356           leaks.
8357
8358         * Fixed the public key authentication in responder side in the
8359           server.  The `auth_data' pointer includes the SilcPublicKey
8360           not the path to the public key.  Affected file silcd/protocol.c.
8361
8362         * Implemented the public key authentication in the initiator side
8363           in the server.  Affected file silcd/protocol.c.
8364
8365         * Removed the [RedirectClient] config section from the server
8366           configuration.  Is not needed and I don't want to implement it.
8367
8368 Tue Mar 27 12:49:56 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8369
8370         * Cleaned up the CMODE command in the server.  It now works
8371           correctly and supports all the modes defined in the protocol.
8372           Affected file is silcd/command.c.
8373
8374         * Added `hmac_name' field to the SilcChannelEntry in the server
8375           to hold the default HMAC of the channel.  It can be set when
8376           creating the channel (with JOIN command).  Affected files
8377           silcd/idlist.[ch].
8378
8379         * Added <cipher> and <hmac> argument to the CMODE_CHANGE notify
8380           type to indicate the change of the current cipher and hmac
8381           on the channel.  Client can safely ignore the <cipher> argument
8382           (if it chooses to do so) since the CHANNEL_KEY packet will
8383           force the channel key change anyway.  The <hmac> argument is
8384           important since the client is responsible of setting the new
8385           HMAC and the hmac key into use.
8386
8387         * Fixed the CMODE command in the client library as well.
8388
8389         * Tested CMODE command in router environment successfully.
8390
8391 Mon Mar 26 14:39:48 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8392
8393         * Show the version of the remote client (or server) when connecting
8394           to the server.  It is logged to the log file.  Affected file
8395           is silcd/protocol.c.
8396
8397         * Fixed the KILLED notify handling in the client library.  The
8398           client must be removed from all channels when receiving the
8399           KILLED notify.
8400
8401           Also, do not remove the client entry when giving the KILL
8402           command but when the KILLED notify is received.
8403
8404         * Removed silc_idlist_find_client_by_nickname from the server.
8405           Not needed anymore.  Affected files silcd/idlist.[ch].
8406
8407         * Implemented the CHANNEL_CHANGE notify type handling to the
8408           server.  Affected file silcd/server.c.
8409
8410         * Updated TODO.
8411
8412 Mon Mar 26 12:11:14 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8413
8414         * Added silc_server_send_notify_invite to send the INVITE
8415           notify between routers.
8416
8417         * Implemented the INVITE command correctly to the server.
8418
8419         * Implemented the INVITE notify type handling in the server.
8420
8421         * Implemented the INVITE command to the client library and on the
8422           user interface.
8423
8424 Sun Mar 25 20:27:09 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8425
8426         * Added function silc_server_get_client_resolve to find the
8427           client entry by ID from all ID lists and then resolve it
8428           (using WHOIS) if it cannot be found.  Affected file is
8429           silcd/server.[ch].
8430
8431 Sun Mar 25 13:52:51 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8432
8433         * Implemented the BAN command to the client library.
8434
8435         * The JOIN command in the server now checks the invite list
8436           and the ban list.
8437
8438         * Changed the silc_command_reply_payload_encode_va and the
8439           silc_command_payload_encode_va to support that if argument is
8440           NULL it ignores and checks the next argument.  Affected file
8441           lib/silccore/silccommand.c.
8442
8443         * Added silc_server_send_notify_ban to send the BAN notify
8444           type between routers.
8445
8446         * Chaned the silc_notify_payload_encode to support that if
8447           argument is NULL it ignores and checks the next argument.
8448           Affected file lib/silccore/silcnotify.c.
8449
8450         * Tested ban lists in router environment successfully.
8451
8452 Sat Mar 24 14:47:25 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8453
8454         * Implemented BAN command to the server, in silcd/command.[ch].
8455
8456         * Removed the BAN and INVITE_LIST modes from the CMODE command
8457           in the server code.
8458
8459         * Added function silc_string_match to regex match two strings.
8460           Affected files lib/silcutil/silcutil.[ch].
8461
8462 Fri Mar 23 22:02:40 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8463
8464         * Redefined parts of the SilcChannelEntry in the server to support
8465           the new ban and invite lists.
8466
8467 Fri Mar 23 16:25:11 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8468
8469         * Redefined the INVITE command.  The same command can be used to
8470           invite individuals to the channel but also to manage the invite
8471           list of the channel (to add to and remove from the invite list).
8472           Updated the protocol specs.
8473
8474         * Added new command SILC_COMMAND_BAN that can be used to manage
8475           the ban list of the channel.  Updated the protocol specs.
8476
8477         * Removed the channel modes: the SILC_CMODE_BAN and the
8478           SILC_CMODE_INVITE_LIST as they were a bit kludge to be included
8479           in the CMODE command.  The equivalent features are now available
8480           using INVITE and BAN commands.  Updated the protocol specs.
8481
8482         * Added new SILC_NOTIFY_TYPE_BAN notify type to notify routers
8483           in the network about change in the current ban list.  The notify
8484           type is not used by the client.
8485
8486         * Redefined parts of the SILC_NOTIFY_TYPE_INVITE command to
8487           support the invite lists.
8488
8489 Thu Mar 22 22:52:23 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8490
8491         * Added new function silc_string_regexify that converts string
8492           including wildcard characters into regex string that can
8493           be used by the GNU regex library.  Added into the file
8494           lib/silcutil/silcutil.[ch].
8495
8496           Added silc_string_regex_combine to combine to regex strings
8497           into one so that they can be used as one regex string by
8498           the GNU regex library.  Added into the file
8499           lib/silcutil/silcutil.[ch].
8500
8501           Added silc_string_regex_match to match two strings.  It returns
8502           TRUE if the strings match.  Added into lib/silcutil/silcutil.[ch].
8503
8504 Thu Mar 22 15:29:42 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8505
8506         * Imported GNU regex to the soruce tree into lib/contrib.
8507           Fixed some compiler warning from the regex.c.
8508
8509 Wed Mar 21 15:27:58 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8510
8511         * Fixed MOTD command in the server to work in router environment.
8512
8513         * Fixed the MOTD command in the client library to support
8514           the server argument in the command.
8515
8516         * Added `nickname_len' argument to the silc_idlist_add_client
8517           in the server, as the `nickname' argument may be binary data
8518           (it may be hash).
8519
8520         * Added silc_idlist_get_channels to return all channels from
8521           the ID list.
8522
8523         * Implemented LIST command to the server.  Affected file is
8524           silcd/command.c.
8525
8526         * Implemented the LIST command to the client library and on the
8527           user interface.
8528
8529         * Added [<user count>] argument to the LIST command reply.
8530           With private channels the user count is not shown.
8531
8532         * Updated TODO and README.
8533
8534 Tue Mar 20 21:05:57 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8535
8536         * The client entry's data.registered must be TRUE even with
8537           global client entry on global client list.  The data.registered
8538           is used to check whether the client is anymore in the network,
8539           for example with WHOWAS command so it must be valid.
8540
8541         * Fixed the WHOWAS command in the server.  It now actually works
8542           in router environment.  Added function into silcd/command_reply.c
8543           silc_server_command_reply_whowas_save.
8544
8545         * Added silc_idlist_purge function to the silcd/idlist.c
8546           to periodically purge the ID Cache.
8547
8548         * Fixed INFO command in the server.  It works now in router
8549           environment.  Added <server name> argument to the INFO command
8550           reply.  Updated the protocol specs.
8551
8552         * Fixed minor bug in silc_idcache_purge to not purge if the
8553           expire value is zero.
8554
8555         * Fixed various bugs in WHOIS and IDENTIFY command handling as
8556           they were buggy because of the WHOWAS information.
8557
8558         * Fixed local command MSG to handle the async resolving of
8559           the remote client properly.  It used to fail the first MSG.
8560           Affected file silc/local_command.c.
8561
8562         * Added `data_len' field to SilcIDCache context.
8563
8564 Tue Mar 20 16:29:00 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8565
8566         * Update TODO.  Todo in commands in the server.
8567
8568 Tue Mar 20 15:45:14 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8569
8570         * Added new notify type SILC_NOTIFY_TYPE_UMODE_CHANGE that is
8571           used by routers as broadcast packet to inform other routers
8572           about the changed user mode.
8573
8574           Implemented the notify handling in the server.  Affected file is
8575           silcd/packet_receive.c.  Added the function
8576           silc_server_send_notify_umode to the silcd/packet_send.[ch].
8577
8578         * Added new generic Channel Payload and deprecated the New Channel
8579           Payload.  The New Channel Payload is now the generic Channel
8580           Payload.
8581
8582         * Added new argument `mode' to the silc_server_send_new_channel
8583           as it is required in the Channel Payload now.
8584
8585         * Renamed the SilcChannelPayload to SilcChannelMessagePayload
8586           and created a new and real SilChannelPayload to represent the
8587           new generic Channel Payload.  Implemented the encode/decode
8588           for Channel Payload.  Affected file lib/silccore/silcchannel.[ch].
8589
8590         * Added silc_server_get_client_channel_list to return the list
8591           of channels the client has joined for WHOIS command reply.
8592           Affected file silcd/server.[ch].
8593
8594         * Implemented the channel list sending in the WHOIS command reply
8595           in server and in the client.
8596
8597           Implemented the channel list displaying on the user interface
8598           as well.  Affected file silc/client_ops.c.
8599
8600         * Added silc_channel_payload_parse_list to parse list of Channel
8601           Payloads.  It returns SilcDList list of SilcChannelPayloads.
8602           Client for example can use this function to parse the list of
8603           channels it receives in the WHOIS command reply.  The caller
8604           must free the list by calling silc_channel_payload_list_free.
8605           Affected files lib/silccore/silcchannel.[ch].
8606
8607 Mon Mar 19 21:39:15 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8608
8609         * Added one new argument <user mode> to the WHOIS command reply
8610           to return the mode of the user in SILC.  Updated the protocol
8611           specs.
8612
8613           Implemented it to the server and client.
8614
8615 Mon Mar 19 18:43:06 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8616
8617         * Fixed the mode printing on the user interface on joining.
8618           Affected file silc/client_ops.c.
8619
8620         * Implemented the UMODE command and user modes in general to the
8621           client library and to the user interface.
8622
8623         * Implemented the UMODE command to the server.
8624
8625         * The server now sends UNKNOWN_COMMAND error status if client sends
8626           unknown command.  Affected file silcd/command.c.
8627
8628         * All server commands now handle the command identifier the right
8629           way when sending the command reply to the client.  The client can
8630           use to identify the command replies with the identifier.
8631
8632 Mon Mar 19 16:13:07 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8633
8634         * Added silc_server_get_client_route to resolve the route to
8635           the client indicated by the client ID.  Affected file is
8636           silcd/server.[ch].
8637
8638         * Added silc_server_relay_packet as general function to relay
8639           packet to arbitrary destination.  This deprecates functions
8640           like _send_private_message_key, _relay_notify etc.  Affected
8641           file is silcd/packet_send.[ch].
8642
8643           Removed silc_server_send_key_agreement,
8644           silc_server_send_private_message_key and
8645           silc_server_packet_relay_notify functions from the file
8646           silcd/packet_send.[ch].
8647
8648         * Updated TODO.
8649
8650         * Implemented the SILC_NOTIFY_TYPE_KILLED notify handling in the
8651           server.  Affected file silcd/packet_receive.[ch].
8652
8653         * Implemented the KILL command to the client.  Implemented the
8654           SILC_NOTIFY_TYPE_KILLED notify handling in the client library.
8655           Affected files lib/silcclient/command[_reply].c and
8656           lib/silcclient/client_notify.c.  Implemented the KILL notify
8657           printing in the user inteface.
8658
8659         * Fixed a lot silc_parse_nick memory leaks from the client
8660           library in the file lib/silcclient/command.c.
8661
8662         * Changed the silc_server_send_notify_on_channels's `sender'
8663           argument from SilcSocketConnection to SilcClientEntry to
8664           check the sender as entry and not as connection object and not
8665           to send to the client provided as argument.  The affected file
8666           is silcd/packet_send.[ch].
8667
8668         * The notify packets that are destined directly to the client used
8669           to not to be processed by the server.  Now changed that and the
8670           server processes all notify packets.  After relaying the packet
8671           to the client the notify packet is processed in the server.
8672
8673         * The silc_server_free_client_data now checks whether there is
8674           pending outgoing traffic for the client and purges the data to
8675           the network before removing the client entry.
8676
8677 Sun Mar 18 21:02:47 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8678
8679         * Added SILC_NOTIFY_TYPE_KILLED notify type.  It is sent when
8680           an client is killed from the SILC Network.  Updated the protocol
8681           specs accordingly.
8682
8683           Added new function silc_server_send_notify_killed to the
8684           silcd/packet_send.[ch].
8685
8686         * Added function silc_server_packet_relay_notify to relay notify
8687           packets that are destined directly to a client.  In this case
8688           the server does not process the notify packets but merely relays
8689           it to the client.  Affected file silcd/packet_send.[ch].
8690
8691           Added also silc_server_packet_process_relay_notify to check
8692           whereto relay the notify.  Affected file is
8693           silcd/packet_receive.[ch].
8694
8695         * Implemented the KILL command to the server.
8696
8697         * Updated TODO.
8698
8699         * Added the backup schema desgined last fall to the protocol
8700           specs for everyone to see.  The specification is in the
8701           *-spec-xx.txt draft and the packet type definitions for the
8702           backup routers is in *-pp-xx.txt draft.  Thusly, added also
8703           new packet type SILC_PACKET_CELL_ROUTERS.
8704
8705         * A big security problem in the implementation discovered.  The
8706           signoff of an client did not cause new channel key generation
8707           which it of course should've done.  The channel keys must be
8708           always re-generated when client leaves (or signoffs) the channel.
8709           The silc_server_remove_from_channels funtion now handles
8710           the channel key re-generation.
8711
8712         * Added `sender' argument to the silc_server_send_notify_on_channels
8713           to not to send the client provided as argument.  Affected file
8714           silcd/packet_send.[ch].
8715
8716 Fri Mar 16 15:52:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8717
8718         * Implemented OPER and SILCOPER commands into the server and
8719           the client library.
8720
8721         * Added silc_auth_verify and silc_auth_verify_data to verify
8722           the authentication directly from the authentication payload.
8723           It supports verifying both passphrase and public key based
8724           authentication.  Affected file lib/silccore/silcauth.[ch].
8725
8726         * Added `hash' field to the SilcIDListData structure.  It is the
8727           hash negotiated in the SKE protocol.  Affected file is
8728           silcd/idlist.[ch].
8729
8730         * Slight redesigning of the SilcAuthPayload handling routines.
8731           Do not send SilcPKCS but SilcPublicKey as argument.
8732
8733         * Implemented the public key authentication support to the
8734           serverconfig.  The public key is loaded from the provided path
8735           and saved as authentication data to void * pointer.  Thus,
8736           changed the unsigned char *auth_data to void *auth_data;
8737
8738         * Fixed SHUTDOWN command to send the reply before the server
8739           is shutdown. :)  Affected file silcd/command.c.
8740
8741         * Fixed fatal bug in CONNECT command.  The hostname was invalid
8742           memory and server crashed.  Affected file silcd/command.c.
8743
8744         * Fixed fatal bug in CLOSE command.  The server_entry became
8745           invalid but was referenced later in the command.  Affected file
8746           silcd/command.c.
8747
8748 Thu Mar 15 12:46:58 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8749
8750         * Fixed fatal bug in failure packet handling.  Server ignored
8751           the failure and thus crashed when it came.
8752
8753         * Updated TODO.
8754
8755 Wed Mar 14 20:37:35 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8756
8757         * Added new SILC_CF_LAG_STRICT command flag that strictly forces
8758           that the command may be executed only once in (about) 2 seconds.
8759           The old SILC_CF_LAG flag is same but allows command bursts up
8760           to five before limiting.
8761
8762           Added the support for CF_LAG and CF_LAG_STRICT flags to the
8763           server code.  Various commands now includes the CF_LAG_STRICT
8764           flag to disallow any kind of miss-use of the command.
8765
8766         * Fixed the silc_buffer_unformat to not to allocate any data
8767           if the length of the data is zero.  It used to allocate the
8768           length + 1.  Affected file lib/silcutil/silcbuffmt.c.
8769
8770 Wed Mar 14 16:10:30 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8771
8772         * Changed the format of AdminConnection configuration section
8773           in the server.  Added username of the admin to the format.
8774           Affected files silcd/serverconfig.[ch].
8775
8776           Added silc_server_config_find_admin into silcd/serverconfig.[ch]
8777           to return admin configuration data by host, username and/or
8778           nickname.
8779
8780 Wed Mar 14 13:18:16 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8781
8782         * Implemented WHOWAS command to the server.  Added the functions:
8783
8784           silc_server_command_whowas_parse,
8785           silc_server_command_whowas_send_reply,
8786           silc_server_command_whowas_from_client and
8787           silc_server_command_whowas_from_server
8788
8789         * Added <Client ID> argument to the WHOWAS command reply.  Updated
8790           the protocol specs accordingly.
8791
8792         * Implemented WHOWAS command and command_reply to the client
8793           library.
8794
8795           Implemented the WHOWAS printing on the user interface.
8796
8797 Tue Mar 13 22:17:34 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8798
8799         * Added new argument to the WHOWAS command reply, the real name.
8800           It is an optional argument.  Updated the protocol specs.
8801
8802         * Added SilcIDCacheDestructor callback that is registered when
8803           the SilcIDCache is allocated.  The callback is called when
8804           an cache entry in the ID Cache expires, or is purged from the
8805           cache.  Added into lib/silccore/idcache.[ch].
8806
8807           Added silc_idlist_client_destructor to the silcd/idlist.[ch]
8808           to destruct the client entries when the cache entry expires.
8809           Other ID Cache's in server and in the client library ignores
8810           the destructor.
8811
8812         * If the ID Cache entry's `expire' field is zero then the entry
8813           never expires.  Added boolean `expire' argument to the
8814           silc_idcache_add function in the lib/silccore/idcache.[ch].
8815           If it is TRUE the default expiry value is used.
8816
8817         * Added silc_server_free_client_data_timeout that is registered
8818           when client disconnects.  By default for 5 minutes we preserve
8819           the client entry for history - for WHOWAS command.
8820
8821 Tue Mar 13 13:26:18 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8822
8823         * Added support to the server to enforce that commands are not
8824           executed more than once in 2 seconds.  If server receives
8825           commands from client more frequently, timeout is registered
8826           to process the commands.  Affected file silcd/command.c.
8827           Added new function silc_server_command_process_timeout.
8828
8829         * Changed NICK_NOTIFY handling in client library to check that
8830           if the client's nickname was changed, so there is no need to
8831           resolve anything from the server.
8832
8833         * Removed error printing from the WHOIS and IDENTIFY commands.
8834           If error occurs then it is ignored silently in the client library.
8835           The application, however, may map the received error to
8836           human readable error string.  The application currently maps
8837           the NO_SUCH_NICKNAME error to string.
8838
8839         * Made the command status message public to the application.  Moved
8840           them from lib/silcclient/command_reply.c to
8841           lib/silcclient/command_reply.h.  The application can map the
8842           received command status to the string with the
8843           silc_client_command_status_message function.
8844
8845         * Added check to the server to check that client's ID is same
8846           as the Source ID in the packet the client sent.  They must
8847           match.
8848
8849 Tue Mar 13 12:49:21 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8850
8851         * Added dist-bzip hook to the Makefile.am to make bzip2
8852           compressed distributions.
8853
8854 Mon Mar 12 18:43:38 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8855
8856         * Server now enforces the maximum length for the nickname and
8857           the channel as protocol specification dictates.  128 bytes for
8858           nickname and 256 bytes for channel name.
8859
8860         * Moved the WHOIS printing to the application.  The client libary
8861           does not print out the WHOIS information anymore, the application
8862           must do it.  Renamed silc_client_command_reply_whois_print to
8863           the silc_client_command_reply_whois_save.
8864
8865           The client's idle time is also sent to the application now, and
8866           the idle is shown on screen.
8867
8868         * Added silc_client_command_reply_identify_save to save the
8869           received IDENTIFY entries.
8870
8871         * Do not check for channel private keys in message sending and
8872           reception if the channel does not have the PRIVKEY mode set.
8873           Affected file lib/silclient/client_channel.c.
8874
8875 Sun Mar 11 20:25:06 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8876
8877         * Fixed a minor bug if WHOIS and IDENTIFY command parsing that
8878           just surfaced after chaning the JOIN procedure.
8879
8880 Sun Mar 11 14:59:05 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8881
8882         * Added silc_client_get_clients_by_list to get client entries
8883           from Client ID list, that is returned for example by JOIN
8884           and USERS command replies.  The application should use this
8885           function for example when JOIN command reply is received to
8886           resolve the clients already on the channel (library does not
8887           do that anymore as USERS command reply is not used in the JOIN
8888           procedure anymore).  Affected files lib/silcclient/silcapi.h and
8889           lib/silcclient/idlist.c.
8890
8891         * JOIN command reply and USERS command reply returns now SilcBuffer
8892           pointers instead of unsigned char pointers when returning
8893           the client list and mode list.
8894
8895         * Added <Client ID> argument to the JOIN command reply, mainly
8896           for the server to identify for which client the command was
8897           originally sent.  Updated protocol specs accordingly.
8898
8899         * Added SilcDlist private_key pointer to the SilcChannelEntry
8900           in the client to support the channel private keys.  Affected
8901           file is lib/silcclient/idlist.h.
8902
8903         * Added SilcChannelPrivateKey argument to the function
8904           silc_client_send_channel_message so that application can choose
8905           to use specific private ke if it wants to.  If it is not provided,
8906           the normal channel key is used, unless private keys are set.
8907           In this case the first (key that was added first) is used
8908           as the encryption key.
8909
8910         * Implemented the support for channel private key handling.
8911           Implemented the following functions:
8912
8913           silc_client_add_channel_private_key,
8914           silc_client_del_channel_private_keys,
8915           silc_client_del_channel_private_key,
8916           silc_client_list_channel_private_keys and
8917           silc_client_free_channel_private_keys
8918
8919           Affected file lib/silcclient/client_channel.c.
8920
8921         * Added the support for the private keys in the channel message
8922           sending and encryption and in the message reception and
8923           decryption.  Affected funtions are
8924           silc_client_send_channel_message and silc_client_channel_message.
8925
8926 Sat Mar 10 21:36:22 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8927
8928         * Added SKE's key verify callback to the client library's
8929           KE protocol context. Affected files lib/silcclient/protocol.[ch].
8930
8931         * Removed the statement that server (or router) must send USERS
8932           command reply when joining to the channel so that the client
8933           knows who are on the channel.  Instead, the client list and
8934           client's mode list is now sent in the JOIN command reply to the
8935           client who joined channel.  This is better solution.
8936
8937         * Added function silc_server_get_users_on_channel and function
8938           silc_server_save_users_on_channel to the silcd/server.[ch].
8939
8940         * Removed function silc_server_command_send_users from the
8941           silcd/command.c.
8942
8943         * Do not show topic on the client library anymore.  The topic is
8944           sent in the command reply notify to the application and the
8945           application must show the topic now.
8946
8947 Sat Mar 10 00:07:37 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8948
8949         * Added client searching by nickname hash into the IDENTIFY and
8950           WHOIS commands in the server as they were clearly missing from
8951           them.  Affected file is silcd/command.c.
8952
8953         * Fixed a bug in private message receiving in the client library.
8954           The remote ID was freed and it wasn't supposed, now it is
8955           duplicated.
8956
8957 Fri Mar  9 12:40:42 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8958
8959         * Minor fix to the channel payload; allocate the data area, as it
8960           needs to be of specific length.
8961
8962         * If the key agreement port is zero then the operating
8963           system will define the bound port.  Affected files are
8964           lib/silcclient/silcapi.h and lib/silcclient/client_keyagr.c.
8965
8966         * Added new function silc_channel_payload_decrypt into the file
8967           lib/silccore/silcchannel.[ch].
8968
8969         * Moved the channel message etc, check from silc_packet_decrypt
8970           to applications.  The library calls now a generic
8971           SilcPacketCheckDecrypt callback which is to return TRUE or FALSE
8972           when the packet is either normal or special.  This was done to
8973           allow more wide range of checking that was not allowed when
8974           the code was in library.  Now applications can do virtually any
8975           checks to the packet and return to the library the decision how
8976           the packet should be processed.  Affected files are
8977           lib/silccore/silcpacket.[ch].
8978
8979           Added silc_server_packet_decrypt_check to the server and
8980           silc_client_packet_decrypt_check to the client library.
8981
8982         * Added silc_server_packet_send_srcdest into silcd/packet_send.[ch]
8983           to send with specified source and destination information.
8984
8985         * Channel message delivery between routers was broken after the
8986           channel key distribution was fixed earlier.  The channel key
8987           was used be to distributed to other routers as well which is not
8988           allowed by the protocol.  Now this is fixed and channel keys
8989           really are cell specific and the channel message delivery between
8990           routers comply with the protocol specification.
8991
8992         * Fixed various commands in server to check also the global list
8993           for the channel entry and not just the local list.  The affected
8994           file silcd/command.c.
8995
8996 Thu Mar  8 21:39:03 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8997
8998         * Added assert()s to buffer formatting and unformatting routines
8999           to assert (if --enable-debug) when error occurs.  Affected
9000           file: lib/silcutil/silcbuffmt.c.
9001
9002         * Changed to auto-reconnect to check whether the remote host is
9003           router and register the re-connect timeout if it is.  It used
9004           to check that whether we are normal server, but router must do
9005           auto-reconnect with another router as well.  Affected file
9006           silcd/server.c.
9007
9008         * Removed the [<key len>] option from CMODE command as the cipher
9009           name decides the key length, nowadays.  See the defined ciphers
9010           from the protocol specification.
9011
9012         * Added [<hmac>] option to the CMODE command to define the HMAC
9013           for the channel.  Added SILC_CMODE_HMAC channel mode.
9014
9015         * Added [<hmac>] option for the JOIN command so that user can
9016           select which HMAC is used to compute the MACs of the channel
9017           messages.
9018
9019         * Added Hmac field to the Channel Message Payload.  The integrity
9020           of plaintext channel messages are now protected by computing
9021           MAC of the message and attaching the MAC to the payload.  The
9022           MAC is encrypted.  Now, it is clear that this causes some
9023           overhead to the size of the packet but rationale for this is that
9024           now the receiver can verify whether the channel message decrypted
9025           correctly and also when private keys are set for the channel the
9026           receiver can decrypt the packet with several keys and check from
9027           the MAC which key decrypted the message correctly.
9028
9029         * Added silc_cipher_encrypt and silc_cipher_decrypt into the
9030           lib/silccrypt/silccipher.[ch].
9031
9032         * Added silc_hash_len to return the digest length into the
9033           lib/silcrypt/silchash.[ch].
9034
9035         * Rewrote parts of Silc Channel Payload interface in the
9036           lib/silccore/silcchannel.[ch].  The encode function now also
9037           encrypts the packet and parse function decrypts it.
9038
9039 Wed Mar  7 20:58:50 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9040
9041         * Fixed a minor formatting bug in the SKE's key material processing.
9042           It actually might have processed the keys wrong way resulting
9043           into wrong keys.
9044
9045         * Redefined the mandatory HMAC algorithms and added new algorithms.
9046           Added hmac-sha1-96 and hmac-md5-96 which are normal hmac-sha1
9047           and hmac-md5 truncated to 96 bits.  The mandatory is now
9048           hmac-sha1-96.  Rest are optional (including the one that used
9049           to be mandatory).  Rationale for this is that the truncated HMAC
9050           length is sufficient from security point of view and can actually
9051           make the attack against the HMAC harder.  Also, the truncated
9052           HMAC causes less overhead to the packets.  See the RFC2104 for
9053           more information.
9054
9055         * Added new [hmac] configuration section.  The SKE used to use
9056           the hash names (md5 and sha1) in the SKE proposal as HMCAS which
9057           is of course wrong.  The official names that must be proposed in
9058           the SKE are the ones defined in the protocol specification
9059           (hmac-sha1-96 for example).  The user can configure any hmac
9060           using any hash function configured in the [hash] section.  At
9061           least, the mandatory must be configured.
9062
9063           Rewrote the HMAC interface in lib/silccrypt/silchmac.[ch].
9064
9065         * Added HMAC list to the SKE proposal list.  It has now both
9066           hash algorithm list and HMAC list.  This makes the protocol
9067           incompatible with previous versions.  The SKE now seems to work
9068           the way it is supposed to work, for the first time actually.
9069
9070         * Defined plain Hash algorithms to the protocol specification.
9071           Added sha1 and md5.
9072
9073 Tue Mar  6 15:36:11 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9074
9075         * Implemented support for key agreement packets into the server.
9076           Added functions silc_server_key_agreement and
9077           silc_server_send_key_agreement.  Other than these functions,
9078           server has nothing to do with this packet.
9079
9080         * Added support for private message key packets into the server.
9081           Added functions silc_server_private_message_key and
9082           silc_server_send_private_message_key.
9083
9084         * Updated TODO.
9085
9086         * Changed the silc_[client|server]_protocol_ke_set_keys to be
9087           called in the protocol's final callback instead in the END
9088           protocol state.  This makes a little more sense and in the same
9089           time in client we can use the same protocol routines for normal
9090           key exchange and to key agreement packet handling as well.
9091
9092         * Added to both client's and server's KE protocol context the
9093           SilcSKEKeyMaterial pointer to save the key material.  We will
9094           bring the key material to the protocol's final callback by doing
9095           this.  The final callback must free the key material.
9096
9097         * Added SKE's packet_send callback into client's KE protocol
9098           context so that the caller can choose what packet sending function
9099           is used.  This way we can use different packet sending when
9100           doing normal SKE when doing key agreement packet handling (in
9101           the key agreement packet handling we do not want to encrypt
9102           the packets).
9103
9104         * Implemented the responder side of the key agreement routines
9105           in the client.  The client can now bind to specified port and
9106           accept incoming key negotiation.  The key material is passed
9107           to the application after the protocol is over.
9108
9109         * Implemented the processing of incoming Key Agreement packet
9110           in the client.  Added function silc_client_key_agreement to
9111           process the packet.
9112
9113         * Implemented the intiator side of the key agreement routines
9114           in the client.  The client can now initiate key agreement with
9115           another remote client.  The key material is passed to the
9116           application after the protocol is over.
9117
9118         * Created client_keyagr.c to include all the key agreement
9119           routines.
9120
9121         * Added macro SILC_TASK_CALLBACK_GLOBAL which is equal to the
9122           SILC_TASK_CALLBACK except that it is not static.
9123
9124         * Created client_notify.c and moved the Notify packet handling
9125           from the client.[ch] into that file.
9126
9127         * Created client_prvmsg.c and moved all private message and
9128           private message key routines from the client.[ch] into that file.
9129
9130         * Create client_channel.c and moved all channel message and
9131           channel private key routines from the client.[ch] into that file.
9132
9133         * Changed silc_client_get_client_by_id_resolve to resolve with
9134           WHOIS command instead of IDENTIFY command, in the file
9135           lib/silclient/idlist.c.
9136
9137 Mon Mar  5 18:39:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9138
9139         * Implemented the SKE's responder side to the Client library.
9140
9141         * When FAILURE is received to the protocol do not trust it
9142           blindly.  Register a timeout to wait whether the remote closes
9143           the connection as it should do it, only after that process the
9144           actual failure.  This was changed to both client and server.
9145
9146         * Added client_internal.h to include some of the structures
9147           there instead of client.h in lib/silcclient/.
9148
9149         * Added function silc_task_unregister_by_callback to unregister
9150           timeouts by the callback function.
9151
9152 Sat Mar  3 19:15:43 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9153
9154         * Some "Incomplete WHOIS info" errors has been appearing on the
9155           log files.  Took away the entry->userinfo check from WHOIS
9156           reply sending.  The entry->userinfo is now " " if client did not
9157           provide one.  I thought this was fixed earlier but something
9158           is wrong still.  Let's see if the error still appears.
9159
9160 Wed Feb 28 20:56:29 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9161
9162         * Fixed a minor bug in the login when the channel key is
9163           re-generated in the server.  It used to generate the key in
9164           wrong order and thus caused problems in the channel traffic.
9165
9166         * Fixed a minor bug in channel key distsribution after
9167           KICK command.  The key was not sent to the router even though
9168           it should've been.
9169
9170 Tue Feb 27 20:24:25 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9171
9172         * Added silc_ske_process_key_material_data as generic routine
9173           to process any key material as the SILC protocol dictates.  The
9174           function is used by the actual SKE library but can be used by
9175           applications as well.  This relates to the private message keys
9176           and the channel private keys since they must be processed the
9177           same way the normal SILC session keys.  The protocol dictates
9178           this.  Affected files: lib/silcske/silcske.[ch].
9179
9180           Added also silc_ske_free_key_material to free the
9181           SilcSKEKeyMaterial structure.
9182
9183         * Defined silc_cipher_set_key function to set the key for
9184           cipher without using the object's method function.  The affected
9185           files: lib/silccrypt/silccipher.[ch].
9186
9187         * Implemented silc silc_client_add_private_message_key,
9188           silc_client_add_private_message_key_ske,
9189           silc_client_del_private_message_key,
9190           silc_client_list_private_message_keys and
9191           silc_client_free_private_message_keys functions in the
9192           client library.
9193
9194           Added functions silc_client_send_private_message_key to send
9195           the Private Message Key payload and silc_client_private_message_key
9196           to handle incoming Private Message Key payload.
9197
9198         * Added Cipher field to the Private Message Key payload to set
9199           the cipher to be used.  If ignored, the default cipher defined
9200           in the SILC protocol (aes-256-cbc) is used.
9201
9202 Tue Feb 27 13:30:52 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9203
9204         * Removed lib/silcclient/ops.h file.
9205
9206           Redefined parts of the SILC Client Library API. Created new
9207           file silcapi.h that deprecates the ops.h file and defines the
9208           published Client Library API.  Defined also private message key
9209           API and channel private key API into the file.
9210
9211           This is the file that the application must include from the
9212           SILC Client Library.  Other files need not be included by
9213           the application anymore.
9214
9215         * Added new key_agreement client operation callback and also
9216           defined the Key Agreement library API for the application.
9217
9218 Tue Feb 27 11:28:31 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9219
9220         * Added new packet type: SILC_PACKET_KEY_AGREEMENT.  This packet
9221           is used by clients to request key negotiation  between another
9222           client in the SILC network.  If the negotiation is started it
9223           is performed using the SKE protocol.  The result of the
9224           negotiation, the secret key material, can be used for example
9225           as private message key.
9226
9227           Implemented the Key Agreement payload into the files
9228           lib/silccore/silauth.[ch].
9229
9230 Mon Feb 26 12:13:58 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9231
9232         * Redefined ciphers for the SILC protocol.  Added some new ciphers
9233           and defined the key lengths for the algorithms.  Changed the
9234           code accordingly.  The default key length is now 256 bits.
9235
9236         * Fixed SKE key distribution function silc_ske_process_key_material
9237           when the key length is more than 128 bits.  The default key
9238           length in SILC is now 256 bits.
9239
9240         * Added new command status type: SILC_STATUS_ERR_UNKOWN_ALGORITHM
9241           to indicate unsupported algorithm.
9242
9243         * Renamed rijndael.c to aes.c and all functions as well.
9244
9245         * Fixed a long standing channel key setting bug in client library.
9246           Weird that it has never surfaced before.
9247
9248         * Fixed bug in channel deletion.  If the entire channel is removed
9249           then it must also delete the references of the channel entry
9250           from the client's channel list as the client's channel entry and
9251           the channel's client entry share same memory.
9252
9253 Sun Feb 25 20:47:29 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9254
9255         * Implemented CONNECT and SHUTDOWN commands in the client.
9256
9257         * Implemented CLOSE command to the client.
9258
9259         * Added the function silc_idlist_find_server_by_name into the
9260           files silcd/idlist.[ch].
9261
9262           Added the function silc_idlist_find_server_by_conn into the
9263           files silcd/idlist.[ch].
9264
9265 Sat Feb 24 23:45:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9266
9267         * DIE command was renamed to SHUTDOWN.  Updated the both code
9268           and protocol specs.
9269
9270         * Defined SILC_UMODE_NONE, SILC_UMODE_SERVER_OPERATOR and
9271           SILC_UMODE_ROUTER_OPERATOR modes into lib/silccore/silcmode.h.
9272
9273         * Implemented CONNECT, CLOSE and SHUTDOWN commands to the server
9274           side.
9275
9276         * Added function silc_server_create_connection function to create
9277           connection to remote router.  My server implementation actually
9278           does not allow router to connect to normal server (it expects
9279           that normal server always initiates the connection to the router)
9280           so the CONNECT command is only good for connecting to another
9281           router.
9282
9283 Sat Feb 24 16:03:45 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9284
9285         * Added SILC_NOTIFY_TYPE_KICKED to indicate that the client
9286           or some other client was kicked from the channel.
9287
9288           Implemented the handling of the notify type to both client
9289           and server.
9290
9291           Implemented silc_server_send_notify_kicked to send the KICKED
9292           notify.  It is used to send it to the server's primary router.
9293
9294         * Implemented the KICK command into server and client.
9295
9296         * Added `query' argument to the silc_idlist_get_client function
9297           to indicate whether to query the client from server or not if
9298           it was not found.
9299
9300         * Added new command status type SILC_STATUS_ERR_NO_CHANNEL_FOPRIV
9301           to indicate that the client is not channel founder.
9302
9303         * Updated TODO.
9304
9305 Sat Feb 24 00:00:55 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9306
9307         * Removed the rng context from SilcPacketContext structure and
9308           changed that the packet routine uses the Global RNG API.
9309
9310 Fri Feb 23 11:22:57 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9311
9312         * Added support for quit message that client can "leave" on the
9313           channel when it quits the SILC.  It is ditributed inside the
9314           SILC_NOTIFY_TYPE_SIGNOFF notify type.
9315
9316           Added silc_server_free_client_data that will take the
9317           signoff message as argument.
9318
9319         * Changed SKE routines to use the silc_pkcs_sign/verify routines.
9320
9321 Thu Feb 22 23:05:36 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9322
9323         * Updated parts of the protocol specification to keep it up
9324           to date.
9325
9326 Thu Feb 22 15:08:20 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9327
9328         * Added List flag (SILC_PACKET_FLAG_LIST) to indicate list of
9329           payloads in one packet.
9330
9331         * Deprecated following packet types: NEW_ID_LIST, NEW_CHANNEL_LIST,
9332           NEW_CHANNEL_USER_LIST, SET_MODE and SET_MODE_LIST.  List packets
9333           use now the new List flag.
9334
9335         * Also deprecated the following packet types: REPLACE_ID,
9336           NEW_CHANNEL_USER and REMOVE_CHANNEL_USER packet types.
9337
9338         * Added list support for Notify packet in server.
9339
9340         * Added silc_server_send_notify_channel_change to send the
9341           CHANNEL_CHANGE notify type to replace channel ID's.  Deprecates
9342           the silc_server_send_replace_id.
9343
9344         * Added silc_server_send_notify_nick_change to send the
9345           NICK_CHANGE notify type.  Deprecates the function
9346           silc_server_send_replace_id.
9347
9348         * Added silc_server_send_notify_join to send the JOIN notify type.
9349           Deprecates the function silc_server_send_new_channel_user.
9350
9351         * Added silc_server_send_notify_leave to send LEAVE notify type.
9352           Deprecates the function silc_server_send_remove_channel_user.
9353
9354         * Added silc_server_send_notify_cmode and
9355           silc_server_send_notify_cumode to send CMODE and CUMODE notify
9356           types.  Deprecates the silc_server_send_set_mode function.
9357
9358         * Added SERVER_SIGNOFF notify type to indicate that server has
9359           quit.  This means that all clients on the channel from that
9360           server will drop.  This can be also used when netsplit happens.
9361
9362           Deprecated REMOVE_ID packet type since it is not needed anymore
9363           even from server.
9364
9365           Added silc_server_send_notify_server_signoff to send the
9366           SERVER_SIGNOFF notify type.  Deprecates the function
9367           silc_server_send_remove_id.
9368
9369           Added also silc_server_send_notify_signoff to send the
9370           SIGNOFF notify type.
9371
9372         * Employed the PKCS #1. It is the mandatory way to do RSA in the
9373           SILC protocol from this day on.  Changed the protocol
9374           specification as well.
9375
9376         * Added silc_server_send_notify_topic_set to send TOPIC_SET
9377           notify type.  It is used between routers to notify about
9378           topic changes on a channel.
9379
9380         * Added silc_id_dup into lib/silccore/id.[ch] to duplicate
9381           ID data.
9382
9383         * Partly updated the protocol specification to comply with the
9384           changes now made.  It is still though a bit outdated.
9385
9386         * The JOIN notify type now takes one extra argument <Channel ID>.
9387           The packet used to be destined to the channel but now the
9388           JOIN type may be sent as list thus it is impossible to
9389           destine it to any specific channel.  By adding this argument
9390           it is again possible.
9391
9392 Wed Feb 21 22:39:30 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9393
9394         * Added CREDITS file.  The CHANGES and CREDITS file will appear
9395           in the distribution as well.
9396
9397 Wed Feb 21 14:17:04 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9398
9399         * Implemented CMODE_CHANGE, CUMODE_CHANGE and TOPIC_SET notify
9400           types in the server's silcd/packet_receive.c.
9401
9402         * Implemented CMODE and CUMODE to work in router environment.
9403
9404         * Fixed minor encoding and decoding buglet from the
9405           lib/silccore/silcmode.c.
9406
9407         * Fixed buffer overflow from lib/silcclient/command.c in USERS
9408           command parsing.
9409
9410 Wed Feb 21 12:44:00 EET 2001  Mika Boström <bostik@lut.fi>
9411
9412         * Changed all SilcConfigServer* and silc_config_server* to
9413           SilcServerConfig* and silc_server_config*, respectively.
9414           Patch by Bostik.
9415
9416 Wed Feb 21 00:10:00 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9417
9418         * Associated the ID (client or server ID) to the Authentication
9419           Payload to avoid any possibility of forging.  Updated the
9420           protocol specification and the code accordingly.
9421
9422 Tue Feb 20 14:14:14 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9423
9424         * The RSA key length is now save to the RsaKey context in the
9425           key generation process in lib/silccrypt/rsa.c.  The key length
9426           is now used to figure out the maximum size of the block allowed
9427           to be encrypted/signed.
9428
9429         * Added silc_mp_mp2bin_noalloc into lib/silcmath/mpbin.[ch].  It
9430           is equivalent to the silc_mp_mp2bin but does not allocate any
9431           memory.
9432
9433         * Changed silc_mp_mp2bin API to take length argument.  If it is
9434           non-zero then the buffer is allocated that large.  If zero, then
9435           the size is approximated using silc_mp_sizeinbase, which however
9436           is not relieable.
9437
9438         * Created Global RNG API which is global RNG that application can
9439           initialize.  After initializing, any routine anywhere in the
9440           code (including library) can use RNG without allocating a new
9441           RNG object.  This was done to allow this sort of use of the
9442           RNG in code that has no chance to allocate RNG object.  All
9443           applications currently allocate this and many routines in the
9444           library use this.  Affected file lib/silccrypt/silcrng.[ch].
9445
9446         * Removed the RNG kludge from lib/silcmath/primegen.c and changed
9447           it to use the Global RNG API.
9448
9449         * Defined Authentication Payload into protocol specification that
9450           is used during SILC session to authenticate entities.  It is
9451           used for example by client to authenticate itself to the server
9452           to obtain server operator privileges.
9453
9454           Implemented this payload into the lib/silccore/silcauth.[ch].
9455           Implemented also routines for public key based authentication
9456           as the new protocol specification dictates.
9457
9458           Moved definitions of different authentication methods from
9459           lib/silccore/silcprotocol.h into lib/silccore/silcauth.h.
9460
9461         * Added silc_pkcs_encrypt, silc_pkcs_decrypt, silc_pkcs_sign,
9462           silc_pkcs_verify and silc_pkcs_sign_with_hash and
9463           silc_pkcs_verify_with_hash functions into the file
9464           lib/silccrypt/silcpkcs.[ch].
9465
9466 Mon Feb 19 19:59:28 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9467
9468         * The client entry's userinfo pointer must be always valid.
9469           Otherwise the [<unknown>] bug will surface beacuse the WHOIS
9470           will fail since it requires the userinfo.  Now, the userinfo
9471           is allocated as "" if actual userinfo does not exist.  Actually,
9472           it must exist and it is totally Ok to drop client connections
9473           that does not announce the userinfo.  However, we will make
9474           this workaround for now.
9475
9476         * Added silc_net_get_remote_port into lib/silcutil/silcnet.[ch]
9477           to return the remote port by socket.
9478
9479 Mon Feb 19 14:26:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9480
9481         * Changed SILC_SERVER_COMMAND_EXEC_PENDING macro to the name
9482           SILC_SERVER_PENDING_EXEC and added an new macro
9483           SILC_SERVER_PENDING_DESTRUCTOR which is called to free the
9484           data or when error occurs while processing the pending command.
9485
9486           Added new argument `destructor' into silc_server_command_pending
9487           and to the SilcServerCommandPending object.  This destructor is
9488           now called after calling the pending callback or if error occurs
9489           immediately.  If error occurs the actual pending callback won't
9490           be called at all - only the destructor.  The destructor may be
9491           NULL if destructor is not needed.
9492
9493           All this applies for client library code as well.  Similar
9494           changes were made there as well for the pending commands.
9495
9496           In the client, the application must now allocate the
9497           SilcClientCommandContext with the silc_client_command_alloc
9498           function.
9499
9500         * Added reference counter to the SilcServerCommandContext.  Added
9501           function silc_server_command_alloc and silc_server_command_dup
9502           functions.
9503
9504           Same type of functions added to the client library for the same
9505           purpose as well.
9506
9507         * Removed the cmd_ident from IDListData away since it is now
9508           global for all connections.  It is the command identifier used
9509           in command sending and with pending commands.  The affected file
9510           is silcd/idlist.h.
9511
9512         * Added reference counter to the SilcSocketConnection objecet to
9513           indicate the usage count of the object.  The object won't be
9514           freed untill the reference counter hits zero.  Currently only
9515           server uses this, and client ignores it.  The client must be
9516           set to use this too later.  The affected files are
9517           lib/silccore/silcsockconn.[ch].  Added also the function
9518           silc_socket_dup to increase the reference counter.
9519
9520           This was mainly added because it is possible that the socket
9521           is removed underneath of pending command or other async
9522           operation.  Now it won't be free'd and proper DISCONNECTING
9523           flags, etc. can be set to avoid sending data to connection that
9524           is not valid anymore.
9525
9526         * Added SILC_SET_DISCONNECTING to server.c when EOF is read from
9527           the connection.  After that it sets SILC_SET_DISCONNECTED.
9528           It is, however, possible that the socket data is not still freed.
9529           The silc_server_packet_process now checks that data is not
9530           read or written to connection that is DISCONNECTED.  The socket
9531           get's freed when the reference counter hits zero.
9532
9533 Mon Feb 19 00:50:57 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9534
9535         * Changed the client operation API: channel_message operation's
9536           `sender' is now the client entry of the sender, not the nickname
9537           and the `channel' is the channel entry, not the channel name.
9538
9539           In the private_message operation the `sender' is now also the
9540           client entry of the sender not the nickname.
9541
9542           Affected file is lib/silcclient/ops.h and all applications
9543           using the client operations.
9544
9545 Sat Feb 17 22:11:50 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9546
9547         * Moved the calling of ops->connect() from connect_to_server_final
9548           into receive_new_id functin since that is the point when the
9549           client is actually allowed to send traffic to network.  The
9550           affected file is lib/silcclient/client.c.
9551
9552 Sat Feb 17 13:15:35 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9553
9554         * When receiving NEW_CHANNEL_LIST, NEW_CHANNEL_USER_LIST,
9555           NEW_ID_LIST and SET_MODE_LIST packets, broadcast the list packet
9556           (if needs broadcasting) instead of broadcasting the packets one
9557           by one which would make a burst in the network traffic.
9558
9559         * Added `broadcast' argument to the functions in silcd/server.[ch]
9560           silc_server_create_new_channel[_with_id] to indicate whether
9561           to send New Channel packet to primary router.
9562
9563 Sat Feb 17 01:06:44 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9564
9565         * Added new function into the silcd/server.[ch] files:
9566           silc_server_create_new_channel_with_id to create new channel with
9567           already existing Channel ID.
9568
9569         * Added new packet type SILC_PACKET_SET_MODE_LIST into the file
9570           lib/silccore/silcpacket.h.  This packet is used t send list of
9571           Set Mode payloads inside one packet.  Server uses this to set
9572           the modes for the channels and clients on those channels, that it
9573           announced to the router when it connected to it.  The protocol
9574           specification has been updated accordingly.
9575
9576         * The silc_server_new_channel did not handle the packet coming
9577           from normal server as it normally does not send that.  However,
9578           when it announces its channels it does send it.  Implemented
9579           the support for that.
9580
9581         * Added SILC_ID_CHANNEL_COMPARE macro to compare to Channel ID's
9582           into the file lib/silccore/id.h.
9583
9584 Fri Feb 16 23:57:29 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9585
9586         * Fixed memory leaks in the functions silc_idlist_del_client,
9587           silc_idlist_del_channel and silc_idlist_del_server in the file
9588           silcd/idlist.c.  All of those leaked like a sieve.
9589
9590         * Fixed some small memory leaks in the client's function
9591           silc_client_notify_by_server.
9592
9593         * Added functions into silcd/server.c: silc_server_announce_clients,
9594           silc_server_announce_channels and silc_server_announce_server.
9595           These functions are used by normal and router server to announce
9596           to its primary router about clients, channels and servers (when
9597           router) that we own.  This is done after we've connected to the
9598           router.
9599
9600           These functions effectively implements the following packet types:
9601           SILC_PACKET_NEW_CHANNEL_LIST, SILC_PACKET_NEW_CHANNEL_USER_LIST
9602           and SILC_PACKET_NEW_ID_LIST.
9603
9604         * Added new functions into the silcd/packet_receive.[ch]:
9605           silc_server_new_id_list, silc_server_new_channel_list and
9606           silc_server_new_channel_user_list to handle the incoming
9607           NEW_ID_LIST, NEW_CHANNEL_LIST and NEW_CHANNEL_USER_LIST packets.
9608
9609         * Added support of changing Channel ID in the function
9610           silc_server_replace_id.  If the server that announces a channel
9611           to the router already exists in the router (with same name but
9612           with different Channel ID), router is responsible to send
9613           Replace ID packet to the server and force the server to change
9614           the Channel ID to the one router has.
9615
9616         * Added new notify type SILC_NOTIFY_TYPE_CHANNEL_CHANGE to notify
9617           client that the Channel ID has been changed by the router.  The
9618           normal server sends this to the client.  Client must start using
9619           the new Channel ID as the channel's ID.
9620
9621           Implemented handling of this new type into lib/silcclient/client.c
9622           into the function silc_client_notify_by_server.
9623
9624         * Added new function silc_idlist_replace_channel_id into the files
9625           silcd/idlist.[ch] to replace the Channel ID.
9626
9627 Fri Feb 16 14:14:00 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9628
9629         * Call silc_server_command_identify_check always when processing
9630           the IDENTIFY command in silcd/command.c
9631
9632 Thu Feb 15 20:07:37 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9633
9634         * Added new packet type SILC_PACKET_HEARTBEAT that is used to
9635           send keepalive packets.  The packet can be sent by clients,
9636           servers and routers.
9637
9638           Added function silc_socket_set_heartbeat into the file
9639           lib/silccore/silcsockconn.[ch] to set the heartbeat timeout.
9640           If not set, the heartbeat is not performed.  The actual
9641           heartbeat is implemented in the low level socket connection
9642           library.  However, application is responsible of actually
9643           sending the packet.
9644
9645           Added silc_server_send_heartbeat to send the actual heartbeat
9646           packet into silcd/packet_send.[ch].  Server now performs
9647           keepalive with all connections.
9648
9649         * Added silc_task_get_first function into lib/silcutil/silctask.c
9650           to return the timeout task with shortest timeout.  There was a bug
9651           in task unregistration that caused problems.  TODO has been
9652           updated to include that task system must be rewritten.
9653
9654         * The client library will now resolve the client information when
9655           receiving JOIN notify from server for client that we know but
9656           have incomplete information.
9657
9658         * Rewrote parts of silc_server_remove_from_channels and
9659           silc_server_remove_from_one_channel as they did not remove the
9660           channel in some circumstances even though they should've.
9661
9662         * Encryption problem encountered in server:
9663
9664           The LEAVE command used to send the Channel Key packet to the
9665           router immediately after generating it.  However, the code
9666           had earlier sent Remove Channel user packet but not immediately,
9667           ie. it was put to queue.  The order of packets in the router
9668           was that Channel Key packet was first and Remove Channel User
9669           packet was second, even though they were encrypted in the
9670           reverse order.  For this reason, MAC check failed.  Now, this
9671           is fixed by not sending the Channel Key packet immediately but
9672           putting it to queue.  However, this is more fundamental problem:
9673           packets that are in queue should actually not be encrypted
9674           because packets that are sent immediately gets encrypted
9675           actually with wrong IV (and thus MAC check fails).  So, packets
9676           that are in queue should be encrypted when they are sent to
9677           the wire and not when they put to the queue.
9678
9679           However, the problem is that the current system has not been
9680           designed to work that way.  Instead, the packet is encrypted
9681           as soon as possible and left to the queue.  The queue is then
9682           just purged into wire.  There won't be any fixes for this
9683           any time soon.  So, the current semantic for packet sending
9684           is as follows:
9685
9686           o If you send packet to remote host and do not force the send
9687           (the packet will be in queue) then all subsequent packets to the
9688           same remote host must also be put to the queue.  Only after the
9689           queue has been purged is it safe again to force the packet
9690           send immediately.
9691
9692           o If you send all packets immediately then it safe to send
9693           any of subsequent packets through the queue, however, after
9694           the first packet is put to queue then any subsequent packets
9695           must also be put to the queue.
9696
9697           Follow these rules and everything works fine.
9698
9699 Thu Feb 15 14:24:32 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9700
9701         * Added new function silc_server_remove_clients_by_server to
9702           remove all client entries from ID list when the server connection
9703           is lost.  In this case it is also important to invalidate all
9704           client entires as they hold the invalid server entry.  This
9705           fixes fatal bug when server has lost connection and will reconnect
9706           again.
9707
9708 Wed Feb 14 16:03:25 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9709
9710         * Made some sanity checks to silc_server_daemonise like to check
9711           whether the requested user and group actually exists.
9712
9713         * Added sanity check to SKE's silc_ske_responder_finish to check
9714           that the public and private key actually is valid.
9715
9716         * Invalidate the client's nickname when receiving Replace ID
9717           packet and the Client ID is being replaced.  This means that the
9718           server will query the nickname if someone needs it (client)
9719           a bit later.
9720
9721         * Sort the ID Cache in client library when the ID Cache data
9722           has changed (needs sorting).
9723
9724         * Do not allow for SILC client to create several connections to
9725           several servers.  The client does not support windows right now
9726           and generating multiple connections causes weird behaviour.
9727
9728           Irssi-silc client does support windows and can handle several
9729           connections without problems, see: www.irssi.org and SILC plugin.
9730
9731         * Fixed some places where client was added to the IDList.  The
9732           rule of thumb is following (in order to get everything right):
9733           If the client is directly connected local client then the
9734           `connection' argument must be set and `router' argument must be
9735           NULL to silc_idlist_add_client function.  If the client is not
9736           directly connected client then the `router' argument must
9737           bet set and the `connection' argument must be NULL to the
9738           silc_idlist_add_client function.
9739
9740         * The funtion silc_server_packet_send_local_channel actually did
9741           not check whether the client was locally connected or not.  It
9742           does that now.  Fixed a bug related to LEAVE command.
9743
9744         * Fixed Remove Channel User payload parsing bug in server's
9745           silcd/packet_receive.c.  Fixed a bug related to LEAVE command.
9746
9747         * The server's silc_server_save_channel_key now checks also the
9748           global ID list for the channel as it might not be in the local
9749           list.  Fixed a bug related to LEAVE command.
9750
9751         * Is this the end of the [<unknown>] buglet that has been lurking
9752           around for a long time?  A little for loop fix in server's
9753           silc_server_command_whois_parse that is used by both IDENTIFY
9754           and WHOIS command.  At least, this was a clear bug and a cause
9755           of one type of [<unknown>] buglet.
9756
9757         * WHOIS and IDENTIFY commands call the function
9758           silc_server_command_[whois/identify]_check function even if
9759           we are not router server.
9760
9761 Tue Feb 13 19:55:59 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9762
9763         * Added --with-gmp configuration option.  If set the GMP
9764           is always compiled in the SILC source tree.  If not set then
9765           it is checked whether the system has the GMP3 installed.  If
9766           it has then the GMP won't be compiled (the system's headers
9767           and library is used), if it doesn't have it then the GMP is
9768           compiled in the SILC source tree.
9769
9770 Mon Feb 12 11:20:32 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9771
9772         * Changed RSA private exponent generation to what PKCS #1
9773           suggests.  We try to find the smallest possible d by doing
9774           modinv(e, lcm(phi)) instead of modinv(e, phi).  Note: this is
9775           not security fix but optimization.
9776
9777 Sun Feb 11 18:19:51 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9778
9779         * Added new config entry [Identity] to fork the server and run
9780           it as specific user and group.  A patch from Bostik.
9781
9782         * Imported Dotconf configuration library into lib/dotconf.
9783           This will be used to create the SILC configuration files later.
9784           It will appear in the distsribution after this commit.
9785
9786 Sat Feb 10 21:13:45 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9787
9788         * A big code auditing weekend happening.  Auditing code for
9789           obvious mistakes, bugs and errors.  Also, removing any code
9790           that is obsolete.
9791
9792           Removed files for being obsolete:
9793
9794           o lib/silcutil/silcbuffer.c (the buffer interface is entirely in
9795           inline in the file lib/silcutil/silcbuffer.h)
9796
9797           o lib/silcutil/silcbufutil.c (the header has inline versions)
9798
9799           Changed code to fix possible error conditions:
9800
9801           o The buffer formatting routines now check that the destination
9802           buffer really has enough space to add the data.  This applies for
9803           both buffer formatting and unformatting
9804           (lib/silcutil/silcbuffmt.[ch]).  Also, the entire buffer
9805           unformatting was changed to accomodate following rules:
9806           XXX_*STRING_ALLOC will allocate space for the data into the pointer
9807           sent to the function while XXX_*STRING will not allocate or copy
9808           the data into the buffer.  Instead it sets the pointer from the
9809           buffer into the pointer sent as argument (XXX_*STRING used to
9810           require that the pointer must be allocated already).  This change
9811           makes this whole thing a bit more consistent and more optimized
9812           (note that the data returned in the unformatting with XXX_*STRING
9813           must not be freed now).  The routines return now -1 on error.
9814
9815           o Tried to find all code that use buffer_format and buffer_unformat
9816           and added return value checking to prevent formatting and
9817           especially unformatting errors and possible subsequent fatal
9818           errors.
9819
9820           o Changed ske->x and ske->KEY to mallocated pointers in
9821           lib/silcske/silcske.h.  Fixed possible data and memory leak.
9822
9823           o Added return value checking to all *_parse* functions.  Fixed
9824           many memory leaks as well.
9825
9826           o Added length argument to silc_id_str2id in lib/silccore/id.[ch]
9827           so that buffer overflows would not happen.  All code now also
9828           checks the return value as it can fail.
9829
9830 Mon Feb  5 20:08:30 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9831
9832         * Added reconnection support to server if the normal server looses
9833           its connection to the router (for example if router is rebooted).
9834           The server performs normal reconnection strategy implemented
9835           to the server.  Affected file silcd/server.c.
9836
9837 Sun Feb  4 13:18:32 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9838
9839         * Added new packet type SILC_PACKET_SET_MODE that is used to
9840           distribute the information about changed modes (for clients,
9841           channels and clients channel modes) to all routers in the
9842           network.  Updated the protocol specification accordingly.
9843
9844           Added functions into silcd/packet_send.c and
9845           silcd/packet_receive.c: silc_server_send_set_mode,
9846           silc_server_set_mode.
9847
9848           Added new files silcmode.[ch] into lib/silccore that implements
9849           the encoding and decoding of Set Mode Payload.  Added new type
9850           SilcSetModePayload.  Moved the definitions of different modes
9851           from lib/silccore/silcchannel.h into lib/silccore/silcmode.h.
9852
9853 Sat Feb  3 15:44:54 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9854
9855         * Oops, a little mistake in server's connection authentication
9856           protocol.  The protocol is not ended with FAILURE but with
9857           SUCCESS if the authentication is Ok. :)  Affected file is
9858           silcd/protocol.c.
9859
9860         * Implemented NICK_CHANGE notify handling in server in the file
9861           silcd/packet_receive.c  The NICK_CHANGE notify is distributed to
9862           the local clients on the channel.  After the changing nickname
9863           in router environment snhould work and the [<unknown>] nickname
9864           should appear no more.
9865
9866           The silc_server_replace_id function that receives the Replace ID
9867           payload now sends the NICK_CHANGE notify type also in the file
9868           silcd/packet_receive.c
9869
9870         * Changed WHOIS and IDENTIFY command to support the maximum amount
9871           of arguments defined in protocol specs (3328 arguments).  This
9872           fixed a bug that caused problems when there were more than three
9873           users on a channel.
9874
9875 Fri Feb  2 11:42:56 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9876
9877         * Added extra parameter, command identifier, to the
9878           silc_client_send_command so that explicit command identifier
9879           can be defined.
9880
9881           Changed that ID list routines uses specific command identifier
9882           when sending WHOIS/IDENTIFY requests to the server so that they
9883           can be identified when the reply comes back.
9884
9885           Affected files lib/silcclient/command.[ch],
9886           lib/silcclient/client.c and lib/silcclient/idlist.[ch].
9887
9888         * Added `sender' argument to silc_server_packet_send_to_channel
9889           to indicaet the sender who originally sent the packet to us
9890           that we are now re-sending.  Ignored if NULL.  Affected file
9891           silcd/packet_send.[ch].
9892
9893         * Added some server statistics support in silcd/server_internal.h
9894           SilcServerStatistics structure and around the server code.  Also
9895           send some nice statistics information when client is connecting
9896           to the client.
9897
9898 Thu Feb  1 23:31:21 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9899
9900         * Fixed channel ID decoding in server's JOIN command reply in
9901           silcd/command_reply.c
9902
9903         * Fixed braodcasting of replace ID payload to not to send it if
9904           we are standalone server in silcd/packet_receive.c.
9905
9906         * Fixed all channel message sending routines to not to send
9907           packets to clients that has router set, since they are routed
9908           separately in the same function earlier.  Affects file
9909           silcd/packet_send.c and all channel packet sending functions.
9910
9911         * In USERS reply, res_argv[i] are not allocated, the table
9912           is allocated.  Thus changed that free the table, not its
9913           internals.
9914
9915         * In server's whois_check and identify_check if the client is
9916           locally connected do not send any WHOIS commands - they are not
9917           needed.
9918
9919 Thu Feb  1 21:32:27 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9920
9921         * Fixed some minor bugs in client when sending WHOIS command.  The
9922           arguments was in wrong order.
9923
9924         * Removed statis function add_to_channel from server in
9925           silcd/command.c that was previously used with the joining but
9926           is obsolete now.
9927
9928         * Tested USERS command in router environment successfully with two
9929           routers, two servers and two clients.
9930
9931 Thu Feb  1 00:54:26 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9932
9933         * Reorganized the USERS command and command reply in client library
9934           in lib/silcclient/command.c and lib/silcclient/command_reply.c.
9935           When the command is given by user we register a pending command
9936           callback that will reprocess the command after the reply has been
9937           received from the server.  When reprocessing the packet we then
9938           display the information.  Thus, the USERS information is displayed
9939           now in the command callback instead of in the command reply
9940           callback.  The processing of the command is same as previously
9941           when server has sent the command reply in the JOINing process.
9942
9943         * Added to USERS command in silcd/command_reply.c to join the client,
9944           we didn't use to know about, to the channel after we've created
9945           a client entry for it.  Also, for clienet we did know already still
9946           check whether it is on the channel or not and add it if not.
9947
9948         * Removed silc_server_command_join_notify as the function and its
9949           use was obsolete.
9950
9951 Tue Jan 30 22:39:15 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9952
9953         * Changed the client's pending command handling to the same as the
9954           server's pending command handling.  It is also now possible to
9955           execute command reply functions from other command reply
9956           function as the function callbacks for commands and command
9957           replies are one and same.  The pending commands are not static
9958           list anymore, it is mallocated SilcDList in lib/silcclient/client.h
9959           in client connection context.  Thus, pending commands are server
9960           connection specific as it is convenient.
9961
9962           Changed the function silc_client_command_pending and
9963           silc_client_command_pending_del and added new function
9964           silc_client_command_pending_check.  Removed the
9965           SILC_CLIENT_CMD_REPLY_EXEC, and SILC_CLIENT_PENDING_COMMAND_CHECK
9966           macros.
9967
9968         * Added cmd_ident, current command identifier, to the client
9969           connection context in lib/silcclient/client.h to keep track on
9970           command identifiers used in command sending.  Client's command reply
9971           function handling now supports the mandatory command identifiers.
9972
9973         * Added SILC_CLIENT_COMMAND_EXEC_PENDING macros to all command reply
9974           funtions in client to fully support pending command callbacks.
9975
9976         * NOTE: the name_list in USERS (old NAMES) command is NOT sent anymore
9977           as one of the arguments to the application in the command reply
9978           client operation.
9979
9980         * NOTE: The FORWARDED flag is depracated.  It used to be depracated
9981           before first releasing SILC but came back.  Now it is removed again
9982           and should come back nomore.  The FORWARDED flag was used only
9983           by the JOINing procedure by forwarding the command packet to router.
9984           Now, the JOINing procedure has been changed to more generic (due
9985           to various router environment issues) and FORWARDED is not needed
9986           anymore for anything.  The protocol specification is yet to be
9987           updated.
9988
9989           Now, removed silc_server_packet_forward from server and the flag
9990           SILC_PACKET_FORWARDED from lib/silccore/silcpacket.h.
9991
9992 Tue Jan 30 00:05:05 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9993
9994         * Renamed NAMES command to USERS command.  The NAMES was named that
9995           due to historical reasons.  Now it is renamed.  Also, rewrote
9996           parts of the USERS command.  The nickname list is not sent anymore
9997           by the server.  Only Client ID and mode lists are sent in the USERS
9998           command.  Changed this also to the protocol specification.
9999
10000           The client now resolves the names and stuff after it receives
10001           the USERS list from the server when joining to the channel.
10002
10003         * WHOIS and IDENTIFY commands has been changed to support multiple
10004           Client ID's per command.  One can now search for multiple users
10005           in the network by sending only one WHOIS or IDENTIFY command.
10006           Changed the code and the protocol specifications.
10007
10008         * Removed silc_server_command_identify_parse and changed that IDENTIFY
10009           uses silc_server_command_whois_parse to parse the request. */
10010
10011         * If normal server, do not parse the WHOIS and IDENTIFY requests
10012           before sending it to the router.  Saves some time.
10013
10014 Sun Jan 28 16:19:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10015
10016         * Fixed JOIN command on client library.  Wrong number of arguments
10017           used to crash the client.
10018
10019         * Added silc_server_channel_has_global function to check whether
10020           channel has global users or not.
10021
10022         * Added silc_server_channel_has_local function to check whether channel
10023           has locally connected clients on the channel.
10024
10025         * The silc_server_remove_from_one_channel now checks whether the
10026           channel has global users or not after given client was removed from
10027           the channel.  It also checks whether the channel has local clients
10028           on the channel anymore.  If it does not have then the channel entry
10029           is removed as it is not needed anymore.
10030
10031         * The silc_server_notify now checks on JOIN notify whether the joining
10032           client is one of locally connected or global.  If it is global then
10033           the channel has now global users on the channel and that is marked
10034           to the channel entry.  Also, it now saves the global client to
10035           global list who is joining and JOINs it to the channel.  This is
10036           for normal server, that is.
10037
10038           Changed silc_server_send_notify_on_channel,
10039           silc_server_packet_relay_to_channel and
10040           silc_server_packet_send_to_channel check if we are normal server
10041           and client has router set (ie. global client) do not send the
10042           message to that client, as it is already routed to our router.
10043
10044         * Implemented LEAVE notify type handling in silc_server_notify
10045           function.
10046
10047         * Tested LEAVE command in router environment successfully.  Tested
10048           with two routers, two servers and two clients.
10049
10050         * Updated TODO.
10051
10052         * idlist_find_xxx_by_id routines now dumps the ID on the debug mode.
10053
10054         * Implemented SIGNOFF notify type handling in silc_server_notify
10055           function.
10056
10057         * silc_server_remove_id now removes the client entry from all channels
10058           it has joined and thusly sends SIGNOFF notify type.
10059
10060         * Rewrote the NAMES list generation in server by removing two excess
10061           loops.  The lists are created now inside one loop.
10062
10063 Sat Jan 27 22:34:56 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10064
10065         * silc_server_remove_channel_user checks now also global list
10066           for channel and client.
10067
10068         * silc_server_new_channel_user checks now both local and global
10069           list for channel and client.  Fixed a bug in client id decoding.
10070           Used to decode wrong buffer.
10071
10072         * silc_server_channel_message checks now both local and global
10073           list for channel entry.
10074
10075         * Tested channel joining (hence JOIN) in router environment
10076           successfully.  Tested with two routers, two servers and two
10077           clients.
10078
10079         * Tested channel message sending in router environment successfully.
10080
10081 Thu Jan 11 03:22:57 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10082
10083         * Added silc_server_save_channel_key into server.[ch] to save the
10084           received channel key in Channel Key payload processing. It is
10085           also used in JOIN command reply handling.
10086
10087           Equivalent function silc_client_save_channel_key added into
10088           client.[ch] into client library.
10089
10090         * Changed JOIN command reply to send information whether the channel
10091           was created or not (is existing already) and the channel key
10092           payload.  Changed protocol specs accordingly.
10093
10094         * Fixed bugs in WHOIS and IDENTIFY command reply sending when
10095           the request was sent by ID and not by nickname.  Crashed on
10096           NULL dereference.
10097
10098 Sat Dec 23 21:55:07 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10099
10100         * Fixed a bug in Client library.  IDENTIFY and WHOIS reply functions
10101           now correctly save the received data.
10102
10103         * silc_server_free_sock_user_data now notifies routers in the
10104           network about entities leaving the network.
10105
10106           At the same time implemented functions silc_server_remove_id
10107           and silc_server_send_remove_id to receive and send REMOVE_ID
10108           packets.  The packet is used to notify routers in the network
10109           about leaving entities.  The ID removed will become invalid in
10110           the network.
10111
10112         * Added function silc_idlist_del_server into server. Removes and
10113           free's server entry from ID list.
10114
10115         * silc_server_private_message function now checks, if we are router,
10116           that the destination ID really is valid ID, naturally.
10117
10118         * In router when NEW_ID packet is received (for new client) the
10119           hash of the Client ID is saved in the ID Cache but the
10120           client->nickname is set to NULL, instead of putting the hash
10121           to it as well.
10122
10123           IDENTIFY command now also checks that client->nickname must be
10124           valid. If it is not if will request the data from the server who
10125           owns the client.  Added new function
10126           silc_server_command_identify_check.
10127
10128         * Added silc_command_set_command into lib/silccore/silcommand.[ch]
10129           to set the command to already allocated Command Payload.
10130
10131         * Tested private message sending in router environment with two
10132           routers, two servers and two clients.  Fixed minor bugs and now
10133           it works fine.
10134
10135         * Fixed segfault from client's NAMES command. Used to crash if
10136           not on any channel.
10137
10138         * Forwarded packets must not be routed even if it is not destined
10139           to the receiver.  Changed server code comply with this.
10140
10141 Sun Dec 17 14:40:08 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10142
10143         * Added `require_reverse_mapping' boolean value to ServerParams
10144           structure. If TRUE (not default) the server will require that
10145           the connecting host has fully qualified domain name.
10146
10147           If the reverse mapping is not required and hostname could not be
10148           found the IP address is used as hostname.
10149
10150 Sat Dec 16 17:39:54 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10151
10152         * Implemented version string checking to both client and server.
10153           The check is incomplete currently due to the abnormal version
10154           strings used in development version of SILC.
10155
10156         * Changed all command functions in server to use the new
10157           CHECK_ARGS macro.
10158
10159 Fri Dec 15 15:55:12 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10160
10161         * Changed char *data to unsigned char *data in ID Cache system to
10162           support binary data as ID Cache data. Changed code to support
10163           binary data in lib/silccore/idcache.c.
10164
10165         * Renamed silc_server_packet_relay_command_reply to
10166           silc_server_command_reply as it is normal packet receiving
10167           function. Rewrote the function to accept command replys for
10168           servers and not only for clients.
10169
10170         * Mark remote router always as registered server if we are connecting
10171           to it.  Otherwise, commands sent by the router to us are ignored.
10172
10173         * All ID List find routines now returns the ID Cache Entry pointer
10174           as well if requested.
10175
10176         * WHOIS command works now in router environment, tested with two
10177           routers, two servers and two clients.
10178
10179         * Cleaned up and rewrote IDENTIFY command. IDENTIFY should work now
10180           in router environment (as it is almost equivalent to WHOIS) but
10181           hasn't been tested thoroughly.  Added new functions:
10182
10183           silc_server_command_identify_parse
10184           silc_server_command_identify_send_reply
10185           silc_server_command_identify_from_client
10186           silc_server_command_identify_from_server
10187
10188         * Disabled route cache adding because adding two different ID's with
10189           same IP replaces the old cache entry thus giving wrong route.
10190           The entry->router->connection is always the fastest route anyway
10191           so route cache may not be needed.  Of course, new routes maybe
10192           established after receiving the ID when the entry->router->connection
10193           might not be anymore the most optimal.
10194
10195 Thu Dec 14 15:55:35 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10196
10197         * Add route cache for received ID for fast routing.
10198
10199         * Added silc_server_packet_route to route received packet on router
10200           that is not destined to us.
10201
10202         * Renamed silc_server_get_route to silc_server_route_get.
10203
10204         * Added id_string and id_string_len fields into SilcServer to
10205           include encoded ServerID for fast comparing without excess
10206           encoding of the ID's.
10207
10208         * Cleaned up WHOIS command on server side. Added following static
10209           functions:
10210
10211           silc_server_command_whois_parse
10212           silc_server_command_whois_check
10213           silc_server_command_whois_send_reply
10214           silc_server_command_whois_from_client
10215           silc_server_command_whois_from_server
10216
10217         * Added macro SILC_SERVER_COMMAND_CHECK_ARGC to check mandatory
10218           arguments in command replies. All command functions should be
10219           updated to use this macro.
10220
10221 Sun Dec 10 23:52:00 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10222
10223         * Minor typo fixes on command reply handling on server.
10224
10225 Tue Nov 28 11:05:39 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10226
10227         * Added silc_server_command_add_to_channel internal routine to add
10228           the client to the channel after router has created the channel and
10229           sent command reply to the server.
10230
10231         * Added generic silc_server_send_command to send any command from
10232           server.
10233
10234         * Use static buffer with ID rendering instead of duplicating data.
10235
10236 Mon Nov 27 21:39:40 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10237
10238         * Fixed a channel user mode bug when joining to a channel server gave
10239           everybody channel founder rights, oops.
10240
10241         * We mark ourselves as the router of the incoming server connection
10242           if we are router ourselves.  This way we can check in some packet
10243           sending functions whether it is locally connected server.  For
10244           incoming router connections we put NULL.
10245
10246         * For router sending packets locally means now always sending the
10247           packet cell wide; to local clients and local servers.  For normal
10248           server sending packet locally means sending it to only local
10249           clients.
10250
10251         * Fixed the JOIN command to really work in router environment.  If the
10252           channel is created it is always created by the router.  Router is
10253           also responsible of making the initial joining to the channel,
10254           sending JOIN notify to the sending server and distributing
10255           NEW_CHANNEL and NEW_CHANNEL_USER packets.  Hence, if the channel
10256           does not exist server doesn't do anything else but forward the
10257           command to the router which performs everything.
10258
10259         * Added silc_server_send_channel_key function to send the Channel Key
10260           payload.
10261
10262         * Added silc_server_create_channel_key to create new channel key.  The
10263           channel key is now re-generated everytime someone joins or leaves
10264           a channel, as protocol dictates.  Note: channel->key_len is the
10265           key length in bits.
10266
10267 Wed Nov 22 22:14:19 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10268
10269         * Splitted server.[ch] finally.  Created now packet_send.[ch] and
10270           packet_receive.[ch] to separate packet sending and receiving
10271           routines.  The server.[ch] now includes everything else including
10272           actual packet processing (writing and reading data) and other
10273           server issues.
10274
10275           Renamed silc_server_private_message_send_internal to
10276           silc_server_send_private_message.  The routine is still though
10277           used only to relay private messages as server does not send
10278           private messages itself.
10279
10280           Renamed silc_server_new_channel to silc_server_create_new_channel
10281           and added new function sicl_server_new_channel that handles the
10282           incoming New Channel packet.  Added also new sending function
10283           silc_server_send_new_channel to send New Channel Payload.
10284
10285         * Added new function silc_server_notify to process incoming notify
10286           packet to the server/router. Server may then relay the notify
10287           to clients if needed.
10288
10289         * Added new function silc_server_new_channel_user to process incoming
10290           New Channel User packet.  Router will redistribute the packet and
10291           send JOIN notify to its local clients and locally connected servers
10292           if needed.  Normal server will send JOIN notify to its local client
10293           on same channel when received this packet.  Added also corresponding
10294           sending function silc_server_send_new_channel_user to sent the
10295           payload.
10296
10297         * Added boolean route argument to send_notif_to_channel and
10298           packet_send_to_channel functions to attempt to route the packet
10299           if it is TRUE and send only locally if it is FALSE.
10300
10301 Tue Nov 21 19:49:31 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10302
10303         * silc_server_replace_id now broadcasts the received replace ID
10304           packet if it is not broadcast packet already. The router must
10305           broadcast to inform other routers about changed ID.
10306
10307         * Added backpointer to server's router into SilcServer context in
10308           silcd/server_internal.h.
10309
10310         * Fixed silc_server_packet_broadcast to send correct broadcast
10311           packets.
10312
10313         * The channel key is now distributed to the local client as soon
10314           as it is received from the router (in router environment) so that
10315           no other packet may be sent for the channel until client has
10316           received the key.
10317
10318         * silc_server_remove_channel_user now broadcasts the received
10319           Remove Channel User packet if it is not broadcast packet already.
10320           The router must broadcast to inform other routers about removed
10321           channel user.
10322
10323         * Added users field into SilcPacketContext that is a reference count
10324           of the context.  One can increase the reference count by calling
10325           silc_packet_context_dup which is now changed to just increase the
10326           reference count instead of duplicating the data.  The reference
10327           count is decresed by calling silc_packet_context_free that will
10328           free the data after the reference count hits zero.
10329
10330           For now on the packet context and everything allocated into it
10331           (including the raw packet from network) must be freed by calling
10332           the new silc_packet_context_free function.  Added also new function
10333           silc_packet_context_alloc that must be used now to allocate the
10334           context.  This also means that if a routine is asynchronous from
10335           silc_[client/server]_packet_parse_type the packet context must
10336           be duplicated by calling silc_packet_context_dup.  Otherwise it
10337           gets free'd after silc_[client/server]_packet_parse_type returns.
10338           Also, one must remember that if packet is duplicated then its
10339           reference count must be decresed by calling the free function as
10340           many times as it was duplicated.
10341
10342         * Changed SilcBuffer field from protocol contexts to SilcPacketContext
10343           from both client and server.
10344
10345 Mon Nov 20 23:47:03 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10346
10347         * Made joining to a channel working in router environment.
10348
10349         * Cleaned up JOIN command on server side and create function
10350           silc_server_command_join_channel internal routine to make the
10351           joining happen.
10352
10353 Thu Nov  9 21:12:39 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10354
10355         * Changed silc_command_pending list to SilcDList.  Also, added
10356           `ident' field to SilcServerCommandPending structure to identify
10357           the reply and to call correct callback.
10358
10359           Added silc_server_command_pending_check function to replace the
10360           corresnponding macro.  The silc_command_pending list is not
10361           extern anymore.
10362
10363         * Added silc_command_set_ident into lib/silccore/silccommand.[ch]
10364           to set identifier to previously allocated Command Payload.  It
10365           is used to set identifier for command when resending Command
10366           Payload.
10367
10368         * Added silc_command_payload_encode_payload to encode Command
10369           Payload buffer from SilcCommandPayload structure.
10370
10371         * Added silc_argument_payload_encode_payload to encode Argument
10372           payload buffer from SilcArgumentPayload structure.
10373
10374 Wed Nov  8 21:03:28 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10375
10376         * Changed WHOIS command to support router connection on server side.
10377           The whois request is always sent to router unless the server is
10378           standalone server.  After server has received the reply from the
10379           router will it send the reply to the client.
10380
10381         * Added silc_server_packet_broadcast into silcd/server.[ch] to
10382           broadcast received broadcast packet.  The function is used only
10383           by router.  The broadcast packet is always sent to the router's
10384           primary route.
10385
10386         * Added silc_id_render function in lib/silcutil/silcutil.[ch] to
10387           render given ID to printable string, for log files for example.
10388
10389 Tue Nov  7 22:14:19 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10390
10391         * Made basic router to router connections working.  At least they
10392           can now connect to each other but nothing really works the way
10393           they are supposed - yet.
10394
10395         * Added new initiator token to RouterConnection configuration
10396           file in silcd/serverconfig.[ch].  It is used to tell whether we
10397           are the initiator to the remote router or whether we'll expect
10398           the other end to connect.
10399
10400         * Moved registering of listener task to silc_server_init, hence
10401           the server starts listenning as soon as it is run, even if it
10402           does not have connections to other routers.  Let's see how well
10403           this will work.
10404
10405         * Changed default connection retry timeouts for more suitable in
10406           silcd/server.h.
10407
10408         * Removed cipher and such arguments from silc_idlist_add_client
10409           and silc_idlist_add_server prototypes from silcd/idlist.[ch].
10410           Added new function silc_idlist_add_data to add the keys and stuff
10411           to any ID entry.
10412
10413         * Added SilcIDListData structure and added it to SilcClientEntry
10414           and SilcServerEntry as their first field in the structure.  This
10415           way we can explicitly cast the ID entries to the SilcIDListData
10416           structure and get common data for the entries.  In past, we had
10417           to first check what type of connection it is and then cast it to
10418           correct ID entry type.  Now, we can directly cast the opaque
10419           pointer to the SilcIDListData (no matter what ID entry it actually
10420           is) and get the data needed.
10421
10422 Mon Nov  6 21:56:12 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10423
10424         * Wow, found a bug in scheduler.  The scheduler uninitialized itself
10425           in some circumstances even if threre were timeout tasks, though not
10426           IO tasks, but tasks anyway.  Now fixed.
10427
10428         * Defined SilcServerConnection structure to hold connection specific
10429           stuff about directly connected servers and routers.  The definition
10430           is currently in silcd/server_internal.h.  I thought about having
10431           a bit more important role fro this struct but for now it is used
10432           only when connecting to other server (or router actually).
10433
10434         * Added connecting retry support in server when connecting to
10435           router(s).  The retry feature implement exponential backoff
10436           algorithm.  Also, added SilcServerParams structure to hold default
10437           parameters for server.  For now, it include these retry settings
10438           and are hard coded.  After server is moded to be as Silc Server
10439           Library this structure will be more important.
10440
10441 Sun Nov  5 22:28:44 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10442
10443         * Changed client librarys channel->clients table to SilcList and
10444           changed code accordingly.
10445
10446 Thu Nov  2 16:28:01 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10447
10448         * Changed client's channel table to SilcList and changed code
10449           accordingly.  Also changed SilcChannelClientEntry to include back-
10450           pointer to the channel so that client entry can use that structure
10451           as list as well and we have fast cross-reference to the channel.
10452           This change dramatically decreased the complexity of channel
10453           handling with client entry and vice versa (removed one extra
10454           loop when searching for channel entry from many functions).
10455
10456         * Changed server->sim from table to SilcDList and changed code
10457           accordingly.
10458
10459         * NAMES command can now be used from user interface.  It will show
10460           the user list on the channel, neatly.
10461
10462         * Added realname pointer to SilcClientEntry in lib/silcclient/idlist.h.
10463           Code now saves realname of the user if it becomes available.
10464
10465         * Renamed configure.in to configure.in.pre and made ./prepare
10466           script to automatically add correct version string to
10467           configure.in which it creates from configure.in.pre.
10468
10469 Wed Nov  1 17:21:26 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10470
10471         * NAMES command reply now shows users mode with the nickname when
10472           joining to channel.
10473
10474         * Moved silc_client_ch[u]mode[_char] functions from
10475           silc/clientutil.[ch] to lib/silcclient/client.[ch].  Though, that
10476           place sucks, they are utility functions and should be in some
10477           other file.
10478
10479         * Fixed some unsigned int's to unsigned short's.  Patch by cras.
10480
10481         * Fixed contrib/getopt*.[ch] to not require config.h.  Patch by
10482           cras.
10483
10484 Tue Oct 31 20:10:37 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10485
10486         * Updated README.
10487
10488         * Added TRQ (efficient deque and list library) into lib/trq.  This is
10489           a very good list library that is currently used in the SILC.  Defined
10490           SilcList API over the library because I didn't like the API very
10491           much.  See lib/trq/silclist.h for the API and examples of how to
10492           use the API.  Fixed various places in the code to use the new
10493           SilcList API. The SilcList is meant for lists that has a structure
10494           already defined as a list.  It is not suitable to add just some
10495           context to the list (in TRQ, the context is the list actually).
10496
10497           So, I defined SilcDList that can be used for the purpose where
10498           predefined list structure does not exit.  This can be used as
10499           such list.  Now some context just can be added to the SilcDList.
10500           Currently this list is not used in the SILC just yet, though there
10501           are a lot places where this can replace dynamically allocated
10502           tables and I will fix these places, later, to use SilcDList.
10503           See lib/trq/silcdlist.h for SilcDList (they are all inline functions,
10504           and use TRQ internally).
10505
10506           Also fixed some annoying warning messages that the original TRQ
10507           code generated.  Also minor changes to TRQ's Makefile.in.
10508
10509         * Added support for querying by Client ID to both WHOIS and
10510           IDENTIFY commands into server, as required by the protocol.
10511
10512         * Removed method function pointers from SilcBuffer structure. They
10513           weren't used to anything and just increased the context size for
10514           no good reason.  This change also made silc_buffer_alloc and
10515           silc_buffer_free functions inline functions.
10516
10517         * Disabled command flooding detection support until it's fixed so
10518           that it accepts commands in but does not execute them more than once
10519           in two seconds.
10520
10521         * Added silc_net_localhost(), to return local hostname, into
10522           lib/silcutil/silcnet.[ch].  Also added client->hostname pointer
10523           that must be initialized before calling silc_client_init.
10524
10525         * Added new function: silc_server_send_notify_on_channels to send
10526           notify messages to all channels client has joined.  It is assured
10527           that the message is sent only once per client.
10528
10529         * Moved silc_log_format (from lib/silcutil/silclog.[ch] into
10530           lib/silcutil/silcutil.[ch] as silc_format function.  The new
10531           function is generic and is used by server as well, not only by
10532           the logging routines.
10533
10534         * Added new SKE status type: SILC_SKE_STATUS_BAD_VERSION to indicate
10535           the provided version string was not acceptable.  Added new function:
10536           silc_ske_check_version into lib/silcske/silcske.h.  The function
10537           must be implemented by the application (client or server) and it
10538           does not reside in the SKE library.  The function checks the version
10539           string remote end sent.
10540
10541         * Added back pointers (to opaque context and to SilcSocketConnection)
10542           into SilcPacketContext structure into lib/silccore/silcpacket.h.
10543
10544         * Added silc_packet_context_dup into lib/silccore/silcpacket.[ch] to
10545           duplicate packet context structure.
10546
10547         * Changed `notify' client operation to send same arguments as client
10548           receives from server except for ID's.  ID's are mapped to correct
10549           ID entry and that is returned.  Also, if channel entry is not sent
10550           by server but the notify is for channel the channel entry is sent
10551           to application (otherwise application doesn't know that it is for
10552           channel (library gets it from packet's Destination ID)).
10553
10554         * Added silc_client_remove_from_channels into client library to
10555           remove a client from all channels it has joined to.  Used when
10556           received SIGNOFF notify from server.  Added also new function
10557           silc_client_replace_from_channels to replace old ID entry with
10558           new ID entry on all channels.  Used when received NICK_CHANGE
10559           notify from server.
10560
10561         * Fixed ID Cache list handling in silc_idlist_get_client in
10562           lib/silcclient/idlist.c.  Also, added silc_idlist_get_client_by_id
10563           to get (or query) client by ID.
10564
10565         * Updated TODO list.
10566
10567         * Added connection authentication status message defined by the
10568           protocol: SILC_CONN_AUTH_OK and SILC_CONN_AUTH_FAILED and added the
10569           support for these into the code in client and server side.
10570
10571         * Added generic function silc_client_send_command to send any command
10572           with variable argument list.  Application should use this function
10573           to send commands if the command functions provided by the library
10574           does not suite for the application's user interface needs.
10575
10576         * Added new `failure' client operation.  Application is notified about
10577           received failure packet if client is executing a protocol.  In this
10578           case the protocol's execution has failed.
10579
10580         * Added SKE's end notify to send the SKE_SUCCESS notify message that
10581           is required by the protocol.
10582
10583         * Added SILC_PROTOCOL_STATE_FAILURE to indicate received failure
10584           packet from remote.  SILC_PROTOCOL_STATE_ERROR indicates local
10585           error at our end.
10586
10587         * Added status flag to SilcSKE object to indicate realtime status
10588           of the SKE protocol.
10589
10590         * Application receives now exactly same command reply arguments as
10591           the library receives from server.  However, if ID is received the
10592           corresponding ID entry is returned to the application (eg. Client
10593           ID is mapped to correct SilcClientEntry entry and that is returned).
10594           Changed command_reply client operation due to this change.
10595
10596         * Changed all ID's in commands and in command replys as ID Payloads.
10597           Change affected both client and server side codes.
10598
10599           All ID's sent in SILC network (with execption of ID's in SILC
10600           Packet header) are sent in ID Payload to support variable length
10601           ID's.
10602
10603         * Server now notifies nick changes and notifies all clients on
10604           the channels about the new nickname (about the new Client ID,
10605           actually).
10606
10607         * Implemented CMODE command to change channel modes. Supports all
10608           channel modes defined by the protocol specs except ban and invite
10609           lists. (Also, private channel key mode is supported but support for
10610           setting private channel key in client is missing, thus, this mode
10611           has no effect on client side (except that server requires that the
10612           client uses private channel key and normal channel traffic does not
10613           work anymore)).
10614
10615           Also, invite mode works per se, but INVITE command does not work
10616           yet correctly, so you can set channel as invite only channel but
10617           inviting clients to the channel does not work (it is yet to be
10618           thought what's the best way to do it).
10619
10620         * Added new command SILC_COMMAND_CUMODE to change user mode on the
10621           channel.  Defined user modes: CHANNEL_FOUNDER and CHANNEL_OPERATOR.
10622           Implemented CUMODE command to change user's mode on the channel.
10623           Supports all modes defined by the protocol specs.
10624
10625         * Added NAMES command reply to return users modes on the channel.
10626
10627         * Removed unnecessary and slow ciphers from lib/silccrypt.
10628
10629         * Set SO_KEEPALIVE option to connection sockets by default.
10630
10631         * Added new command reply status: SILC_STATUS_USER_NOT_ON_CHANNEL.
10632
10633         * Added notify types: MOTD, CMODE_CHANGE and CUMODE_CHANGE.  Also,
10634           redefined the Notify Payload into protocol specs.
10635
10636         * Added silc_id_payload_parse_id to get ID directly from raw
10637           ID payload data.
10638
10639 Mon Oct  9 20:57:02 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10640
10641         * Changed SILC_COMMAND_IDENTIFY in protocol specification to
10642           accept searching by Client ID as well.
10643
10644         * Added support for LEAVE and SIGNOFF notify types in client library.
10645
10646         * Added silc_id_payload_parse_data into lib/silccore/silcpayload.[ch]
10647           to parse ID Payload from raw data.
10648
10649 Sun Oct  8 19:33:08 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10650
10651         * Added flags parameter into silc_ske_assemble_security_properties
10652           function in lib/silcske/silcske.[ch].
10653
10654         * Changed notify client operation to fit better for notify messages
10655           sent by server.  The notify payload received from server is now
10656           passed to the application (after parsing it to SilcNotifyPayload).
10657           It is application's responsibility to retrieve the arguments
10658           from the payload and show the message the way it wants.  The message
10659           sent by server is implementation specific.
10660
10661         * Changed public keys to comply with the protocol specification.
10662           Old public keys are not supported anymore and are not compatible.
10663
10664         * Removed nickname from Channel Payload as the latest draft removed
10665           it.  The client must resolve the nickname from the NAMES command
10666           reply received when it joined the channel.
10667
10668           Also, changed all channel_xxxx_payload to channel_payload_xxxx.
10669
10670 Sat Oct  7 21:55:01 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10671
10672         * Fixed some errors in protocol specification drafts.
10673
10674         * Created lib/silccore/silcnotify.c to implement Notify Payload
10675           encoding and decoding, lib/silccore/silcpayload.[ch] to implement
10676           generic payloads described by protocol specifications.  The file
10677           includes implementations for ID Payload and Argument Payload.
10678
10679         * Changed Command Payload implementation to use the new Argument
10680           Payload.  Changed command_xxxx_payload to command_payload_xxxx
10681           to comply with SILC coding conventions.
10682
10683         * Added suppport for Argument Payload handling in Notify Payload
10684           implementation as protocol requires it.  Added the new support
10685           into server and client lib as well.
10686
10687 Thu Oct  5 21:16:28 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10688
10689         * Added support for multiple nicknames on same channel.  [n] is
10690           added locally to the nickname if there are more than one same
10691           nicknames on the channel.
10692
10693         * Server now sends all nicknames that matched WHOIS request.
10694           Client also shows the list received from server.
10695
10696         * Added TOPIC command to client side.  User can now set and show
10697           current topic on channel.
10698
10699         * Added MOTD command to client and server.  Also, server sends the
10700           motd when client connects to the server.
10701
10702         * Changed version strings to comply ISO 8601.
10703
10704 Wed Oct  4 23:29:06 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10705
10706         * Fixed protocol error handling in client library.  It should now
10707           cope even if the SKE fails for some reason.
10708
10709         * Made new protocol specification drafts for submitting to IETF.
10710
10711         * Implemented TOPIC command to server in silcd/command.c.
10712
10713         * Added two new notify types into lib/silccore/silcnotify.h:
10714           SILC_NOTIFY_TYPE_NICK_CHANGE and SILC_NOTIFY_TYPE_TOPIC_SET to
10715           notify nickname change and topic setting/change on a channel.
10716
10717         * API change of command_reply operation in client library.  The
10718           application gets now the status type received from server as well.
10719
10720 Sat Sep 30 16:57:42 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10721
10722         * Removed the function just added to lib/silcutil/silcschedule.[ch].
10723
10724         * Cras fixed and optimized the packet handling even further and
10725           it should work now.  Minor change to the prototype of function
10726           silc_packet_receive_process in lib/silccore/silcpacket.[ch].
10727
10728 Sat Sep 30 08:48:47 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10729
10730         * Added new function into lib/silcutil/silcschedule.[ch]:
10731           silc_schedule_with_fd to select() a specified fd.  The function
10732           returns after timeout expires or data arrives or goes.  The
10733           function is used by packet routines to wait that all data is
10734           received from network.
10735
10736         * Fixed data reading from network in lib/silccore/silcpacket.c.
10737           The code now assures that all data is read from the fd and then
10738           continues packet processing.  This was a bug fix since the code
10739           used to drop some data in some circumstances.
10740
10741         * Added new function into lib/silcclient/client.[ch]:
10742           silc_client_start_key_exchange to start key exchange after
10743           connection has been established to server.  The code internally
10744           now uses this funtion but its main purpose was to provide it
10745           for applications that perform their own connecting.  After
10746           application has created a connection it merely calls this
10747           function to start the key exchange between client and server.
10748           The library takes care of everything else after that.
10749
10750           Updated also lib/silcclient/README to explain the usage of
10751           this new function.
10752
10753         * Do not send to application information that connection has
10754           been established.  Application gets notified it by connect
10755           operation anyway.
10756
10757 Thu Sep 28 23:40:19 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10758
10759         * Applied cras's patch to add silc_schedule_one function.  The
10760           function runs scheduler once and returns.
10761
10762         * Fixed the scheduler after cras messed it up.  The timeout
10763           handling works now as it's supposed to work.
10764
10765         * Added into lib/silccore/ silcnotify.h to include notify
10766           message types support.  Changed silc_server_send_notify*
10767           functions, in server.[ch], to support those new notify types.
10768           Added the support for the notify types into client library,
10769           as well.  Added new notify client operation into ops.h in
10770           lib/silcclient/.
10771
10772         * Changed silc_server_packet_send_to_channel to send normal
10773           packets instead of just channel message packets.  The function
10774           is now used to send the notify packets to channels.  It is not
10775           used to send channel message packets anymore, as server never
10776           sends them anymore.
10777
10778         * Added explicit casting into lib/silcutil/silcbuffmt.c to few
10779           va_arg()s as it seems to require it nowadays.  I guess, if SILC
10780           is compiled with older va_arg() the new code should work anyway.
10781
10782 Wed Sep 13 18:10:14 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10783
10784         * Splitted core library.  Core library (lib/silccore) includes
10785           now only SILC protocol specific core (and common) components.
10786           Created new utility library (lib/silcutil) that includes more
10787           generic purpose stuff.  The stuff for util library was taken
10788           from the old core library.  This was minor and easy split.
10789
10790         * Created SILC Client Library (lib/silcclient) that includes
10791           implementation of the SILC client without user interface.  This
10792           was major move from silc/ directory.  The code has been changed
10793           so that it is transparent towards the user interface.  The
10794           silc/ directory includes now the same user interface as before
10795           and it uses the new client library.  Read lib/silcclient/README.
10796           Basicly, the client library performs everything else related
10797           to SILC except user interface handling.  Also, configuration
10798           files are considered to be part of user interface and library
10799           does not handle them.
10800
10801           This change also changed a lot of structures, function naming etc.
10802           Most important change was that SilcClientWindow object was
10803           renamed to SilcClientConnection in the client library.  Created
10804           also new file lib/silcclient/ops.h.  Also added new files
10805           silc/local_command.[ch] and silc/client_ops.[ch].
10806
10807           All these changes were made to make it easier for user interface
10808           designers to create what ever user interface for the SILC client
10809           they want.
10810
10811           It is also expected that the server will be moved to lib
10812           directory as well and SILC Server Library will be created;
10813           sometimes in the future.
10814
10815         * Removed Local commands from lib/silccore/silccommand.h as
10816           they are application specific and new client library does not
10817           handle any of those anymore.
10818
10819         * Several functions moved to lib/silcutil/silcutilc.[ch] from
10820           old client implementation in silc/.
10821
10822         * Added support for callback functions in SILC_LOG_* macros.
10823           Application can now set its own callbacks that will be called
10824           instead of using the default functions that will always print
10825           the debug messages to stderr (or stdout).  Also, debugging can
10826           now be disabled by setting silc_debug to FALSE and re-enabled by
10827           setting it to TRUE.  Note, that logging will still work even
10828           if debugging is disabled.
10829
10830           New functions in lib/silcutil/silclog.[ch]: silc_log_set_callbacks,
10831           silc_log_reset_callbacks, silc_log_set_debug_callbacks and
10832           silc_log_reset_debug_callbacks.
10833
10834         * To enable debugging in silc client one must give now -d
10835           option on command line.
10836
10837         * Changed silc_schedule_init to automatically allocate task queues
10838           if they are not allocated before calling it.
10839
10840 Thu Sep  7 10:49:33 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10841
10842         * Added GMP 3.1 into math library.
10843
10844 Sun Aug 20 21:27:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10845
10846         * Added SILC_PACKET_REMOVE_CHANNEL_USER to remove a client from
10847           a channel in SILC network.  The packet is used by servers and
10848           routers to notify other routers that user has left a channel.
10849           This little feature was missing until now.  Added the feature
10850           to protocol specification as well.
10851
10852           Added functions: silc_server_send_remove_channel_user and
10853           silc_server_remove_channel_user into server.[ch].
10854
10855         * Added SILC_PACKET_REKEY and SILC_PACKET_REKEY_DONE into
10856           lib/silccore/silcpacket.h.  However, they are not implemented
10857           yet.
10858
10859 Sat Aug 19 23:04:16 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10860
10861         * Fixed joining to a channel and sending channel messages
10862           between server and router.  The channel message sending should
10863           now work inside a cell.
10864
10865 Tue Jul 25 20:46:13 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10866
10867         * Fixed the private message sending between server and router.
10868           The private message sending should now work inside a cell.
10869
10870         * Added silc_server_replace_id into server.[ch] to replace
10871           existing ID in the SILC network.
10872
10873         * Added silc_idlist_find_server_by, silc_idlist_replace_client_id
10874           and silc_idlist_replace_server_id into idlist.[ch] in server.
10875
10876 Mon Jul 24 18:33:31 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10877
10878         * Fixed the server to server connections.  Server can again now
10879           connect to router.  Router to router connections probably does
10880           not work just yet.
10881
10882 Thu Jul 20 13:15:01 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10883
10884         * Added dynamic protocol registering support.  Now protocols can
10885           registered and unregistered on the fly.  Patch by cras.
10886
10887 Wed Jul 19 19:08:46 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10888
10889         * Added lib/contrib directory to hold routines that some platforms
10890           don't have but are needed by SILC.
10891
10892         * Added getopt.c, getopt1.c and getopt.h from GNU C library
10893           into lin/contrib to provide getopt() and getopt_long() for
10894           those who don't have it.
10895
10896 Tue Jul 18 20:41:20 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10897
10898         * Added AWAY command to client.  When away message is set and
10899           client receives a private message packet the client automatically
10900           replies to the sender with the away message.
10901
10902         * Fixed a bug in lib/silcmath/mpbin.c: silc_mp_mp2bin.  This
10903           bug seemed to be the cause of recent problems when compiling
10904           with gcc-2.95.
10905
10906         * Added version detection support to SKE protocol specification
10907           and added the new changes to the SKE implementation as well.
10908           There were other minor changes in the SKE protocol as well.
10909
10910           Many changes in lib/silcske/silcske.[ch] and in
10911           lib/silcske/payload.[ch].
10912
10913         * Added ^U functionality, clear input line.  Patch from cras.
10914
10915 Mon Jul 17 23:33:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10916
10917         * Mainly small bugfixes on core library.  Fixed some debugging
10918           logging and buffer overflow in silclog.c.
10919
10920         * Updated config.sub and config.guess on the distribution tree.
10921
10922 Sat Jul 15 15:33:48 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10923
10924         * Added command lagging support in server. Client may execute
10925           commands now only once in two seconds.
10926
10927 Thu Jul 13 22:10:21 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10928
10929         * Optimized packet reception. MAC computation and checking is now
10930           also more optimized.  A lot previously duplicated code is now
10931           used as generic by both client and server.
10932
10933         * Fixed key pair generation in clientutil.c
10934
10935 Wed Jul 12 18:28:07 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10936
10937         * Added into lib/silccore/silcbufutil.[ch] new function;
10938           silc_buffer_realloc.
10939
10940         * Moved generic packet sending/encryption functions to
10941           lib/silccore/silcpacket.[ch] from client and server.  Some
10942           rewriting of the functions.
10943
10944         * Moved all generic packet reception/decryption functions to
10945           lib/silccore/silcpacket.[ch] from client and server.  The
10946           packet processing is now much cleaner in both client and server.
10947           These were major changes in both client and server.
10948
10949         * Created many common functions in server to do packet sending.
10950           Previously code were duplicated a lot, this has been removed
10951           with these changes.
10952
10953 Tue Jul 11 20:27:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10954
10955         * Rewrote major parts of the ID cache system.  Don't know
10956           whether it is better now or not but at least the API is more
10957           cleaner now.
10958
10959         * Major rewrite on ID cache stuff on client because of the ID
10960           cache API changes.  Added idlist.c to client.
10961
10962         * Also major rewrite on ID cache stuff on server as well.
10963           Major rewrite of idlist.[ch]. SilcXXXList's are now named
10964           SilcXXXEntry's.  We won't keep anymore idlist specific pointers
10965           in hand, instead they are all put into the ID cache system now.
10966           All server_idlist_* routines uses ID cache now instead of
10967           traversing its own lists (those lists does not exist anymore).
10968           SilcIDList though still exists.  Also, SilcXXXEntry's are
10969           now pointers.
10970
10971 Sun Jul  9 15:19:24 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10972
10973         * Finally made the SKE implementation compliant to the protocol
10974           specification.  All mp integers are now binary encoded as
10975           opposed being HEX encoded.
10976
10977         * Added lib/silcmath/mpbin.[ch].  Encoding mp intergers to and
10978           from binary data.
10979
10980         * Added into lib/silccore/silcutil.[ch] PEM encoding/decoding
10981           functions: silc_[encode/decode]_pem.  Also added function
10982           silc_encode_pem_file to PEM encode with newlines ('\n') for
10983           saving into a file.
10984
10985         * SILC public keys are now encoded either PEM or binary.  Same
10986           option is for private keys as well.  By default private keys
10987           are binary encoded and public keys PEM encoded.  Silly HEX
10988           encoding were removed.
10989
10990         * Added into lib/silccrypt/silchash.[ch] silc_hash_fingerprint
10991           function to create fingerprints.
10992
10993         * Fixed a bug in SHA1; does not change the original data anymore.
10994
10995         * Partly implemented INFO command on client and server side.
10996           Fixed CLEAR command.  Changes to SERVER command; show current
10997           server(s) when giving command without arguments.  Added
10998           VERSION command to client.
10999
11000         * Added check to server that unregistered connections cannot
11001           execute commands (unless it is specificly allowed).
11002
11003 Thu Jul  6 18:12:24 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11004
11005         * Fixed screen refresh.
11006
11007         * Fixed channel joining bug from client.  On some circumstances
11008           client tried to join to a channel it had already joined.
11009
11010         * Added public key verification process into client's protocol.c.
11011           The client now verifies the public key from user and saves
11012           it into ~./silc/serverkeys/ directory.
11013
11014           Added into: clientutil.[ch]: silc_client_verify_server_key.
11015
11016         * Changed SKE protocol's silc_ske_initiator_finish function
11017           to accept callback function that verifies the received public
11018           key.  Removed old silc_ske_verify_public_key function.
11019
11020 Wed Jul  5 19:19:02 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11021
11022         * Added into silcpkcs[ch]: silc_pkcs_public_key[_data]_set and
11023           silc_pkcs_private_key[_data]_set.
11024
11025         * Made the password and public authentication more cleaner in
11026           server's protocol.c.
11027
11028         * Removed historic and obsolete protocol `channel_auth' from
11029           both client and server.
11030
11031         * Removed wrong way of sending command status messages from
11032           server to client in server's command.c.  The old way violated
11033           protocol specification.
11034
11035           Changes to silccore/silccommand.[ch]: removed
11036           silc_command_encode_status_payload -> not needed anymore,
11037           changed silc_command_encode_payload_va to accept extra
11038           argument on variable argument list.  The argument type must
11039           now be provided to the function.  Also, added new function:
11040           silc_command_encode_reply_payload_va which is same as
11041           normal command_encode_payload_va except command status type
11042           is provided as extra argument.
11043
11044 Tue Jul  4 18:26:39 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11045
11046         * Added ~./silc directory handling.  The directory includes the
11047           public and private keys for the client.
11048
11049           Added silc_client_check_silc_dir, silc_client_create_identifier
11050           and silc_client_load_keys.
11051
11052         * Implemented SILC protocol compliant public key.  Added public
11053           and private key saving to and loading from files.
11054
11055           Added into silcpkcs.[ch]: silc_pkcs_encode_identifier,
11056           silc_pkcs_public_key_encode[_data], silc_pkcs_public_key_decode,
11057           silc_pkcs_private_key_encode[_data], silc_pkcs_private_key_decode,
11058           silc_pkcs_public_key_alloc, silc_pkcs_public_key_free,
11059           silc_pkcs_private_key_alloc and silc_pkcs_private_key_free.
11060
11061           Implemented: silc_pkcs_save_[public/private]_key[_data] and
11062           silc_pkcs_load_[public/private]_key.
11063
11064 Mon Jul  3 18:51:27 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11065
11066         * Added silc_server_get_route (route.[ch]) to get connection
11067           data for the fastest route for given ID.
11068
11069         * Implemented INVITE command on client and server.  The command
11070           were re-defined in the SILC Protocol Specification and the
11071           implementation now complies with the specification.
11072
11073         * Implemented PING command on client and server.
11074
11075         * Implemented NAMES command on client and server.  The server side
11076           supports currently only normal server not router server yet.
11077           Some changes to NAMES definition in SILC protocol specification.
11078
11079 Sun Jul  2 18:23:01 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11080
11081         * Implemented LEAVE command on client and server.
11082
11083         * Previously deprecated SILC_PACKET_FORWARDED flag is now in use
11084           again.  This change was made to the protocol as well.  Server
11085           should not violate the protocol specification anymore.
11086
11087 Fri Jun 30 14:03:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11088
11089         * Added SOCKS4 and SOCKS5 support to SILC client.  SOCKS5
11090           was tested.  SOCKS4 was not but should work anyway.