Added checks for GNU libidn.
[silc.git] / CHANGES
1 Sun Mar 27 19:02:48 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
2
3         * Imported new silc_utf8_[encode|decode] routines from
4           my internal SILC 1.1 source tree.  New encodings added:
5           SILC_STRING_LOCALE (SILC_STRING_LANGUAGE is deprecated),
6           SILC_STRING_UTF8, SILC_STRING_PRINTABLE, SILC_STRING_VISIBLE,
7           SILC_STRING_TELETEX, SILC_STRING_NUMERICAL and
8           SILC_STRING_LDAP_DN.
9
10         * Splitted UTF-8 routines into lib/silcutil/silcutf8.[ch].
11
12         * Implemented stringprep (RFC 3454) API.  Internally we use
13           GNU Libidn's stringprep, for now, so it is required now to
14           compile SILC sources.  Added lib/silcutil/silcstringprep.[ch].
15
16         * Added checking for GNU Libidn and --with-libidn to configure.
17
18 Wed Mar 23 11:20:33 CET 2005  Jochen Eisinger <jochen@penguin-breeder.org>
19
20         * If the passphrases entered do not match while generating a new key,
21           completly start over instead of going into an infinite loop asking
22           the user to re-enter the passphrase correctly.  Affected file
23           lib/silcutil/silcapputil.c
24
25 Sun Jan  9 14:28:51 CET 2005  Pekka Riikonen <priikone@silcnet.org>
26
27         * Make sure server is removed from backup list when it is
28           deleted.  Affected files silcd/command.c, server.c,
29           server_util.c.
30
31         * Close socket when connecting to router fails.  Affected
32           file silcd/server.c.
33
34 Tue Jan  4 13:06:26 CET 2005  Jochen Eisinger <jochen@penguin-breeder.org>
35
36         * Adopt configuration toolchain to current auto-tools.
37           Affected files prepare, irssi/configure.in
38         * Revert most of the UTF-8 fixes to SILC Client 1.0.1.  Will
39           redo that.  Affected files irssi/src/silc/core/client_ops.c,
40           irssi/src/fe-common/silc/fe-silc-channels.c
41         * Take over command line options into silcclient data structure.
42           Affected file irssi/src/silc/core/silc-core.c
43
44 Wed Dec  8 16:15:11 CET 2004  Pekka Riikonen <priikone@silcnet.org>
45
46         * Do not try to initiate backup resuming protocol forever.
47           Affected file silcd/server_backup.c.
48
49 Wed Nov 24 18:24:05 CET 2004  Pekka Riikonen <priikone@silcnet.org>
50
51         * ID change in resuming has to be done before changing
52           detached client's modes, since the ID change may fail and
53           leave ghosts on the network.  Affected file is
54           silcd/packet_receive.c.
55
56 Tue Nov 23 16:54:35 CET 2004  Pekka Riikonen <priikone@silcnet.org>
57
58         * Fixed Win32 scheduler to not stuck anymore.  A patch from
59           Juha Räsänen.  Affected file is
60           lib/silcutil/win32/silcwin32schedule.c.
61
62         * Fixed QoS parsing for connection blocks in server.  Affected
63           file is silcd/serverconfig.c.
64
65         * Fixed server statistics increasing in server.  Affected file
66           is silcd/server.c.
67
68         * The CLOSE command now marks backup router as self disconnected
69           to avoid resuming problems.  Affected file silcd/command.c.
70
71 Wed Sep 22 19:46:32 CEST 2004  Patrik Weiskircher <pat@icore.at>
72
73         * When using silc_net_create_connection[_async], and your system can
74           create IPv6 sockets, it will try to connect to the IPv6 host. 
75           Now it tries to connect to an IPv4 host if IPv6 fails. Affected 
76           file lib/silcutil/unix/silcunixnet.c
77
78 Fri Jun 18 19:26:58 CEST 2004  Pekka Riikonen <priikone@silcnet.org>
79
80         * Check for valid route when receiving packet from router and
81           when routing it to local server in the cell.  A patch from
82           Matt Miller.  Affected files silcd/router.c and server.c.
83
84 Sat May  1 13:55:54 CEST 2004  Patrik Weiskircher <pat@icore.at>
85
86         * Couldn't detach and reattach twice, because of the previous
87           commit. Affected file silcd/packet_receive.c
88
89 Fri Apr 30 19:40:28 CEST 2004  Patrik Weiskircher <pat@icore.at>
90
91         * Added check to ignore Port value if Initiator is FALSE. 
92           Remote router coudln't connect if Port was set. Affected file
93           silcd/serverconfig.c
94
95         * If some client tries to resume more than once at the same time,
96           server crashed. Router didn't crash, but showed odd behaviour
97           (didn't allow clients to join anymore, ..). Affected files
98           silcd/packet_receive.c silcd/idlist.h
99
100 Mon Mar 15 21:10:08 EET 2004  Pekka Riikonen <priikone@silcnet.org>
101
102         * Destroy the file transfer session in silc_client_file_close
103           with timeout.  Affected file lib/silcclient/client_ftp.c.
104
105         * Call SFTP server monitor in READ and WRITE after the actual
106           operations.  Affected file lib/silcsftp/sftp_server.c.
107
108 Wed Mar 10 21:30:02 EET 2004  Pekka Riikonen <priikone@silcnet.org>
109
110         * Create one configure script from configure fragments
111           (configure.ad).  This is a first step towards new distribution
112           system.  Affected files prepare, configure.in.pre,
113           lib/silcmath/mpi/configure.ad.
114
115 Wed Mar 10 18:35:24 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
116
117         * Removed expiring of client key pair.  Affected file is
118           irssi/src/silc/core/clientutil.c
119
120 Tue Mar  9 17:11:58 EET 2004  Pekka Riikonen <priikone@silcnet.org>
121
122         * Check the number of connections from real number of
123           connections instead of socket number, when deciding if
124           server is full.  Affected files are silcd/server.c,
125           server_internal.h and silcd.c.
126
127         * Clarified the connections_max meaning in General section
128           in doc/example_silcd.conf.in.
129
130         * The reconnect_keep_trying default value set to TRUE
131           if it is not defined in the config file.  Affected file
132           silcd/serverconfig.c.
133
134 Wed Mar  3 15:13:49 CET 2004  Pekka Riikonen <priikone@silcnet.org>
135
136         * Fixed crashbug in connection closing, after a protocol
137           completion callback, which might have closed it already.
138           Affected file silcd/server.c.
139
140         * Fixed rekey with PFS in backup router.  It did not allow
141           rekeys with PFS, and when the rekey protocol timedout
142           it crashed the backup router without the above fix.  Affected
143           file silcd/packet_send.c and server.c.
144
145 Sat Feb 28 16:25:09 EET 2004  Pekka Riikonen <priikone@silcnet.org>
146
147         * The silc_client_add_channel_private_key now returns the
148           private key context if pointer is given as argument.
149           Affected files are lib/silcclient/silcclient.h and
150           client_channel.c.
151
152         * Added support for using channel private keys in SILC
153           Client Library even if the private key mode is not set
154           on the channel.  Affected file lib/silcclient/client_channel.c.
155
156         * The channel private key used to decrypt message is now
157           delivered to the application in the 'channel_messageÃ' client
158           operation.  Affected files are lib/silcclient/silcclient.h
159           and client_channel.c.
160
161         * Fixed wrong arg type for user limit in CMODE command reply.
162           Affected file silcd/command.c.
163
164         * The user limit is now taken and saved to SilcClientEntry in
165           JOIN and CMODE command replies and in CMODE_CHANGE notify.
166           Affected files lib/silcclient/silcclient.h, command_reply.c
167           and client_notify.c.
168
169         * Added support to the new private message key indicator
170           packet.  Added a new function to the client library:
171           silc_client_send_private_message_key_request.  The sender
172           indicates to be initiator, and receiver is responder.
173           Added the indicator to the SilcClientEntry as 'prv_resp'
174           boolean.  Affected files are lib/silcclient/silcclient.h
175           client.[ch], and client_prvmsg.c.
176
177 Fri Feb 27 11:25:26 CET 2004  Pekka Riikonen <priikone@silcnet.org>
178
179         * Fixed the JOIN command calling when called with both
180          -auth and -founder.  Affected file is lib/silcclien/command.c.
181
182 Wed Feb 25 23:12:11 EET 2004  Pekka Riikonen <priikone@silcnet.org>
183
184         * Check watcher list for resumed clients as well.  Affected
185           file is silcd/packet_receive.c.
186
187 Tue Feb 24 16:49:10 EET 2004  Pekka Riikonen <priikone@silcnet.org>
188
189         * Implemented the user limit to the CMODE_CHANGE notify,
190           CMODE command reply and JOIN command reply in server.
191           Affected files are silcd/server.c, command.c, command_reply.c,
192           packet_send.c and packet_receive.c.
193
194 Mon Feb 23 23:31:15 EET 2004  Pekka Riikonen <priikone@silcnet.org>
195
196         * Defined SILC_STRFMT_END that must be used now with
197           silc_buffer_strformat, instead of SILC_STR_END.  Fixes
198           crashes on AMD64.  Affected files are lib/silcutil/silcbuffmt.h,
199           lib/silcclient/silcvcard.c, silcd/server_util.c.
200
201         * Fixed the adding of public key to the WATCH list in server.
202           Fixed the WATCH notify sending to client.  Affected files
203           are silcd/packet_send.[ch], command.c, server_util.c.
204
205         * Implemented the watching by public key in the SILC Client
206           Library and SILC Client.  Affected files are
207           lib/silcclient/command.c and client_notify.c.
208
209 Mon Feb 23 09:30:30 CET 2004  Pekka Riikonen <priikone@silcnet.org>
210
211         * Added support for public key watching in server.  Affected
212           files are silcd/server.c, server_internal.h, command.c,
213           server_util.c.
214
215 Sun Feb 22 19:03:59 EET 2004  Pekka Riikonen <priikone@silcnet.org>
216
217         * Added public key to the SIlcClientEntry.  Affected files
218           are lib/silcclient/silcclient.h, command_reply.c, idlist.c
219
220         * Fixed the get_clients_whois reply processing to return
221           exactly same entries server returned.  Makes it possible
222           to search using attributes.  Affected file is
223           lib/silcclient/idlist.c.
224
225 Sat Feb 21 19:21:57 EET 2004  Pekka Riikonen <priikone@silcnet.org>
226
227         * Save founder key to SilcChannelEntry.  Affected files are
228           lib/silcclient/silcclient.h, command_reply.c, idlist.c.
229
230 Fri Feb 20 20:37:38 EET 2004  Pekka Riikonen <priikone@silcnet.org>
231
232         * Call the monitor callback with _CLOSED status from the
233           silc_client_file_close.  Affected files are
234           lib/silcclient/client_fpt.c, silcclient.h
235
236         * Added silc_client_get_clients_whois which resolves using
237           WHOIS, and supports requested attributes as well.
238           Affected files are lib/silcclient/silcclient.h, idlist.c.
239
240 Fri Feb 19 21:09:22 EET 2004  Pekka Riikonen <priikone@silcnet.org>
241
242         * Added support for asking the destination filename where
243           the downloaded file is saved in the file transfer.  Affected
244           files are lib/silccilent/silcclient.h, client_ftp.c.
245
246 Wed Feb 18 02:46:17 EET 2004  Pekka Riikonen <priikone@silcnet.org>
247
248         * Fixed error handling in resuming data processing.  Affected
249           files are lib/silcclient/client_resume.c and client.c.
250
251 Tue Feb 17 19:34:30 EET 2004  Pekka Riikonen <priikone@silcnet.org>
252
253         * Fixed silc_client_send_private_message to return TRUE correctly.
254           Affected file lib/silcclient/client_prvmsg.c.
255
256         * Added topic to the SilcChannelEntry.  Affected files are
257           lib/silcclient/silcclient.h, command_reply.c, client_notify.c.
258
259 Fri Feb 13 14:19:14 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
260
261         * Use conn->cmd_ident for all silc_client_command_call()s.  Affected
262           file lib/silcclient/command.c
263
264 Fri Feb 13 13:53:45 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
265
266         * Convert all commands to UTF-8 before passing them to the
267           client library.  Still need to convert replies from UTF-8 to
268           the locale encoding.  Affected file
269           irssi/src/silc/core/silc-cmdqueue.c
270
271 Fri Feb 13 13:13:07 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
272
273         * redirect all silc_client_command_calls through a queueing framework.
274           This fixes /CYCLE and the annoying "nick change after auto-joining
275           a channel".  Furthermore it defines one central point where
276           command parameters can be UTF-8-ified.  Affected files
277           irssi/src/silc/core/Makefile, client_ops.c, silc-channels.c,
278           silc-servers.[ch], silc-core.c, silc-cmdqueue.[ch], silc-lag.c
279
280 Fri Feb 13 12:04:41 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
281
282         * use asynchronous connect() to establish router connections.
283           Fixes problem when the primary router goes down.  Affected files
284           silcd/server.c, silcd/server_backup.c
285
286 Thu Feb 12 20:09:59 EET 2004  Pekka Riikonen <priikone@silcnet.org>
287
288         * Added SILC_[32|64]_TO_PTR and SILC_PTR_TO_[32|64] macros.
289           Fixed various compilation warnings when type casting ints
290           to pointers or vice versa, of different size.  Updates around
291           the source free.
292
293 Tue Feb  3 23:25:17 EET 2004  Pekka Riikonen <priikone@silcnet.org>
294
295         * Surrogates not allowed in UTF-8 strings, updated decoder.
296           Affected file lib/silcutil/silcstrutil.c.  Added UTF-8
297           testers in lib/silcutil/tests/ directory.
298
299 Wed Jan 14 18:42:44 EET 2004  Pekka Riikonen <priikone@silcnet.org>
300
301         * Added SILC_CLIENT_CONN_ERROR_KE, ERROR_AUTH, ERROR_RESUME and
302           ERROR_TIMEOUT SilcClientConnectionStatus errors.  Affected
303           files are lib/silcclient/silcclient.h, client.c.
304
305 Mon Jan 12 13:01:10 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
306
307         * When resuming a session fails, notify the user that the session
308           file needs to be removed eventually.  Affected files
309           irssi/src/fe-common/silc/module-formats.[ch],
310           irssi/src/silc/core/client_ops.c.
311
312 Tue Jan 04 12:16:04 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
313
314         * Added DIST_SUBDIRS symbols to include all subdirs in distributions.
315           Affected files lib/silcutil/Makefile.am, lib/silcmath/Makefile.am
316
317         * Typofix in Irssi::Silc module.  Affected file
318           irssi/src/perl/silc/Silc.xs.
319
320 Tue Jan 04 02:43:44 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
321
322         * Changed the way NOTICE flagged messages are treated. Added support
323           for notices in queries and signing notices.  Affected files
324           irssi/default.theme; irssi/docs/help/in/notice.in;
325           irssi/src/fe-common/silc/module-formats.[ch], fe-silc-messages.c;
326           irssi/src/silc/core/client_ops.c, silc-channels.c, silc-servers.c
327
328         * Fixed typo in /ACTION help.  Affected file
329           irssi/docs/help/in/action.in
330
331 Mon Jan 03 23:26:38 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
332
333         * Fixed typo in perl module.  Affected file
334           irssi/src/perl/silc/Server.xs
335
336         * Changed the way ACTION flagged messages are treated. Added support
337           for actions in queries and signing actions.  Affected files
338           irssi/default.theme; irssi/docs/help/in/action.in;
339           irssi/src/fe-common/silc/module-formats.[ch], fe-silc-messages.c,
340           fe-silc-queries.c; irssi/src/silc/core/client_ops.c, silc-channels.c,
341           silc-servers.[ch]
342
343 Mon Jan 03 16:04:29 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
344
345         * Incorrectly reported error when client had to be resolved from
346           server in /SMSG.  Affected file irssi/src/silc/core/silc-servers.c
347
348 Sat Jan  3 16:37:15 EET 2004  Pekka Riikonen <priikone@silcnet.org>
349
350         * Fixed whois public key hash table deleting and adding in
351           detached client case.  Affected file silcd/packet_receive.c.
352
353 Sat Jan 03 12:15:38 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
354
355         * Changed filenames of silc/fe module not to collide with filenames
356           from core/fe.  Also seperated public messages printing from
357           query messages printing.  Affected files are all in
358           irssi/src/fe-common/silc.
359
360 Sat Jan  3 12:18:07 EET 2004  Pekka Riikonen <priikone@silcnet.org>
361
362         * Fixed the invite process handling during joining to use
363           correct server name for the client that is matched against
364           the invite string for the channel.  Wrong server name caused
365           inability to join the channel.  Affected file is
366           silcd/command.c.
367
368 Fri Jan  2 23:34:17 EET 2004  Pekka Riikonen <priikone@silcnet.org>
369
370         * Fixed the CUMODE channel founder authentication on normal
371           server to not remove the founder rights on existing founder
372           before checking that router accepts the mode change.  Affected
373           files are silcd/command.c and silcd/packet_receive.c.
374
375         * Remove the server entry correctly when rekey timeouts and
376           remote router connection on normal server is closed.  Fixes
377           a crash where server uses the freed server entry.  Affected
378           file silcd/server.c.
379
380 Fri Jan 02 10:28:15 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
381
382         * Add /SILCNET [ADD|REMOVE|LIST] command to manage different SILC
383           networks.  This is the first step in solving the bug about
384           /SERVER ADD -silcnet <silcnet>.  Affected files
385           irssi/docs/in/silcnet.in; irssi/src/fe-common/silc/Makefile.am,
386           fe-silcnet.c, fe-common-silc.c, module-formats.[ch];
387           irssi/src/silc/core/silc-chatnets.[ch], silc-core.c, Makefile.am
388
389 Thu Jan 01 20:11:32 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
390
391         * /SMSG and /MMSG now correctly create new queries. Affected files
392           irssi/src/fe-common/silc/fe-messages.c, irssi/scripts/silc-mime.pl
393
394         * Add basic support for SILC protocol specific variables in perl.
395           Affected files irssi/src/perl/silc/*, irssi/configure.in,
396           irssi/src/perl/Makefile.am
397
398 Wed Dec 31 17:06:55 CET 2003  Jochen Eisinger <jochen@penguin-breeder.org>
399
400         * Don't use silc_get_input, it's obviously not reliable.  Fixes
401           issue when the current key expires.  Affect file
402           irssi/src/silc/core/clientutils.c
403
404         * Make the session data filename configurable.  This makes it
405           possible to have different session files for different
406           SILC networks.  Affected files irssi/src/silc/core/silc-core.c,
407           client_ops.[ch], silc-servers.c,
408           irssi/src/silc/fe-common/silc/module-formats.[ch]
409
410         * Use the same set of libtool files for the MPI lib as for the
411           rest of the toolkit.  Affected files lib/silcmath/mpi/config.guess,
412           config.sub, configure.in, install-sh, missing, mkinstalldirs
413
414 Sun Dec 28 21:57:39 EET 2003  Pekka Riikonen <priikone@silcnet.org>
415
416         * Fixed server statistics decrementing error to not go to
417           negative.  Affected file silcd/packet_receive.c.
418
419 Sat Dec 20 14:42:36 EET 2003  Pekka Riikonen <priikone@silcnet.org>
420
421         * Use silc_server_query_add_error to add error in public key
422           search error.  Added support in send_reply to send errors
423           without specific argument.  Affected file silcd/server_query.c.
424
425         * Fixed the WHOIS, IDENTIFY and WHOWAS error handling in SILC
426           Client for NO_SUCH_NICK.  It was against the protocol specs.
427           Affected file irssi/src/silc/core/client_ops.c.
428
429         * Added backwards support for the wrong NO_SUCH_NICK error sending
430           in server.  To be removed in SILC Server 1.0.  Both old clients
431           and clients with fixed error handling now works.  Affected file
432           silcd/server_query.c.
433
434 Sat Dec 20 00:44:47 CET 2003  Patrik Weiskircher <pat@icore.at>
435
436         * fixed a bug in the whois using attributes function where no
437           error was sent if no nickname and client id but the attributes were
438           given to whois. Affected file silcd/server_query.c
439
440 Tue Dec 16 21:34:59 CET 2003  Patrik Weiskircher <pat@icore.at>
441
442         * remove public key from public key hashtable on detach. Affected
443           file silcd/packet_receive.c
444
445         * free public key hashtable before removing clients on server
446           shutdown. Affected file silcd/server.c
447
448         * remove public key prior deleting client-data on killing a client.
449           Affected file silcd/server_util.c
450
451 Sat Dec 06 21:35:14 CET 2003  Patrik Weiskircher <pat@icore.at>
452
453         * Getting the MOTD from other servers works now. Affected
454           files are silcd/command.c and silcd/command_reply.c
455
456 Thu Dec 04 11:33:46 CET 2003  Jochen Eisinger <jochen@penguin-breeder.org>
457
458         * Initialize the variable idletag, since it is tested in
459           silc_core_deinit for its default value.  Affected file
460           irssi/src/silc/core/silc-core.c
461
462 Sun Nov 30 19:47:02 CET 2003  Patrik Weiskircher <pat@icore.at>
463
464         * Fixed signed channel messages across cells. Affected file
465           silcd/packet_send.c
466
467 Fri Nov 28 19:13:21 EET 2003  Pekka Riikonen <priikone@silcnet.org>
468
469         * Changed the SILC_LOG_* macros to not be empty if SILC_DEBUG
470           is not defined.  They can now be safely used in if-statements
471           without braces.  Affected file lib/silcutil/silclog.h.
472
473         * Added the checks for backup closing connection due to error
474           (local or remote) and thus not allow the resuming to occur
475           in reconnect.  Affected files are silcd/packet_send.c
476           and server.c.
477
478 Tue Nov 25 15:20:59 EET 2003  Pekka Riikonen <priikone@silcnet.org>
479
480         * Help file updates.  Affected files in irssi/src/docs/help/in/.
481
482 Wed Nov 23 20:51:21 CET 2003  Patrik Weiskircher <pat@icore.at>
483
484         * Fixed channel messages across cells. Affected file
485           silcd/packet_send.c
486
487 Wed Nov 12 11:34:56 EET 2003  Pekka Riikonen <priikone@silcnet.org>
488
489         * Fixed file transmission accepting in client library to not
490           start the negotiation if user hasn't accepted the transfer,
491           instead create new session for resent transfer.  Affected
492           file lib/silcclient/client_ftp.c.
493
494         * Show the session ID in the file transmision list.  Remove
495           session from list that failed to transfer.  Switch the current
496           session automatically after transmission, and in errors, to new
497           session if other sessions exists in the transfer list.  Affected
498           files are irssi/src/silc/core/silc-servers.c,
499           irssi/src/fe-common/silc/modfule-formats.c.
500
501 Mon Nov 10 14:41:40 CET 2003  Jochen Eisinger <jochen@penguin-breeder.org>
502
503         * Fixed MIME header parsing for the hopefully last time.  Affected
504           file lib/silcutil/silcstrutil.c
505
506 Mon Nov 10 13:03:46 EET 2003  Pekka Riikonen <priikone@silcnet.org>
507
508         * Rewrote the PKCS#1 routines.  Added lib/silccrypt/silcpkcs1.[ch].
509
510         * The SILC RNG is now gauranteed to return non-zero random
511           values.  Affected files are lib/silccrypt/silcrng.[ch].
512
513 Sun Nov  9 20:44:56 EET 2003  Pekka Riikonen <priikone@silcnet.org>
514
515         * Fixed nickname formatting when changing only case of the
516           nickname.  Affected file lib/silcclient/idlist.c.
517
518 Sun Nov  9 19:33:59 CET 2003  Jochen Eisinger <jochen@penguin-breeder.org>
519
520         * Fixed a memory leak and incorrect printing of the "appears as"
521           message.  Affected file irssi/src/silc/core/client_ops.c
522
523 Sun Nov  9 17:45:11 EET 2003  Pekka Riikonen <priikone@silcnet.org>
524
525         * Added CRT (Chinese Remainder Theorem) supported RSA
526           private keys and private key operations.  This significantly
527           increases private key operation efficiency.  No compatibility
528           issues with new or old private keys.  Affected files are
529           lib/silccrypt/rsa.[ch], rsa_internal.h and pkcs1.c.
530
531 Sat Nov  8 13:08:53 EET 2003  Pekka Riikonen <priikone@silcnet.org>
532
533         * Fixed GCC-3.3.2 related compilation warnings from the
534           source tree.
535
536 Fri Nov  7 23:01:47 EET 2003  Pekka Riikonen <priikone@silcnet.org>
537
538         * Removed RC6 from distributions.
539
540 Fri Nov  7 19:38:42 EET 2003  Pekka Riikonen <priikone@silcnet.org>
541
542         * Added some better comments to lib/silccrypt/silcpkcs.h,
543           optimized some routines in lib/silccrypt/silcpkcs.c.
544           Added test_silcpkcs into lib/silccrypt/tests/.
545
546         * Fixed silc_rng_global_init to actually init the global RNG
547           if RNG wasn't provided for it.  Affected file is
548           lib/silccrypt/silrng.c.
549
550 Thu Nov  6 21:08:28 EET 2003  Pekka Riikonen <priikone@silcnet.org>
551
552         * Added silc_hash_table_find_by_context_ext.  Affected files
553           lib/silcutil/silchashtable.[ch].
554
555         * Save the public key on normal server in WHOIS command reply
556           from attributes, if present, and add it to public key hash
557           table.  Fixes WHOIS resolving by public key on normal server.
558
559           Optimized the attributes resolving on normal server to not
560           resolve if we resolved them already from router.
561
562           Affected files are silcd/server_query.c, command_reply.c.
563
564 Wed Nov  5 19:36:30 CET 2003 Patrik Weiskircher <pat@icore.at>
565
566         * Added support for whois using attributes.
567           Affected files silcd/command_reply.c, silcd/packet_receive.c,
568           silcd/server.c, silcd/server_internal.h, silcd/server_query.c,
569           silcd/server_util.c
570
571         * Added support for whois using public key attribute to /WHOIS i
572           client command. Affected files irssi/docs/help/in/whois.in,
573           irssi/src/silc/core/silc-servers.c, lib/silcclient/command.c
574
575 Wed Nov  5 23:37:36 EET 2003 Pekka Riikonen <priikone@silcnet.org>
576
577         * Fixed UMODE setting in server when the client has anonymous
578           mode set.  The mode setting was not working.  Affected file
579           silcd/command.c.
580
581 Mon Nov  2 11:36:08 CET 2003 Jochen Eisinger <jochen@penguin-breeder.org>
582
583         * Fixed some bugs and typos related to sending split messages.
584           Print notification when sending messages with /MMSG.  Affected
585           files irssi/scripts/silc-mime.pl, irssi/src/silc/core/client_ops.c
586
587 Fri Oct 31 12:33:59 EET 2003 Pekka Riikonen <priikone@silcnet.org>
588
589         * Optimized the socket referencing in packet routines, client
590           library and server.  Affected files are lib/silccore/silcpacket.c,
591           lib/silcclient/client.c and silcd/server.c.
592
593         * If silc_socket_set_qos is given with NULL arguments the QoS is
594           reset from the socket.  Affected files are
595           lib/silcutil/silcsockconn.[ch].
596
597 Thu Oct 30 21:23:24 CET 2003 Jochen Eisinger <jochen@penguin-breeder.org>
598
599         * Add a /LISTKEYS command which lists the locally cached
600           client and server keys.  Affected files
601           irssi/src/fe-common/module-formats.[ch],
602           irssi/src/silc/core/silc-{channels,servers}.c
603           irssi/docs/help/in/listkeys.in
604
605 Thu Oct 30 20:23:40 EET 2003 Pekka Riikonen <priikone@silcnet.org>
606
607         * Check that packet queue purging was successful.  Affected
608           files lib/silcclient/client.c and silcd/packet_send.c.  Related
609           to MAC failed errors.
610
611         * Do not clear the inbuf even if it is empty if QoS was applied
612           to it.  Otherwise the QoS data is cleared and MAC failed error
613           will occur.  Affected file lib/silccore/silcpacket.c.
614
615         * Use the rekey period time as rekey protocol timeout value.
616           If the rekey does not succeed during the rekey period there's
617           something very wrong, and we most likely end up with wrong keys,
618           do graceful reconnect then.   Affected file silcd/server.c.
619
620         * Take reference of the socket in the parser context, as it's
621           possible to have the parsers in queue after the socket is
622           disconnected and this may cause crash.  Affected files are
623           lib/silccore/silcpacket.c, lib/silcclient/client.c and
624           silcd/server.c.
625
626 Thu Oct 30 17:01:01 EET 2003 Pekka Riikonen <priikone@silcnet.org>
627
628         * Fixed KICK command reply sending, it sent to replies.
629           Affected file silcd/command.c.
630
631 Wed Oct 30 14:06:52 CET 2003 Jochen Eisinger <jochen@penguin-breeder.org>
632
633         * Finish the silc-mime.pl script. It now supports MIME type
634           guessing using magic files, signing data messages, executing
635           MIME handlers in background. Affected files
636           irssi/scripts/silc-mime.pl and irssi/docs/help/in/mmsg.in
637
638         * Changed MIME signal handler to make things easier for the perl
639           script. Affected files irssi/src/silc/core/client_ops.c,
640           silc-servers.c, and irssi/docs/signals.txt
641
642         * Cleaned up the silc_mime_parse function and fixed detection
643           of wrapped header lines. Affected file lib/silcutil/silcstrutil.c
644
645 Sun Oct 26 21:19:02 EET 2003 Pekka Riikonen <priikone@silcnet.org>
646
647         * Resolve the IP for file transfer listener from the connection
648           socket.  Affected file lib/silcclient/client_ftp.c.
649
650         * Accept NULL hostname parameter in the functions
651           silc_net_check_[local|remote]_by_socket.  Do not reverse lookup
652           if hostname is not wanted.
653
654 Fri Oct 24 21:24:12 CEST 2003  Jochen Eisinger <jochen@penguin-breeder.org>
655
656         * Fixed race condition between silc_client_init and
657           my_silc_scheduler. Affected file irssi/src/silc/core/silc-core.c
658
659 Fri Oct 24 16:43:40 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
660
661         * Fixed file transfer connection closing when SIGNOFF for
662           the client is received from server.  Affected file is
663           lib/silcclient/client_ftp.c.
664
665 Tue Oct 21 13:35:57 CEST 2003  Pekka Riikonen <priikone@silcnet.org>
666
667         * Check for disconnected socket in QUIT callback.  Affected
668           file silcd/command.c.
669
670 Thu Oct 21 09:43:17 CEST 2003  Jochen Eisinger <jochen@penguin-breeder.org>
671
672         * Modified the MIME parsing to allow \n and \r\n as delimiters.
673           Affected files lib/silcutil/silcstrutil.c
674
675         * Cleaned up the escape/unescape functions for correctness and
676           speed. Affected file irssi/src/silc/core/client_ops.c
677
678         * Removed handling for data messages with Content-Type: text/*,
679           moved parsing of MIME headers to the signal handler, added
680           support for signing and verifying data messages. Affected
681           files are irssi/docs/signals.txt, irssi/src/silc/core/client_ops.c,
682           irssi/src/silc/core/silc-{servers,channels}.c
683
684         * Added a perl script for handling data messages based on
685           information read from Mailcap files. New file
686           irssi/scripts/silc-mime.pl
687
688 Mon Oct 20 16:08:22 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
689
690         * Added new SILC_MESSAGE_FLAG_ACK that can  be used to
691           acknowledge recepetion of a message to the sender.  Updated
692           protocol specs.
693
694 Sat Oct 18 11:55:33 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
695
696         * Unregister channel key saving callback when deleting channel.
697           Affected file lib/silcclient/idlist.c.
698
699         * Do not remove the client from channels in NOTIFY_TYPE_SIGNOFF
700           before calling notify client operation.  Affected file is
701           lib/silcclient/client_notify.c.
702
703         * Unregister QoS tasks when deleting the socket connection.
704           Affected files lib/silcutil/silcsockconn.[ch],
705           unix/silcunixsockconn.c.
706
707         * Implemented latest presence-attrs draft changes.  Affected
708           files lib/silccore/silcattrs.h and
709           irssi/src/silc/core/silc-queries.c.
710
711 Tue Oct 14 18:24:53 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
712
713         * Save old channel keys in list to allow more rapid change
714           of channel keys if server for some reason does that.  This
715           avoids loosing so many channel messages due to not having
716           key to decrypt.  Affected file lib/silcclient/silcclient.h,
717           idlist.c and client_channel.c.
718
719 Mon Oct 13 21:37:47 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
720
721         * Continued backup router tests and fixes.  Affected files
722           silcd/server_backup, server_util.c, server.c.  See TODO.
723
724 Sun Oct 12 19:58:18 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
725
726         * Fixed SERVER_SIGNOFF handling in servers.  The client
727           was removed from wrong list thus not removing the client
728           at all.  Affected file silcd/packet_receive.c.
729
730         * Do not execute rekey protocol for disabled connections as
731           it would never go through.  Affected file silcd/server.c.
732
733         * Added timeout for rekey protocol to catch if the protocol
734           never executes successfully.  Affected files silcd/server.c
735           and protocol.h.
736
737 Sat Oct 11 15:39:22 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
738
739         * Abandon packet processing for disconnected sockets.  Check
740           this always after calling packet processing callback.
741           Affected file lib/silccore/silcpacket.c.
742
743         * Fixed double registration disconnection code in server.
744           Closed wrong connection.  Affected file silcd/packet_receive.c.
745
746 Fri Oct 10 16:27:12 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
747
748         * On normal server reconnect to primary during resuming 4
749           times, then give up.  Affected file silcd/server_backup.c.
750
751         * If during reconnecting to routers we notice we have router
752           connection but no primary router set, the server is in desync.
753           Reconnect to primary to restore network.  Affected file
754           silcd/server.c.
755
756         * Assure that only one protocol is exeucting at the same time.
757           Added checks for all protocols.  Affected files are
758           silcd/server.c and server_backup.c.
759
760 Thu Oct  9 20:24:09 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
761
762         * Check that a string is not already part on invite/ban
763           string when processing it.  Affected file silcd/server_util.c.
764
765 Thu Oct  9 12:06:40 CEST 2003  Pekka Riikonen <priikone@silcnet.org>
766
767         * Fixed the CUMODE_CHANGE for founder mode changes to comply
768           with 1.2 version of the protocol.  Affected file is
769           silcd/packet_receive.c.
770
771 Wed Oct  8 19:41:15 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
772
773         * ERR_BAD_PASSWORD now returns the Channel ID of the channel
774           where the passphrase was given.  Affected file is
775           silcd/command.c.
776
777 Wed Oct  8 09:32:12 CEST 2003  Pekka Riikonen <priikone@silcnet.org>
778
779         * INVITE and BAN notifys are now delivered from routers to
780           servers (but not clients) on the channel.  Updated specs and
781           code.  Affected files silcd/packet_[send|receive].[ch],
782           command.c, server.c and server_util.c.
783
784         * Implemented INVITE and BAN announcing.  Affected files are
785           silcd/server.[ch], server_util.c.
786
787         * Implemented SilcStatus error type argument returning in
788           command reply error in server.  Affected file silcd/command.c.
789
790         * Implemented SilcStatus argument returning in comand reply
791           in client library.  The command_reply client operation now
792           returns error specific arguments as well.  Affected files
793           are lib/silcclient/command_reply.[ch], client_resume.c,
794           lib/silccore/silcstatus.[ch].
795
796 Sun Oct  5 20:22:08 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
797
798         * Backup router protocol version 1.2 implemented.  Testing still
799           required.  Affected files in silcd/server_backup.[ch], server.c,
800           packet_receive.c and server_internal.h.
801
802 Sun Oct  5 12:36:37 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
803
804         * silc_client_send_[channel|private]_message now return TRUE
805           or FALSE.  Affected file lib/silcclien/client_channel.c and
806           client_prvmsg.c.
807
808 Thu Oct  2 17:03:09 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
809
810         * Check for explicit nickname in INVITE and BAN processing
811           during join as well (and don't expect only wildcards in
812           invite/ban strings).  Affected file silcd/command.c.
813
814         * Fixed the INVITE and BAN by public key.  The public key saved
815           is the PK payload (as specified) not the raw data.  Affected
816           file silcd/server_util.c.
817
818 Wed Oct  1 20:29:06 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
819
820         * UTF-8 text message support for actions and notices in SILC
821           Client.  Affected file irssi/src/silc/core/client_ops.c.
822
823         * silc_get_username and silc_get_real_name now returns sensible
824           data on Win32.  Patch by Toni Willberg.  Affected file is
825           lib/silcutil/win32/silcwin32util.c.
826
827 Sun Aug 24 23:35:19 CEST 2003  Jochen Eisinger <c0ffee@penguin-breeder.org>
828
829         * Provide a signal handler to send MIME encoded messages and emit
830           a signal when a MIME encoded message is received. Also document
831           the signals for usage with the perl interface.
832
833           A sample perl script will be supplied at a later point.
834
835           Affected files are irssi/docs/signals.txt,
836           irssi/src/silc/core/client_ops.[ch],
837           irssi/src/silc/core/silc-{channels,servers}.c
838
839 Sun Aug 24 12:58:30 CEST 2003  Jochen Eisinger <c0ffee@penguin-breeder.org>
840
841         * Use SILC_COMMAND_PING to estimate the round-trip time to the
842           server. Use this time to display a lag and disconnect when it
843           exceeds a specified limit.
844
845           Affected files are irssi/src/silc/core/silc-{lag,core}.c.
846
847 Mon Aug 11 17:14:17 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
848
849         * Remove the channel auth list in normal server if router
850           encofrces its list during connecting.  Send notify to channel
851           to remove the mode to remove the list.  Affected files are
852           silcd/server_util.c and silcd/packet_receive.c.
853
854 Wed Aug  6 14:52:04 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
855
856         * Added support for channel public keys.  Updated protocol specs
857           and implemented it.  Affected files are
858           silcd/command.c, command_reply.c, lib/silcclient/command.c,
859           lib/silcclient/command_reply.c.
860
861 Wed Jul 23 12:17:01 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
862
863         * Ignore SIGXFSZ and SIGXCPU signals in server.  They can
864           terminate the process on Linux.  Affected file silcd/silcd.c.
865
866 Mon Jun  2 19:13:27 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
867
868         * Check for NULL buffer in silc_buffer_clear.  Affected file
869           is lib/silcutil/silcbuffer.h.
870
871         * Simplified the backup router protocol by removing the _GLOBAL
872           types.  Updated protocol specs and the code.  Affected files
873           are silcd/server_backup.[ch].
874
875 Thu Apr 24 19:50:25 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
876
877         * Deny '@' and '!' from nicknames since they are reserved
878           by the SILC_COMMAND_INVITE and SILC_COMMAND_BAN commands.
879           Updated protocol specs and the code.
880
881           Affected files are silcd/server_util.[ch].
882
883 Wed Apr  9 18:51:59 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
884
885         * Fixed stack overflow in Irssi SILC client.  Affected
886           file irssi/src/silc/core/client_ops.c.
887
888         * Check that Host is set in ServerConnection and RouterConnection
889           in silcd.conf.  Affected file silcd/serverconfig.c.
890
891         * Fixed crash in server with protocol completion callbacks,
892           namely rekey and backup resuming protocols.  Affected files
893           are silcd/server_backup.c and silcd/server.c.
894
895         * Fixed rekey protocol to not restart if it is started already.
896           Affected files are lib/silcclient/client.c and
897           silcd/server.c.c
898
899 Mon Mar 17 18:35:24 EET 2003  Pekka Riikonen <priikone@silcnet.org>
900
901         * Rewrote SilcList, affected file lib/silcutil/silc*list.h.
902
903         * Fixed EOF handling in SILC Config, affected file
904           lib/silcutil/silcconfig.c.
905
906         * Fixed buffer overflows in lib/silcutil/silcstrutil.c.
907
908         * Fixed RESOLVING flag handling in JOIN notify and other
909           notifys to handle the resolvings correctly in client library.
910           Affected file lib/silcclient/client_notify.c.
911
912         * Do not send full INVITE and BAN lists in INVITE and BAN
913           notifys, only the changed information.  Affected file
914           silcd/command.c.
915
916         * Fixed INVITE notify sending in INVITE command, send it
917           only when needed.  Affected file silcd/command.c.
918
919         * Handle the founder key change properly in CMODE_CHANGE
920           notify.  Bug #122.  Affected file silcd/packet_receive.c.
921
922 Sun Mar  9 16:29:20 EET 2003  Pekka Riikonen <priikone@silcnet.org>
923
924         * Remove the mark for output (mark it only for input) after
925           purging outgoing queue.  Prevents the "Error in select()"
926           floods.  Affected file silcd/packet_send.c.
927
928         * Fixed incorrect connection deletion from client library
929           after calling "connect" client operation.  Could cause
930           crashes for example during reconnect timeouts.  Affected
931           files are lib/silcclient/client.c and
932           irssi/src/silc/core/client_ops.c.
933
934         * Check server private key file permissions before starting
935           the server.  Affected file silcd/serverconfig.c.
936
937 Tue Feb  4 22:53:26 EET 2003  Pekka Riikonen <priikone@silcnet.org>
938
939         * NULL terminate allocated string in silc_buffer_strformat.
940           Affected file lib/silcutil/silcbuffmt.c.
941
942         * Rewrote the invite/ban list string handling in server to
943           use SilcBuffer instead.  Affected files are silcd/command.c
944           and silcd/server_util.c.
945
946 Mon Feb  3 14:43:52 CET 2003  Pekka Riikonen <priikone@silcnet.org>
947
948         * Fixed double free in CMODE command when setting new HMAC
949           for channel.  Affected file silcd/command.c.
950
951         * Added couple of missing memset's to zero sensitive memory.
952           Affected files silcd/command.c, lib/silcclient/command.c.
953
954 Sun Jan 26 12:20:30 EET 2003  Pekka Riikonen <priikone@silcnet.org>
955
956         * Fixed a double free in INVITE command error handling in
957           server.  Affected file silcd/command.c.
958
959         * Added macros SILC_SWAB_[16|32] to swab byte order of
960           16-bit and 32-bit unsigned integers.  Affected file
961           lib/silcutil/silctypes.h.
962
963         * Use the SILC_SWAB_16 instead of htons() in server when
964           handling ports since the ports in structures are always
965           in little-endian order (regardless of platform).  Affected
966           file silcd/serverid.c and silcd/server_backup.c.
967
968 Tue Jan 21 17:18:04 EET 2003  Pekka Riikonen <priikone@silcnet.org>
969
970         * Send DISCONNECT in close admin command in server.  Affected
971           file silcd/command.c.
972
973         * Check whether we are already connecting to a remote router
974           (in addition of checking whether we are already connected)
975           before creating new connection.  Affected file silcd/server.c.
976
977 Thu Jan 16 18:47:00 EET 2003  Pekka Riikonen <priikone@silcnet.org>
978
979         * Added better compiler and compiler flags checking in
980           configure.
981
982         * Check that socket is valid after QoS is applied to data.
983           Affected file lib/silcutil/unix/silcunixsockconn.c.
984
985         * Make sure the socket connecetion is not closed to early
986           when closing connection in server.  Also make sure the
987           connection is always closed after error in a protocol.
988           Affected file silcd/server.c.
989
990 Wed Jan 15 11:03:36 CET 2003  Pekka Riikonen <priikone@silcnet.org>
991
992         * Removed --session and --dummy options from Irssi SILC Client.
993           -d option is available only if --enable-debug was given.
994           Affected files are irssi/src/silc/core/silc-core,
995           irssi/src/core/session.c and irssi/src/fe-text/silc.c.
996
997 Tue Jan 14 12:25:09 CET 2003  Pekka Riikonen <priikone@silcnet.org>
998
999         * Added silc_buffer_steal to steal the data from the buffer.
1000           Affected file lib/silcutil/silcbuffer.h.
1001
1002 Sat Jan 11 18:16:29 CET 2003  Giovanni Giacobbi <giovanni@giacobbi.net>
1003
1004         * Fixed server crash with double Primary block in config file.
1005
1006           Fixed also various memory leaks around the config file
1007           parser.  Affected files lib/silcutil/silcconfig.c,
1008           silcd/serverconfig.c.
1009
1010         * Changed my nickname (Johnny Mnemonic) to my real name, this
1011           means that bugs introduced by him were actually introduced
1012           by me!
1013
1014 Tue Jan  7 21:58:53 CET 2003  Jochen Eisinger <c0ffee@penguin-breeder.org>
1015
1016         * Don't display "foo appears as foo\nYou're now known as foo"
1017           messages.  Affected file irssi/src/silc/core/client_ops.c
1018
1019 Tue Jan  7 20:08:15 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1020
1021         * Fixed error handling of invalid client entry when calling
1022           commands in server.  Fixes a crash.  Affected file
1023           silcd/command.c.
1024
1025 Thu Dec 26 14:19:29 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1026
1027         * Added some sanity checks in server for correctness of the
1028           server configuration.  Affected file silcd/serverconfig.c.
1029
1030 Fri Dec 20 10:47:59 CET 2002  Pekka Riikonen <priikone@silcnet.org>
1031
1032         * Prevent endless resolving of user informations in USERS
1033           command by checking the command reply status correctly.
1034           Affected file lib/silcclient/command_reply.c.
1035
1036 Tue Dec 17 10:05:00 CET 2002  Pekka Riikonen <priikone@silcnet.org>
1037
1038         * Fixed file writing on WIN32 to use O_BINARY flag.  Affected
1039           file is lib/silcutil/silcfileutil.c.  A patch by Matthew
1040           Aldous <Matthew@Aldous.com>.
1041
1042         * Added better implementation using CriticalSection of
1043           SilcMutex on WIN32.  A patch by Mikko Lähteenmäki
1044           <mikko.lahteenmaki@pikabaana.net>.
1045
1046         * Added some Winsock WIN32 compatiblity defines into
1047           includes/silcwin32.h.
1048
1049 Mon Dec 16 19:33:05 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1050
1051         * Fixed double free in async host lookup code.  Affected file
1052           lib/silcutil/silcsockconn.c.
1053
1054         * On backup router handle now the SERVER_SIGNOFF from router
1055           for local connected servers too, and close the connections.
1056
1057           Do not process them as normally signing off servers when they
1058           really signoff by sending EOF fe, but always assume that
1059           router sends the SERVER_SIGNOFF.
1060
1061           Affected files silcd/server.c and silcd/packet_receive.c.
1062
1063         * Fixed socket unsetting when closing connections.  Affected
1064           files silcd/server.c and silcd/packet_send.c.
1065
1066         * Do not print the nickname in SERVER_SIGNOFF if we do not
1067           have it.  Prevents asserts in Irssi core.  It is possible we
1068           don't have the nick if it was just being resolved when server
1069           signoff.  Affected file irssi/src/silc/core/client_ops.c.
1070
1071 Thu Dec 12 23:22:50 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1072
1073         * Fixed autonick crashbug in client library.  Affected file
1074           lib/silcclient/client.c.
1075
1076         * Fixed Unix implementation of SilcMutex to really assert if
1077           the mutex is locked/unlcoked already.  Affected file
1078           lib/silcutil/unix/silcunixmutex.c.
1079
1080         * Fixed locking in silc_schedule_uninit.  It didn't lock
1081           when dispatching timeout tasks.  Affected file is
1082           lib/silcutil/silcschedule.c.
1083
1084         * Changed Win32 implementation of SilcThread to use modern
1085           Win32 interface.  Affected file is
1086           lib/silcutil/win32/silcwin32thread.c  A patch by Mikko L.
1087
1088 Thu Dec 12 12:06:59 CET 2002 Jochen Eisinger <c0ffee@penguin-breeder.org>
1089
1090         * Don't print signed messages when sending failed.  Affected files
1091           irssi/src/silc/core/silc-[servers.c/commands.h]
1092
1093         * Send adquate signal when founding a channel by joing it.  Affect
1094           file irssi/src/silc/core/client_ops.c
1095
1096 Wed Dec 11 21:46:19 CET 2002 Jochen Eisinger <c0ffee@penguin-breeder.org>
1097
1098         * Fix theme abstracts parsing.  Affected files irssi/default.theme,
1099           irssi/src/fe-common/core/themes.c
1100
1101 Wed Dec 11 20:20:07 EET 2002 Pekka Riikonen <priikone@silcnet.org>
1102
1103         * Fixed close command to use the port correctly when closing
1104           server connections.  Affected file silcd/idlist.c.
1105
1106         * Check for NULL outbuf in silc_socket_write.  It is possible
1107           that it is NULL is some odd case.  Affected files are
1108           lib/silcutil/[unix/win32]/silc[unix/win32]sockconn.c.
1109
1110         * Do not call final protocol callback for backup router
1111           resuming protocol when closing connection.  It is closed
1112           by timeout in case of error.  Affected file silcd/server.c.
1113
1114         * Backup reconnect to router if backup resuming protocol
1115           failed.  Affected file silcd/server_backup.c.
1116
1117 Wed Dec 11 10:01:26 CET 2002 Pekka Riikonen <priikone@silcnet.org>
1118
1119         * Fixed double free in SKE library error hadling when signature
1120           error occurred.  Affected file lib/silcske/silcske.c.
1121
1122         * Save the fingerprint to new SilcClientEntry after changing
1123           nickname.  Affected file lib/silcclient/client_notify.c.
1124
1125         * Print SIGNOFF in Irssi SILC client only if the nickname is
1126           known.  Prevents asserts in Irssi core.  It is possible we
1127           don't have the nick if it was just being resolved when it
1128           quit.  Affected file irssi/src/silc/core/client_ops.c.
1129
1130 Tue Dec 10 21:47:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1131
1132         * Fixed double free in invite list adding code when adding
1133           invite strings.  Affected file silcd/server_util.c.
1134
1135 Fri Dec  6 17:40:24 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1136
1137         * More log printing during backup router protocol.  Affected
1138           file silcd/server_backup.c.
1139
1140         * Removed backwards support for old private key file format.
1141           Affected file lib/silccrypt/silcpkcs.c.
1142
1143         * Removed backwards support for not-so-strict decryption length
1144           check, it's strict now.  Affected lib/silccrypt/silccipher.c.
1145
1146         * GETKEY to update the client entrys fingerprint too.
1147           Affected file lib/silcclient/command_reply.c.
1148
1149         * Added --without-libtoolfix for package builders using weird
1150           wrappers around libtool (BSD at least).
1151
1152 Thu Dec  5 22:29:46 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1153
1154         * Fixed backup router bugs:  When backup resumes router and
1155           receives a CHANNEL_MESSAGE packet the backup must not act
1156           as router since the packet header decryption would be
1157           different.  Also, when relaying packets to channel, do
1158           not re-encrypt packets on backup that came from the primary
1159           since the connection isn't really router-router connection.
1160           Affected files silcd/server.c, silcd/packet_send.c.
1161
1162         * Added checks in encryption/decryption that encryption/decryption
1163           length sent as argument really is multiple by block size.  Helps
1164           catching really weird bugs like the above backup router bugs
1165           when packets are being decrypted in wrong way.  Affected files
1166           lib/silccore/silcpacket.c, and lib/silccrypt/silccipher.c.
1167
1168         * Fixed padding generation in private key file encryption.
1169           Affected file lib/silccrypt/silcpkcs.c.
1170
1171 Thu Dec  5 16:35:23 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1172
1173         * Added ignore_message_signatures setting which can be used
1174           to ignore signatures in messages.  Affected files are
1175           irssi/src/silc/core/client_ops.c, silc-core.c.
1176
1177         * Fixed the libtoolfix to use command line options instead of
1178           environment variables.  They didn't work as expected.  Now,
1179           the libtool is fully run-time configurable.
1180
1181 Wed Dec  4 21:08:52 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
1182
1183         * Verify signature payload for signed messages. Affected files
1184           irssi/src/silc/core/client_ops.h, irssi/src/silc/core/silc-servers.c,
1185           irssi/src/silc/core/silc-core.h
1186
1187         * Display signature verification result in public and private
1188           messages using theme abstracts. See irssi/default.theme for
1189           examples on their usage. Affected files
1190           irssi/default.theme, irssi/src/fe-common/silc/fe-messages.h,
1191           irssi/src/fe-common/silc/module-formats.[ch],
1192           irssi/src/fe-common/silc/fe-common-silc.c,
1193           irssi/src/fe-common/silc/Makefile.am
1194           irssi/src/fe-common/core/fe-messages.[ch]
1195
1196         * Fixed bugs in Irssi's theme parsing. Affected files
1197           irssi/src/fe-common/core/themes.c
1198
1199 Wed Dec  4 18:29:13 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1200
1201         * Calculate the correct length for signed messages before
1202           encrypting, it must be multiple by block size.  Affected
1203           file lib/silccore/silcmessage.c.
1204
1205         * silc_message_signed_get_public_key returns now both
1206           decoded and encoded public key.  Affected files are
1207           lib/silccore/silcmessage.[ch].
1208
1209         * Added libtoolfix script that makes the libtool more generic
1210           and configurable in run-time.  Now we can specify in run-time
1211           if what kind of libraries we want to create, regardless of
1212           configuration.  SIMs are now creates even if --disable-shared
1213           was explicitly given.
1214
1215 Tue Dec  3 23:26:55 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1216
1217         * Fixed founder key sending in CMODE command in client.
1218           Affected file lib/silcclient/command.c.
1219
1220         * Fixed CUMODE founder authentication in server to not check
1221           for client's public key since it's not supposed to do that.
1222           Affected file silcd/command.c.
1223
1224 Tue Dec  3 12:02:41 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
1225
1226         * Set realname and hostname in NICK_REC records. Affected file
1227           irssi/src/silc/core/silc-nicklist.c
1228
1229 Mon Dec  2 20:50:20 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1230
1231         * Remove 1.0 protocol backwards compat code from client
1232           library.
1233
1234         * Added more reliable check for whether nickname did change
1235           or not, or whether only Client ID changed in NICK_CHANGE
1236           notify.  Affected file lib/silcclient/client_notify.c.
1237           Fixes bug in '@' character handling in a nickname.
1238
1239         * Added support for automatically parsing signature from
1240           the message payload.  Added new function
1241           silc_message_get_signature to return the payload to
1242           application.  Affected files lib/silccore/silcmessage.[ch].
1243
1244         * Changed the private_message and channel_message client
1245           operations to deliver the SilcMessagePayload to the
1246           application too.  Application can use it fe. to get the
1247           signature from the message for verification.  Affected
1248           file lib/silcclient/silcclient.h, client_channel.c and
1249           client_prvmsg.c.
1250
1251         * Redefined the signed payload for message payloads.
1252           Updated protocol specs and implemented.
1253
1254 Mon Dec  2 16:28:29 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1255
1256         * Fixed wrong invite and ban list handling in server command
1257           reply.  Affected files are silcd/command_reply.c,
1258           silcd/server_util.[ch].
1259
1260 Sun Dec  1 20:48:17 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1261
1262         * Fixed CMODE setting in server when founder mode was set.
1263           Affected file silcd/command.c.  Bug #95.
1264
1265         * Added support to setting specific public key in CMODE in
1266           Irssi SILC client.  Affected file lib/silcclient/command.c.
1267
1268         * Added support to use specific public key in CUMODE in
1269           Irssi SILC Client.  Affected file lib/silcclient/command.c.
1270
1271         * Added support for inviting and banning by public key in
1272           Irssi SILC client.  Affected file lib/silcclient/command.c.
1273
1274         * Fixed fingerprint/babbleprint showing in invite and ban
1275           list command replys.  Affected file is
1276           irssi/src/silc/core/client_ops.c.
1277
1278 Sun Dec  1 16:32:03 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
1279
1280         * Format CMODE +c and +h to display both the mode and the argument
1281
1282 Sun Dec  1 18:17:22 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1283
1284         * Added test vectors and test programs for SHA-1, MD5,
1285           HMAC-SHA1 and HMAC-MD5.  New tests are located in
1286           lib/silccrypt/tests/.  Fixed also argument decoding bug in
1287           MD5 implementation.  Affected file lib/silccrypt/md5.c.
1288
1289         * Changed the channel private key and private message key
1290           generation (with static keys) to use SHA1 instead of MD5,
1291           as SHA1 is the mandatory hash function in SILC.  Affected
1292           file lib/silcclient/client_[channel/prvmsg].c.
1293
1294         * Changed the private key file encryption to use SHA1 instead
1295           of MD5.  Added support for the old generation and added
1296           automatic change of the key (to be removed later).  Affected
1297           files lib/silccrypt/silcpkcs.c.
1298
1299 Sat Nov 30 19:07:52 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1300
1301         * Load only files with .pub suffix in PublicKeyDir.  Affected
1302           file silcd/serverconfig.c.
1303
1304 Sat Nov 30 14:29:34 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
1305
1306         * Extended the SILC_SERVER_LOG_ERROR macro to all available logging
1307           channels.  Affected files silcd/silcd.c, silcd/server.h.
1308
1309         * Added the config directive PublicKeyDir for the client block.
1310           Affected files doc/exampe_silcd.conf.in, silcd/serverconfig.[ch].
1311
1312 Sat Nov 30 09:30:55 CET 2002  Pekka Riikonen <priikone@silcnet.org>
1313
1314         * Merged Toni's irssi/silc.conf patch.
1315
1316         * ROBODoc cleanup patch to lib/silccrypt/silcpkcs.h by johnny.
1317
1318         * Max alloc tests in allocation routines.  Affected file
1319           lib/silcutil/silcmemory.c.
1320
1321 Fri Nov 29 23:44:29 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1322
1323         * Fixed a typo in resuming code that fixed detach/resume code
1324           in server.  Bug #93.  Affected file silcd/packet_receive.c.
1325
1326 Thu Nov 28 17:17:11 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
1327
1328         * Do reverse lookups for server when /connecting. Affected files
1329           irssi/silc.conf, irssi/src/core/servers.c, irssi/src/core/network.c,
1330           irssi/src/core/net-nonblock.*
1331
1332 Thu Nov 28 16:19:18 CET 2002  Pekka Riikonen <priikone@silcnet.org>
1333
1334         * Added library versioning for shared libraries.  Affected
1335           files configure.in.pre and lib/Makefile.am.pre.
1336
1337 Wed Nov 27 21:51:52 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
1338
1339         * Display INVITE and BAN lists as specified by SILC 1.2
1340
1341 Wed Nov 27 16:01:11 CET 2002  Pekka Riikonen <priikone@silcnet.org>
1342
1343         * Do not send invite list back unless asked (when sending
1344           no arguments) or when list was modified.  Affected file
1345           silcd/command.c.
1346
1347         * Remove client from invite list in KILLED notify and in
1348           KILL command.  Affected file silcd/command.c and
1349           silcd/server.[ch].
1350
1351         * Fixed bugs in invite list handling in INVITE command.
1352           Affected files silcd/command.c and silcd/server_util.c.
1353
1354         * Merged with Irssi 0.8.6.
1355
1356         * Fixed UTF-8 in Irssi SILC Client, setlocale was missing.
1357           Affected file irssi/src/fe-text/silc.c.
1358
1359 Mon Nov 25 18:21:43 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1360
1361         * The silc_argument_get_[first/next] now return the argument
1362           type to caller.  Added silc_argument_payload_encode_one.
1363
1364           Affected files are lib/silccore/silcargument.[ch].
1365
1366         * Added support for the SILC 1.2 INVITE command and new
1367           invite lists to server.  Affected files are silcd/command.c,
1368           silcd/server_util.[ch] and silcd/packet_[receive/send].[ch].
1369
1370         * Added support for the SILC 1.2 BAN command and new
1371           ban lists to server.  Affected files are silcd/command.c,
1372           silcd/server_util.[ch] and silcd/packet_[receive/send].[ch].
1373
1374         * Added support to client sending new INVITE command.  Affected
1375           file is lib/silcclient/command.c.
1376
1377         * Added support to client sending new BAN command.  Affected
1378           file is lib/silcclient/command.c.
1379
1380         * Added support for removing client from invite list when kicked
1381           from channel, as SILC 1.2 dictates.  Affected files are
1382           silcd/packet_receive.c and silcd/command.c.
1383
1384 Sun Nov 24 18:26:42 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1385
1386         * If iv argument to silc_cipher_[encrypt/decrypt] is NULL, use
1387           automatically the cipher's internal IV.  Affected files
1388           lib/silccrypt/silccipher.[ch].
1389
1390         * Assure the RESUME_CLIENT packet is not sent to twice to
1391           backup router if the detached client was originated from
1392           the backup.  Affected file silcd/server.c.  Bug #76.
1393
1394         * Changed silc_sim_symname to not allocate memory.  Affected
1395           file lib/silcsim/silcsimutil.c.
1396
1397         * Fixed memory leaks with SIMs in server.  Affected files
1398           silcd/serverconfig.c, silcd/server.c.
1399
1400         * Fixed channel key distribution after resuming detached
1401           client.  Affected files silcd/packet_receive.c.
1402
1403         * Fixed channel's global_user boolean checking after detaching.
1404           Check it after changing the owner of the client not before.
1405           Affected file silcd/packet_receive.c.
1406
1407         * Fixed few double frees from client library.  Fixes at least
1408           Bug #81, possibly others too.
1409
1410         * UTF-8 decode topics also in JOIN command reply and TOPIC_SET
1411           notifys in Irssi SILC Client.  Affected file is
1412           irssi/src/silc/core/client_ops.c.  Bug #82.
1413
1414         * Applied Ville Räsänen's manual page and --mandir bugfix
1415           patch.  Affected files are configure.in.pre and Makefile.am.pre.
1416           Bug #88.
1417
1418 Fri Nov 22 18:34:20 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1419
1420         * Added support to backup router protocol for backup to tell
1421           normal server that it cannot use the backup router as primary
1422           because the primary isn't really down.  Updated protocol
1423           specs.
1424
1425         * Added support for primary router to tell backup router that
1426           resuming is not possible because the backup really isn't primary
1427           in the cell.  For example if backup disconnected itself the
1428           resuming is not allowed since the primary really did not
1429           go down.  Updated protocol specs.
1430
1431         * Removed MARS from crypto library.
1432
1433         * Defined the CTR mode and Randomized CBC mode in SILC.  The
1434           CTR mode is RECOMMENDED now in specification.  Defined also
1435           Serpent cipher as optional cipher.  Updated the protocol specs.
1436
1437 Thu Nov 21 12:43:28 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1438
1439         * Added support for inviting/banning by IP/MASK, public key,
1440           and explicit Client ID.  Redefined the command and notify
1441           types to allow easier forwards support for other methods
1442           of inviting/banning.  Updated protocol specs.
1443
1444         * Remove the client from channel's invite lists if the client
1445           is kicked or killed.  Updated protocol specs.
1446
1447         * Unified the Channel Message Payload and Private Message
1448           into one Message Payload.  Updated protocol specs and
1449           implemented.
1450
1451 Tue Nov 19 22:30:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1452
1453         * Don't wait for EOF after socket error has occurred, but
1454           close the connection.  Affected file is silcd/server.c.
1455
1456 Mon Nov 18 18:58:26 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1457
1458         * Added support for setting FOUNDER mode on channel with
1459           specific public key which can be set with CMODE command.
1460           Updated protocol specs and implemented in client and server.
1461
1462         * Fixed the Irssi SILC client to correctly shutdown the client
1463           library to avoid memory leaks.  Affected files are
1464           irssi/src/silc/core/silc-core.c and silc-servers.c.
1465
1466         * Deprecated the No Reply flag in SKE protocol and introduced
1467           "IV Included" flag which can be used to indicate that the IV
1468           is included in the ciphertext.  This makes it possible to use
1469           SILC on unreliable transport, such as UDP which may cause
1470           packet reordering and losses.  Updated protocol specs, did
1471           not implement yet.
1472
1473 Sun Nov 17 15:50:57 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1474
1475         * Fixed the MPI implementation of silc_mp_sizeinbase to return
1476           < 32 bit values in correct size.  Affected file is
1477           lib/silcmath/mp_mpi.c.
1478
1479 Sat Nov 16 13:14:45 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1480
1481         * Fixed the KE Start Payload parsing to check that mandatory
1482           fields are present.  Affected file lib/silcske/payload.c.
1483
1484         * Fixed compilation warnigs in Irssi SILC Client.  Affected
1485           files are irssi/src/silc/core/silc-query.c. client_ops.c.
1486
1487 Thu Nov 14 19:33:28 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
1488
1489         * Print "nick now appears as newnick" and update Irssi's nicklist
1490           when you change your nick to "nick". Closes #62
1491
1492         * Never format your own nick. Closes #63
1493
1494 Thu Nov 14 09:44:54 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
1495
1496         * SILC_UMODE_GONE changes are now propagated correctly to the
1497           Irssi client. Closes #54
1498
1499 Tue Nov 12 19:42:18 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
1500
1501         * Fixed example in /HELP KEY
1502
1503         * Added expando $j which expands to current SILC Client version
1504
1505 Tue Nov 12 19:46:39 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1506
1507         * Fixed public key decoding in crypto library.
1508
1509         * Added better error printing to SKE library.
1510
1511 Tue Nov 12 08:50:12 CET 2002  Pekka Riikonen <priikone@silcnet.org>
1512
1513         * Fixed NICK command to not crash if nickname was not sent.
1514
1515 Mon Nov 11 19:32:00 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1516
1517         * Added Encrypt-Then-MAC order to SILC packet MAC generation.
1518           Deprecated the old Encrypt-And-MAC order.  Updated protocol
1519           specs and implemented.
1520
1521         * Added Encrypt-Then-MAC order to Channel Message Payload MAC
1522           generation.  Updated specs and implemented.
1523
1524 Sun Nov 10 12:20:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1525
1526         * Added support for rekey before 2^32 sequence number wraps.
1527           Affected files in server and client library.
1528
1529         * Padding must be at least 8 bytes now.  Implemented and updated
1530           protocol specs.
1531
1532         * Compute maximum padding for authentication packets to make
1533           passphrase approximation attacks impossible.  Affected files
1534           in client library and in server.
1535
1536         * Fixed PING command sending in client library and handling in
1537           server.  The server ID must be ID Payload, not raw ID data.
1538           Affected files in server and client library.
1539
1540         * Defined that all public keys sent in commands and notify
1541           payloads are actually Public Key Payloads not raw public key
1542           data.  Updated protocol specs and implemented.
1543
1544         * Updated protocol version to 1.2.  Updated specs and code.
1545
1546         * Added ERR_UNSUPPORTED_PUBLIC_KEY and ERR_OPERATION_ALLOWED
1547           status types.  Updated specs and the code.
1548
1549         * Added support for normal client to kill its own entries from
1550           the network.  Updated protocol specs and the code.
1551
1552         * Defined the SILC_MESSAGE_FLAG_SIGNED.  Updated protocol specs
1553           and added initial implementation.
1554
1555         * Added MAC field to the Private Message Payload to protect
1556           against chosen ciphertext attacks.  Updated the protocol specs
1557           and implemented.
1558
1559         * Added idle and signon fields to the ATTRIBUTE_SERVICE
1560           attribute to indicate the user's current idle and signon time
1561           of a service.  Updated protocol specs and implemented.
1562
1563 Thu Nov  7 19:21:10 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1564
1565         * Added "do_not_bind" argument to silc_client_file_send what
1566           can be used to not bind locally but assume the file receiver
1567           provides the point of connect.  Usefull when sender is behind
1568           NAT device.  Affected file lib/silcclient/silcclient.h and
1569           client_ftp.c.
1570
1571         * Added -no-listener option to FILE SEND command in Irssi SILC
1572           client.  Affected file irssi/src/silc/core/silc-servers.c.
1573           Renamed FILE RECEIVE to FILE ACCEPT.
1574
1575         * Confirm passphrase for private key encryption in
1576           silc_create_key_pair and silc_change_private_key_passphrase.
1577           Affected files are lib/silcutil/silcapputil.c.
1578
1579 Thu Nov  7 10:05:28 CET 2002  Pekka Riikonen <priikone@silcnet.org>
1580
1581         * Move silc_client_packet_send back to internal, added
1582           silc_client_send_packet, a bit simpler function for application.
1583           Affected files lib/silcclient/silcclient.h, client.c and
1584           client_internal.h.
1585
1586         * Moved the SilcClientEntry, SilcChannelEntry and
1587           SilcServerEntry to silcclient.h to be public and documented
1588           them for application.  Affected files are
1589           lib/silcclient/silcclient.h and idlist.h.
1590
1591 Wed Nov  6 17:18:13 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1592
1593         * Fixed manual page installation patch by Ville Räsänen.
1594           USERS help page fix patch by Ville Räsänen
1595
1596         * Changed the silc_client_command_call interface to make
1597           the command call simpler for the application.  The library
1598           now handles the command line parsing, command finding and
1599           execution.  Application only needs to call the function
1600           with the command line.  Affected files are
1601           lib/silcclient/silcclient.h, command.[ch].
1602
1603         * Fixed silc_get_input to NULL-terminate the returned input.
1604           Affected file lib/silcutil/silcutil.c.
1605
1606         * Resolve the client's public key in JOIN command if the
1607           founder auth data is being requested but we don't know the
1608           client's public key.  Affected file silcd/command.c.
1609           Bug #53.
1610
1611 Mon Nov  4 16:02:59 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1612
1613         * Print notify for server opers when backup router comes
1614           online.  Affected file silcd/server.c.
1615
1616         * Fixed the INVITE command to send the invite list in
1617           command reply.  Affected file silcd/command_reply.c.
1618
1619         * Fixed MOTD command reply sending.  Affected file
1620           silcd/command.c.
1621
1622         * UTF-8 decode the topic in TOPIC command reply and LIST
1623           command reply in Irssi SILC client.  Affected file is
1624           irssi/src/silc/core/client_ops.c.
1625
1626 Sun Nov  3 17:59:15 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1627
1628         * Fixed the INVITE command to not crash Irssi SILC client
1629           when given without nickname argument.  AFfected file
1630           irssi/src/silc/core/client_ops.c.
1631
1632         * Fixed double free in WHOIS query on normal server when
1633           forwarding query to router.  Affected file is
1634           silcd/server_query.c.
1635
1636         * Fixed WATCH command reply handling on normal server which
1637           was missing altogether.  Affected file silcd/command_reply.c.
1638           Bug #44.
1639
1640 Sun Nov  3 00:42:05 EET 2002  Mika Boström <bostik@lut.fi>
1641
1642         * Added man-pages for silc(1), silcd(8) and silcd.conf(5).
1643           Included yodl sources for each of these. Also modified
1644           Makefile.am prototype to install these files to proper
1645           locations. Updated CREDITS. Affected file Makefile.am.pre,
1646           new files doc/*.yo, doc/silc.1, doc/silcd.conf.5,
1647           doc/silcd.8.
1648
1649 Sat Nov  2 21:26:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1650
1651         * Added support for encrypted private key files.  Now
1652           passphrase must be provided when new key pair is created
1653           (can be empty though), and prompted when loading the
1654           private key.  Added support for loading the old-style
1655           non-encrypted private keys as well.  Affected files
1656           lib/silccrypt/silcpkcs.[ch], Irssi SILC client and
1657           SILC Server.
1658
1659         * Fixed silc_get_input to accept input on all terminals.
1660           Affected file lib/silcutil/silcutil.c.
1661
1662         * Moved the Irssi SILC client key loading and other stuff
1663           to be called after the arguments and UI is initialized.
1664           Affected file irssi/src/silc/core/silc-core.c.  Bug #31.
1665
1666         * Added -P option to Irssi SILC client which can be used
1667           to change the passphrase of the private key.  Affected
1668           file irssi/src/silc/core/silc-core.c.
1669
1670         * Added silc_change_private_key_passphrase apputil routine
1671           to lib/silcutil/silcapputil.[ch].
1672
1673 Sat Nov  2 12:53:09 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1674
1675         * Fixed connection closing in client library to not crash.
1676           Moved the connection freeing totally to function
1677           silc_clinet_del_connection.  Affected file
1678           lib/silcclinet/client.c.
1679
1680 Fri Nov  1 18:57:02 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1681
1682         * Changed includes/silcincludes.h to silcincludes.h.in to
1683           include configuration specific information.  The silcdefs.h
1684           is not included in to installation anymore (it's only
1685           compilation time header).
1686
1687 Fri Nov  1 10:30:26 CET 2002  Pekka Riikonen <priikone@silcnet.org>
1688
1689         * Moved the SilcClient and SilcClientConnection from client.h
1690           to the public lib/silcclient/silcclient.h.  Changed the
1691           structures a bit.
1692
1693 Thu Oct 31 22:44:07 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1694
1695         * If version string in silc_clinet_alloc is NULL the library
1696           puts it automatically.  Affected file lib/silcclient/client.c.
1697
1698         * Changed the version strings from variables to #define's
1699           in includes/silcversion.h.
1700
1701 Wed Oct 30 16:17:30 CET 2002  Pekka Riikonen <priikone@silcnet.org>
1702
1703         * Added shared library complation support.
1704
1705 Tue Oct 29 21:48:55 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1706
1707         * Added lib/silcutil/silcapputil.[ch] for application
1708           utility functions.  It includes routines for applications'
1709           convenience.  Added silc_create_key_pair, silc_show_public_key
1710           and silc_load_key_pair functions.
1711
1712 Tue Oct 29 17:36:44 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1713
1714         * Send RESUME_CLIENT packet from router to backup routers
1715           to in resuming.  Affected file silcd/packet_receive.c.
1716
1717 Mon Oct 28 21:23:39 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1718
1719         * In IDENTIFY command parsing, send all other IDs except
1720           Client IDs explicitly to router for resolving on normal
1721           server.  Also check that ID received in WHOIS command is
1722           always Client ID, others are not allowed.  Affected file
1723           silcd/server_query.c.
1724
1725         * Merged latest changes from irssi.org CVS.
1726
1727 Sun Oct 27 11:44:32 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1728
1729         * Merged c0ffee's /set heartbeat patch to Irssi SILC client.
1730           Affected files irssi/src/silc/core/silc-core, silc-server.c.
1731
1732         * Fixed the heartbeat sending in Irssi SILC client.  Moved
1733           the silc_client_packet_send to silcclient.h for application
1734           usage.  Affected files lib/silcclient/client_internal.h
1735           lib/silcclient/silcclient.h.
1736
1737         * Fixed a bug in query resolving in server.  Used wrong
1738           variable in a for loop and crashed.  Affected file is
1739           silcd/server_query.c.
1740
1741         * Server constructs requested attributes only to locally
1742           connected clients.  Affected file silcd/server_query.c.
1743           Bug #36.
1744
1745         * Fixed a bug when sending resolving from router to server
1746           with requested attributes.  The constructed WHOIS command
1747           was incorrect.  Affected file silcd/server_query.c.
1748           Bug #38.
1749
1750         * Fixed Requested Attributes saving in WHOIS command reply.
1751           The length of the data buffer must be saved too.  Affected
1752           file silcd/command_reply.c.
1753
1754         * Update the client entry's servername after detaching is
1755           over.  Affected file silcd/packet_receive.c.  Bug #37.
1756
1757         * Resolve incomplete client entrys in CUMODE_CHANGE and
1758           CMODE_CHANGE notifys.  Affected file is
1759           lib/silcclient/client_notify.c.  Bug #42.
1760
1761 Thu Oct 24 12:22:35 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1762
1763         * Fixed channel key packet processing bug on backup router
1764           during backup resuming protocol.  Affected file is
1765           silcd/packet_receive.c.
1766
1767         * Fixed memory leaks in server.  Affected files are
1768           silcd/server.c and silcd/packet_receive.c.
1769
1770         * Fixed packet decryption problem when backup router encrypted
1771           channel message with wrong key during backup resuming
1772           protocol.  Affected file silcd/packet_send.c.
1773
1774         * ROBODoc documented lib/silccrypt/silccipher.h.  A patch by
1775           Toni Willberg (toniw@iki.fi)
1776
1777         * Changed the SilcCipher context to be private.  Changed the
1778           silc_cipher_get_iv to just return pointer to the IV.  Added
1779           silc_cipher_get_name to return the name of the cipher.
1780           Fixed code all around to support these changes.  Affected
1781           files are lib/silccrypt/silccipher.[ch], client library and
1782           server.
1783
1784 Wed Oct 23 19:01:41 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1785
1786         * Fixed unaligned access in lib/silccore/silcattrs.c.
1787
1788         * Fixed libtool linking in lib/silcsim/Makefile.am.
1789
1790         * Fixed services attribute printing.  Affected files is
1791           irssi/src/silc/core/silc-queries.c.
1792
1793 Wed Oct 23 09:51:04 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
1794
1795         * Fixed a crashbug in incoming server accepting.  Affected
1796           file silcd/server.c.
1797
1798 Tue Oct 22 13:02:32 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1799
1800         * Added automatically generated index to Toolkit Reference
1801           Manual.
1802
1803         * Added support for Postscript Toolkit Reference Manual.
1804
1805 Mon Oct 21 21:30:40 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
1806
1807         * Merged DISCONNECT fix, and autoconn port fix from Irssi
1808           CVS.
1809
1810 Sun Oct 20 19:54:55 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1811
1812         * Added 'send_events' boolean argument to the function
1813           silc_schedule_set_listen_fd which sends the set events to
1814           the application explicitly if set to TRUE.  Default action
1815           should be FALSE.  Affected file lib/silcutil/silcschedule.[ch],
1816           lib/silcclient/client_internal.h and silcd/server_internal.h.
1817
1818         * Added silc_compare_timeval to determine which time values
1819           is smaller.  Affected file lib/silcutil/silcutil.[ch].
1820
1821         * Added sort-of "Quality of Service" (QoS) support to
1822           SilcSocketConnection.  Data reception can be controlled with
1823           rate limit per second and/or read data length limit.
1824           Added silc_socket_set_qos.  Affected files are
1825           lib/silcutil/silcsockconn.[ch] and unix/silcunixsockconn.c.
1826
1827         * Added the QoS configuration to SILC Server configuration
1828           file.  Affected files are silcd/serverconfig.[ch] and
1829           server.c.
1830
1831 Sun Oct 20 14:12:24 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
1832
1833         * Merged with irssi.org CVS.
1834
1835         * Failed OPER and SILCOPER authentications are now logged.
1836           Affected file silcd/command.c.  Bugs #25.
1837
1838 Sat Oct 19 13:32:15 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
1839
1840         * ROBODoc documented lib/silcutil/silcbuffer.h and
1841           lib/silcutil/silcdlist.h.  Patch by Ville Räsänen
1842           <ville.rasanen@iki.fi>.
1843
1844 Fri Oct 18 10:51:04 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1845
1846         * Added support for auto-passphrase authentication from the
1847           config file during connecting which was not implemented
1848           yet.  Affected file irssi/src/silc/core/client_ops.c.
1849
1850         * Fixed a bug in authentication protocol failure handling which
1851           was processing wrong callback context.  Affected files
1852           are lib/silcclient/client.c and protocol.c.
1853
1854         * Fixed the /ATTR allow off to actually work.  Affected file
1855           is irssi/src/silc/core/silc-queries.c.
1856
1857         * Fixed the /ATTR -del to work.  Affected file is
1858           irssi/src/silc/core/silc-queries.c.
1859
1860 Thu Oct 17 23:45:12 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1861
1862         * Fixed string formatting crashbug in lib/silccore/silcattrs.c.
1863
1864         * Fixed mask attribute adding in Irssi SILC client.  Affected
1865           file irssi/src/silc/core/silc-queries.c.
1866
1867 Thu Oct 17 16:40:39 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1868
1869         * Added support for saving the requested attributes in
1870           WHOIS to directory.  Affected file is
1871           irssi/src/silc/core/silc-queries.c.
1872
1873 Wed Oct 16 17:40:56 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1874
1875         * Added support for parsing VCard fields that do not have
1876           the TYPE= for types.  Affected file lib/silcutil/silcvcard.c.
1877
1878         * Fixed a double free bug in hash table foreach function
1879           if the entry was deleted in the foreach callback.  Affected
1880           file lib/silcutil/silchashtable.c.
1881
1882 Tue Oct 15 18:05:24 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1883
1884         * Added silc_attribute_get_verify_data to return the signature
1885           verification data for either user digital signature or
1886           server digital signature in Requested Attributes.  Affected
1887           files are lib/silccore/silcattrs.[ch].
1888
1889         * Added silc_vcard_alloc which is used to allocated dynamic
1890           SilcVCard context.  The silc_vcard_free now checks whether
1891           the context is dynamically allocated or not.  Affected files
1892           are lib/silcutil/silcvcard.[ch].
1893
1894 Mon Oct 14 17:55:44 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1895
1896         * Periodically remove the NOATTR status from client entry
1897           so that the client may take the attributes in use even after
1898           server has resolved them unsuccessfully earlier.  Affected
1899           file silcd/server_query.c and idlist.h.
1900
1901         * Moved sha1hash and md5hash from client->internal to
1902           SilcClient for application usage.  Affected files are
1903           lib/silcclient/client.h and client_internal.h.
1904
1905         * Fixed attribute encoding and decoding bugs.  Affected
1906           files lib/silccore/silcattrs.[ch].
1907
1908         * Added ATTR command to Irssi SILC Client which is used to
1909           manage user's Requested Attributes sending and values for
1910           WHOIS command.  Affected files around Irssi SILC client.
1911
1912 Mon Oct 14 14:33:54 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1913
1914         * Added silc_buffer_strformat which can be used to format
1915           strings into a buffer which size is automatically increased.
1916           Affected file lib/silcutil/silcbuffmt.[ch].
1917
1918         * Added implementation of VCard (RFC 2426) which can be used
1919           as part of Requested Attributes in WHOIS command.  Affected
1920           file lib/silcutil/silcvcard.[ch].
1921
1922 Fri Oct 11 23:52:17 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1923
1924         * Some strncat -> silc_strncat changes our the core and
1925           client library.
1926
1927         * Added SILC_SKE_STATUS_SIGNATURE_ERROR and OUT_OF_MEMORY
1928           errors.  Added better error printing to SKE library.
1929           Affected files lib/silcske/silcske.c, silcske_status.h and
1930           payload.c.
1931
1932         * Save the PKCS key length even if only private key is set to
1933           SilcPKCS.  Affected file lib/silccrypt/silcpkcs.[ch] and rsa.c.
1934
1935         * Fixed the usage of silc_pkcs_get_key_len since it returns the
1936           length in bits not in bytes.  Affected files are
1937           lib/silcske/silcske.c, lib/silccore/silcauth.c and
1938           silcd/server_query.c.
1939
1940 Wed Oct  9 17:22:57 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1941
1942         * Added silc_attribute_payload_encode_data to directly encode
1943           the data into the attributes buffer.  Renamed function
1944           silc_attribute_payload_parse_list to silc_attribute_payload_parse.
1945           Affected files are lib/silccore/silcattrs.[ch].
1946
1947         * silc_hash_table_find_foreach calls the foreach function now
1948           once even if the nothing was found with context set to NULL.
1949           Affected file lib/silcutil/silchashtable.[ch].
1950
1951         * Remove the RESOLVING flag from client entry after received
1952           the Requested Attributes from the client.  Fixed memory leak
1953           in client entry freeing.  Affected files silcd/server_query.c
1954           and idlist.c.
1955
1956         * Added Requested Attributes support into SILC Client Library.
1957           It is not able to send requested attributes in WHOIS command,
1958           and also receive and process requested attributes.  Added
1959           silc_client_attribute_[add|del] and silc_client_attributes_get
1960           functions.  Added also `ignore_requested_attributes' to the
1961           SilcClientParams to not use attributes in client.  Affected
1962           files are lib/silcclient/command.c, client_attrs.[ch],
1963           silcclient.h, client_internal and client.[ch].
1964
1965         * Changed the silc_client_get_client_by_id to support Requested
1966           Attributes, it takes them as argument now.  Affected file
1967           is lib/silcclient/silcclient.h, and idlist.c.
1968
1969         * Added -details option to WHOIS command in Irssi SILC Client
1970           to support the requested attributes.  By default it requests
1971           all attributes.  Affected file lib/silcclient/command.c and
1972           irssi/doc/help/in/whois.in.
1973
1974 Tue Oct  8 17:58:28 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1975
1976         * Add also SERVICE attribute for server-constructed attribute
1977           data.  Also digitally sign the attributes and add
1978           SERVER_DIGITAL_SIGNATURE attribute.  Affected file is
1979           silcd/server_query.c.
1980
1981 Mon Oct  7 18:25:35 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1982
1983         * Changed the silc_attribute_payload_encode to support list
1984           of attributes (function may be called several times to add
1985           a new attribute).  Removed the silc_attribute_payload_encode_list
1986           function.  The encoding function now also automatically encodes
1987           the data, so the caller does not need to do that.  Affected
1988           files lib/silccore/silcattrs.[ch].
1989
1990         * Added support for replying on behalf of the user to the
1991           Requested Attributes in WHOIS command in the server.  Affected
1992           file silcd/server_query.c.
1993
1994         * SILC_NOT_IMPLEMENTED macro use SILC_LOG_INFO now instead of
1995           SILC_LOG_DEBUG.  Affected file lib/silcutil/silclog.h.
1996
1997 Sun Oct  6 16:48:32 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1998
1999         * Don't swtich to become primary router if we are backup if
2000           decryption error has occurred.  Affected file silcd/server.c.
2001
2002         * Fixed a bug in backup router IP address comparison in
2003           silc_server_backup_get.
2004
2005           Save now also the port of the server/router and use that
2006           in comparison as well.  Affected file silcd/server_backup.c.
2007
2008         * Normal server now reconnects to backup router automatically
2009           if connection is lost to it.  Affected file silcd/server.c.
2010
2011 Thu Sep 26 13:51:02 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2012
2013         * If packet processing fails (like integrity check fails)
2014           the connection is closed now.  Affected files are
2015           lib/silccore/silcpacket.c and silcd/server.c.
2016
2017 Mon Sep 23 10:59:39 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2018
2019         * Fixed double free in RSA public key set function
2020           silc_rsa_set_public_key.  Affected file lib/silccrypt/rsa.c.
2021           Bug #29.
2022
2023 Sun Sep 22 14:54:05 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2024
2025         * Rewrote WHOIS, WHOWAS and IDENTIFY commands in the server.
2026           Added server_query.[ch] which provides one interface for
2027           querying information using all three commands.
2028
2029         * Changed all "typedef unsigned char" in core library to
2030           "typedef SilcUInt8".
2031
2032 Sat Sep 21 21:36:45 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2033
2034         * Added silc_strncat into lib/silcutil/silcstrutil.[ch].
2035
2036         * Renamed silc_server_get_client_resolve to
2037           silc_server_query_resolve and moved to server_query.[ch].
2038
2039 Wed Sep 18 18:28:04 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2040
2041         * Resumed client packet handling from server put the resumed
2042           client on wrong list on router and caused the client not
2043           be present on the network anymore.  Now fixed to put the
2044           client to correct list.  Affected file silcd/packet_receive.c.
2045
2046 Wed Sep 18 15:13:48 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
2047
2048         * Various cleanup in error message output in config parsing code
2049           and in server init code.  Fixed error log files containing
2050           too many newlines ('\n') in some situations.  Affected files are
2051           silcd/serverconfig.c, silcd/silcd.c, and silcd/server.c.
2052
2053 Wed Sep 18 10:51:23 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2054
2055         * Use the reverse lookupped hostname in client internals
2056           instead of one user provided us as remote server name.
2057           Affected file lib/silcclient/client.c.
2058
2059 Mon Sep 16 12:02:54 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2060
2061         * Added 'app_context' to silc_schedule_init.  It is an
2062           application specific context that is delivered to application
2063           in task callback functions.  Affected files are
2064           lib/silcutil/silcutil.[ch].
2065
2066         * The hb_context in SilcSocketConnection is not freed
2067           automatically anymore (application must free it).  Freeing
2068           it automatic is inconsistent.  Affected files are
2069           lib/silcutil/silcsockconn.[ch].
2070
2071 Sun Sep 15 22:16:19 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2072
2073         * Added support for removing explicitly added client connections
2074           in rehash and closing the client connections if they were
2075           unconfigured in the rehash.  Affected file silcd/server.c.
2076
2077         * Added support for aborting automatically pending commands
2078           that never receives the reply (to avoid memory leaks).
2079           Added also silc_server_command_pending_timed to set the
2080           specific timeout for pending command.  Affected files are
2081           silcd/command[_reply].[ch].
2082
2083         * Added SILC_STATUS_ERR_TIMEDOUT status.  Updated protocol
2084           specs and lib/silccore/silcstatus.h.
2085
2086 Sun Sep 15 12:25:10 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2087
2088         * Changed the silc_get_time to accept time value as argument
2089           or if zero is sent return current local time.  Affected
2090           file lib/silcutil/silcutil.[ch].
2091
2092         * Added STATS command to client library and Irssi SILC client.
2093           Patch provided by Ville Räsänen <ville.rasanen@iki.fi>.
2094
2095 Wed Sep 11 09:22:00 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2096
2097         * Assure that channel key is set before sending it.  May
2098           crash server otherwise.  Affected file silcd/packet_send.c.
2099
2100 Tue Sep 10 09:50:08 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2101
2102         * Assure that endless loop cannot happen with detached client
2103           resolving on normal server.  Added idlist status
2104           SILC_IDLIST_STATUS_RESUME_RES.   Affected files are
2105           silcd/idlist.h and silcd/packet_receive.c.
2106
2107 Mon Sep  9 12:18:18 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2108
2109         * Incoming file transfer request cannot use same session as
2110           the sending session.  This can happen when sending file to
2111           yourself.  Crashed the client on quit.  Affected file
2112           lib/silcclient/client_ftp.c.  Bug #24.
2113
2114 Sun Sep  8 18:39:25 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2115
2116         * Implemented the draft-riikonen-precense-attrs draft and
2117           the Attribute Payload into the lib/silccore/silcattrs.[ch].
2118
2119 Sun Sep  8 13:13:44 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2120
2121         * Distribute the SERVER_SIGNOFF notify also to local backup
2122           routers from the primary router.  The backup router may not
2123           have the signing of local server directly connected and need
2124           to know about the signoff.  Affected file silcd/server_util.c.
2125
2126         * Use the primary router as the origin of the locally connected
2127           server when it is disconnecting from the backup router since
2128           that's where it really is coming from.  Now the clients from
2129           the disconnecting server are removed correctly and "shadow"
2130           clients are not left to the backup router.  Affected file
2131           silcd/server.c.
2132
2133 Sat Sep  7 22:26:50 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2134
2135         * If normal server is standalone and found existing but disabled
2136           channel, do not re-create the channel since it creates
2137           duplicate same channels.  Affected file silcd/server.c.
2138
2139         * Added anonymous client connections support to server.  New
2140           "anonymous" configuration option to ConnectionParams section
2141           added.  If set to true, the username and hostname information
2142           of the client will be scrambled and anonymous user mode is
2143           set automatically to the user.  Affected files are
2144           silcd/serverconfig.[ch], silcd/packet_receive.c and server.c.
2145
2146 Sat Sep  7 16:02:09 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2147
2148         * In JOIN notify handling, mark that the cache entry of the
2149           client cannot be expired.  Can cause crashes on normal
2150           server (asserts client->channels).  Affected file is
2151           silcd/packet_receive.c.
2152
2153         * From now on distribution versions are used as protocol versions
2154           instead of by default using the Toolkit base version as protocol
2155           version.  Affected file prepare.
2156
2157         * Do not set the locally resolved hostname for local client
2158           entry but take what server sends.  This way the real hostname
2159           is showed in WHOIS for yourself.  Affected file is
2160           lib/silcclient/idlist.c and lib/silcclient/client.c.
2161
2162         * Resolve local info with IDENTIFY when connecting to server.y
2163
2164 Sat Sep  7 14:22:43 CEST 2002 Lubomir Sedlacik <salo@silcnet.org>
2165
2166         * Rewritten check for POSIX threads.  Use --with-pthreads[=DIR]
2167           for implied search (not needed on platforms which has native
2168           pthreads library).  Use --without-pthreads to disable threads.
2169           Affected file is configure.in.pre
2170
2171         * Fixed --with-iconv on platforms which need to bypass (broken)
2172           native iconv().  Affected file is configure.in.pre
2173
2174 Sat Sep  7 15:08:13 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2175
2176         * Moved -C option parsing in Irssi SILC client at same time
2177           as other options.  The UI was initialized earlier and caused
2178           problems on command line.  Bug #16.  Affected file is
2179           irssi/src/silc/core/silc-core.c.
2180
2181 Mon Sep  2 23:00:30 CEST 2002 Johnny Mnemonic <johnny@themnemonic.org>
2182
2183         * Added global variable silc_log_timestamp that tells silclog
2184           wether to print or not the timestamp in the logging files.
2185           Affected file lib/silcutil/silclog.[ch].
2186
2187         * Added silcd configuration option Timestamp in the Logging
2188           section.  Affected file silcd/serverconfig.[ch],
2189           doc/example_silcd.conf.in.
2190
2191 Fri Aug 30 08:57:33 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2192
2193         * Fixed fingerprint checking to check for entirely empty
2194           fingerprint instead of two first bytes when determining
2195           if it is set.  Bug #18.  Affected file silcd/command.c.
2196
2197         * Fixed duplicate PKCS name registering to not allow it.
2198           Bugs #17.  Affected file lib/silccrypt/silcpkcs.c.
2199
2200 Sun Aug 25 08:02:04 CEST 2002 Lubomir Sedlacik <salo@silcnet.org>
2201
2202         * Conditionalize non-gcc compiler optimizations for various
2203           platforms, enable those commented out.  Cleanups.
2204           Affected file lib/silcmath/mpi/configure.in
2205
2206 Sat Aug 24 15:11:32 EEST 2002 Timo Sirainen <tss@iki.fi>
2207
2208         * silc_rng_exec_command() left zombie processes if command
2209           didn't generate any output.  Affected file
2210           lib/silccrypt/silcrng.c
2211
2212 Fri Aug 23 22:05:44 CEST 2002 Lubomir Sedlacik <salo@silcnet.org>
2213
2214         * Rewrote iconv checking, introduce --with-iconv for systems
2215           which rely on libiconv.  Check if iconv() provided by libc
2216           is good enough, otherwise demand libiconv.  Affected file
2217           configure.in.pre
2218
2219 Fri Aug 23 07:10:52 CEST 2002 Lubomir Sedlacik <salo@silcnet.org>
2220
2221         * Search for ldopen() also in libc.  This enables SIM support
2222           on *BSD systems.  Based on patch from Alex Zepeda.  Affected
2223           file configure.in.pre
2224
2225 Sun Aug 18 04:44:30 CEST 2002 Lubomir Sedlacik <salo@silcnet.org>
2226
2227         * Don't call AM_CONDITIONAL conditonally for SILC_THREADS.
2228           This fixes prepare on *BSD systems.  Affected file
2229           configure.in.pre
2230
2231 Sun Aug  4 15:55:40 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2232
2233         * More fixed for not having purge timeout for global clients
2234           that are on channel.  Affected files silcd/command_reply.c
2235           and server_util.c.
2236
2237         * Fixed the rekey protocol to work with backup router connections.
2238           Rekey packets are now allowed on disabled connections as
2239           well.  Affected files silcd/packet_send.c and server.c.
2240
2241         * Do not switch to be as backup router when shutting down and
2242           closing the primary connection.  Affected file silcd/server.c.
2243
2244         * Fixed memory leaks in backup router deleting.  Added
2245           silc_server_backup_free to free all data during shutdown of
2246           server.  Affected files silcd/server_backup.[ch].
2247
2248 Sun Jul 14 21:33:32 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2249
2250         * Do not process commands if the sock->user_data is NULL.
2251           Affected file silcd/command.c.
2252
2253 Tue Jul  9 19:03:11 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2254
2255         * Fixed buffer overflow and security problems (loosing bits
2256           in CFB encryption) in SILC RNG.  Problems reported by
2257           Markku-Juhani O. Saarinen <mjos@saturn.tcs.hut.fi>.
2258
2259 Sun Jul  7 13:10:01 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2260
2261         * Added yet more checks that client is not expired on global
2262           list if it is on channels.  Affected file is
2263           silcd/command_reply.c.
2264
2265 Sat Jul  6 11:45:11 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2266
2267         * Merged c0ffee's MIME signal patch which adds support for
2268           sending also MIME messages in Irssi SILC Client, and handling
2269           received MIME messages in a signal (and perhaps doing something
2270           to non-textual MIME messages).
2271
2272 Sun Jun 30 01:30:22 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2273
2274         * Fixed pending command deletion in server and client library
2275           to check the whole list instead of breaking after first found.
2276           The affected files are silcd/command.[ch] and
2277           lib/silcclient/command.[ch].
2278
2279 Sat Jun 29 17:40:12 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2280
2281         * Return NO_SUCH_CHANNEL error in USERS for channel that is
2282           secret or private, otherwise it's possible to find out
2283           whether a secret channel exists or not.  Affected file
2284           silcd/command.c.
2285
2286         * If CMODE change fails during the mode setting, assure that
2287           the old mode mask is set for the channel back.  Affected
2288           file silcd/command.c.
2289
2290         * Fixed passphrase saving on +a channel on normal server
2291           after successful JOIN command.  Affected file silcd/command.c.
2292
2293 Fri Jun 28 11:53:25 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2294
2295         * Remove server/router operator privileges in DETACH command,
2296           since it's possible to resume to server where these
2297           privileges would not be allowed for the client.  Affected
2298           file silcd/command.c.
2299
2300         * Do not set to wait for backup in rehash of the server.
2301           Affected file silcd/server.c.
2302
2303         * Do not check listener sockets when counting how many
2304           socket connections we have.  Affected file is
2305           silcd/server_util.c.
2306
2307         * Do not announce disconnected clients that are remaining
2308           in history (for WHOWAS).  This is because SIGNOFF notify
2309           for these has been sent earlier already.  Affected file
2310           silcd/server.c.
2311
2312 Thu Jun 27 20:07:27 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2313
2314         * Buffer overflow with CUMODE command's mode->mode character
2315           conversion.  Reported by Ville Räsänen.  Affected file
2316           lib/silcutil/silcutil.c.
2317
2318 Thu Jun 27 16:54:33 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2319
2320         * Allow heartbeat packets to go disabled connections anyway.
2321           Affected files silcd/server.c and silcd/packet_send.c.
2322
2323         * Do not broadcast New Channel packets with List flag set
2324           in the packet to backup routers.  The router must check
2325           for the correctness of the packets before sending them.
2326           It is possible that router will have enforce Channel ID
2327           change and this would cause desync in the backup router.
2328           Affected file silcd/packet_receive.c.
2329
2330         * Remove SILC_PACKET_FLAG_LIST from the temp packets that
2331           are handled in list parsing.  They are not list packets
2332           anymore.  Affected file silcd/packet_receive.c.
2333
2334 Thu Jun 27 11:27:07 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2335
2336         * Stop waiting for backup router through the timeout, not
2337           directly after backup router has arrived.  Affected file
2338           silcd/server.c.
2339
2340         * Do not re-create channel keys and send them when removing
2341           clients in server shutdown.  Affected files are
2342           silcd/server_internal.h and silcd/server_util.c.
2343
2344         * Notify distribution to backup routers was missing from
2345           the silc_server_send_notify_dest function which caused
2346           desyncing problems with backup router.  Affected file is
2347           silcd/packet_send.c.
2348
2349         * The client's channel removing was working wrong on
2350           backup router.  It assumed that it doesn't know global
2351           information but backup router does know.  For this reason
2352           it could remove channel when it wasn't supposed to do that.
2353           Affected file silcd/server.c and silcd/server_util.c.
2354
2355 Wed Jun 26 15:14:12 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2356
2357         * Stop for a couple seconds after badkup router has become
2358           primary router.  Affected file silcd/server.c.
2359
2360         * Added silc_server_remove_servers_by_server, which is used
2361           to remove servers originated from some other server.  Also
2362           clients of those servers can be removed too.  Affected file
2363           silcd/server_util.[ch].
2364
2365         * When removing clients after a server has signed of remove
2366           also all servers behind that server (unless they are known
2367           to be available locally), and send SERVER_SIGNOFF for each
2368           of the server separately.  Also the signed off clients are
2369           sent now separately per signed off server.  The affected files
2370           are silcd/server.c and silcd/server_util.[ch].
2371
2372         * All servers added with silc_idlist_add_server must always
2373           have both "router" and "connection" pointers set.  Otherwise,
2374           bad server entries may be left around in the cache.
2375           Affected file silcd/command_reply.c.
2376
2377         * Do not create the channel key in NEW_CHANNEL packet
2378           processing if the channel is empty.  Affected file
2379           silcd/packet_receive.c.
2380
2381         * Completed backup router support for standalone routers.
2382           Supports also servers in the cell that do not use the backup
2383           at all.
2384
2385 Wed Jun 26 10:38:11 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2386
2387         * Fixed a bug in silc_string_regexify which did not add '^'
2388           at the start of each string, and thus the matching was
2389           not explicit.  For example ban list iikone@*!*@* would
2390           match also "priikone", which is wrong, it would have to be
2391           *iikone@*!*@* to match also "priikone".  Affected
2392           file lib/silcutil/unix/silcunixutil.c.
2393
2394 Tue Jun 25 18:47:39 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2395
2396         * Enable all local server connections before updating client
2397           caches when we've become backup router.  Otherwise, signoff
2398           packets may not reach the clients.  Affected files are
2399           silcd/server.c and silcd/server_util.[ch].
2400
2401         * Fixed a bug in version string parsing which could crash
2402           the program with specially formatted version string.
2403           Bug reported and patch provided by Ville Räsänen.  Affected
2404           file lib/silcutil/silcutil.c.
2405
2406         * Handle the disconnection immediately when DISCONNECT
2407           packet is received in server.  Affected file silcd/server.c.
2408
2409         * Primary router now waits a short time (10 seconds) for
2410           backup router connection before accepting any other
2411           connection (except local).  Affected file silcd/server.c,
2412           serverconfig.[ch].
2413
2414         * Fixed a crash in client libary in NICK_CHANGE notify when
2415           NICK_CHANGE arrived for client entry we are resolving
2416           currently.  Affected file lib/silcclient/client_notify.c.
2417
2418         * Call the sconn->callback completion even if error had
2419           occurred.  Start reconnecting always if connection to
2420           primary router fails during backup router protocol.
2421           Affected files silcd/server.c and server_backup.c.
2422
2423 Mon Jun 24 17:47:52 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2424
2425         * Added functions silc_server_send_opers and
2426           silc_server_send_opers_notify to send packets stricly
2427           to operators.  Added macro SILC_SERVER_SEND_OPERS macro
2428           to send variable argument notify to operators.
2429           Affected files silcd/packet_send.[ch] and silcd/server.h.
2430
2431         * Removed UMODE rights checking with UMODE_CHANGE notify.
2432           Affected file silcd/packet_receive.c.
2433
2434         * Server/router operator now receives notify when network
2435           switches to backup router and when it resumes the use of
2436           primary router.  Affected file silcd/server.c and
2437           silcd/server_backup.c.
2438
2439         * Fixed the updating of client information after backup
2440           resuming protocol is over; update all except local clients
2441           to the new primary router.  The affected file is
2442           silcd/server_util.c.
2443
2444         * Added support for closing active connections in rehash
2445           that were unconfigured by the user.  Supports currently
2446           closing server and router connections.  Affected file
2447           silcd/server.c.
2448
2449         * Rewrote some SILC_LOG_DEBUG's in silcd/server_backup.c.
2450
2451 Sun Jun 23 17:32:31 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2452
2453         * Don't do SILC_STRING_LANGUAGE encoding if the outbuffer
2454           is NULL since seems that on some platforms NULL is allowed
2455           and on some it's not.  Fallback encoding is used instead.
2456           Affected file lib/silcutil/silcstrutil.c.
2457
2458         * Fixed statistics updating for incoming server connection
2459           which could cause problems when re-connecting.  Affected
2460           file silcd/server.c.
2461
2462         * Preliminary backup router support for standalone router
2463           added.  Affected files in silcd/.
2464
2465         * Mark server connections in backup router disabled before
2466           and after backup protocol.  Affected file is
2467           silcd/server_backup.c.
2468
2469         * Added support for reconnecting to remote server connection
2470           even if the protocol fails, and if the configuration wants
2471           us to keep trying to connect anyway.
2472
2473           Server connection is not allowed to backup router if
2474           backup router does not have connection to primary router yet.
2475
2476           Affected file is silcd/server.c.
2477
2478 Sat Jun 22 21:34:59 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2479
2480         * Added silc_client_udpate_server function to update changed
2481           server info.  Affected file lib/silcclient/idlist.[ch].
2482
2483         * Added check for server entries that are being resolved when
2484           notify is received.  If being resolved, handle the received
2485           notify only after it's resolved so that all notifys are
2486           handled in same order as received from the server.
2487
2488           Added similar resolver check to channel entries.  Every
2489           notify that cause resolving of any information that affects
2490           channel entry marks the channel entry in waiting state.
2491           After whatever resolving is over the waiters are signalled
2492           and only then the notifys are handled in the same order
2493           as delivered from the server.
2494
2495           Affected files are lib/silcclient/idlist.[ch], and
2496           client_notify.c.
2497
2498         * Fixed KILLED notify handling in normal server.  Affected
2499           file silcd/packet_receive.c.
2500
2501         * Added SILC_IDLIST_STATUS_LOCAL which indicates that entry
2502           is locally connected, or was locally connected (but may
2503           be detached and connection is not active).  Added also
2504           SILC_IS_LOCAL for checking this status.  Affected files
2505           silcd/idlist.h, silcd/packet_receive.c, silcd/server_util.c,
2506           silcd/server.c and silcd/server_internal.h.
2507
2508 Sat Jun 22 17:06:58 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2509
2510         * Don't send or handle TOPIC_SET if topic is already set and
2511           is same as being set.  Affected files silcd/command.c and
2512           silcd/packet_receive.c.
2513
2514         * Fixed CMODE change rights checking to work correctly when
2515           removing modes by operator.  Affected file is
2516           silcd/server_util.c.
2517
2518         * Fixed some handling with New Channel packet in router and
2519           fixed some CMODE_CHANGE notify handling in server and router.
2520           Affected file is silcd/packet_receive.c.
2521
2522         * Changed "disconnect" client operation to include the
2523           reason of the disconnection and optional disconnection
2524           message.  Affected file lib/silcclient/silcclient.h.
2525
2526         * Made the compilation of lib/contrib/ stuff conditional.
2527           Affected files configure.in.pre, lib/contrib/Makefile.am.
2528
2529 Sat Jun 22 12:49:21 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2530
2531         * All CMODE_CHANGE and CUMODE_CHANGE notifys are now sent back
2532           to the sender of the notify too, to avoid situation where two
2533           notifys are in the network at the same time going to oppsite
2534           directions.  Affected file silcd/packet_receice.c.
2535
2536 Fri Jun 21 10:00:32 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2537
2538         * Delete the client from channel even if the cilent->id is
2539           NULL.  It was possible that client was deleted without
2540           removing from channels (theoretically at least).  Affected
2541           file silcd/server.c and silcd/server_util.c.
2542
2543         * Free the client data too when resuming is not successful.
2544           Affected file silcd/packet_receive.c.
2545
2546         * Merged some code from c0ffee's silc-plugin.  Affected files
2547           irssi/src/silc/core/silc-channels.c and silc-expandos.c.
2548
2549         * Added SILC_PRIMARY_ROUTE and SILC_BROADXAST macros to
2550           silcd/server_internal.h.  SILC_PRIMARY_ROUTE Returns pointer
2551           to the primary router connection, the other one returns
2552           TRUE if packet must be broadcasted to network.
2553
2554         * All notifys that are destined to primary router (to network)
2555           are now automatically sent to backup routers even if the
2556           router is standalone (and has backup router).  Affected files
2557           in silcd/.
2558
2559         * Added --without-irssi and --without-silcd configuration
2560           options for disabling the compilation of these applications.
2561           Affected file configure.in.pre and prepare.
2562
2563 Thu Jun 20 13:48:15 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2564
2565         * Implemented SILC_STRING_BMP and SILC_STRING_UNIVERSAL for
2566           UTF-8 encoding and decoding.  Added also new encodings
2567           SILC_STRING_BMP_LSB and SILC_STRING_UNIVERSAL_LSB.
2568
2569           Added also SILC_STRING_LANGUAGE which is language and charset
2570           specific encoder and decoer for those platforms that support
2571           iconv().  It can convert the UTF-8 to and from the locale
2572           specific character set.
2573
2574           Affected file lib/silcutil/silcstrutil.[ch].
2575
2576         * Added macro SILC_NOT_IMPLEMENTED to lib/silcutil/silclog.h.
2577
2578         * Added function silc_get_command_name to the file
2579           lib/silcutil/silcutil.[ch].
2580
2581         * Improved the server debug output a bit.  Affected files are
2582           in silcd/.
2583
2584 Wed Jun 19 17:46:31 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2585
2586         * Save the channel passphrase when received succesful JOIN
2587           command reply from router, on normal server.  Otherwise
2588           joinig +a channels from normal server is not possible.
2589           Affected file silcd/command.c.
2590
2591         * Fixed a bug in TOPIC_SET notify handling.  The notifier
2592           may be other than client too, like server or channel.
2593           It expected it to always be only client and ignored the
2594           notify.  Affected file silcd/packet_recieve.c.
2595
2596         * Removed some (unnecessary) debug printing from
2597           lib/silccore/silcid.c and lib/silccore/silcargument.c.
2598
2599         * Do not force CMODE_CHANGE when server is announcing new
2600           channel.
2601
2602           Router announces stuff only after server reannounces channel
2603           after CHANNEL_CHANGE notify.
2604
2605           These fixes optimizes the announcing procedure, and perhaps
2606           fixes some problems too.  Affected file silcd/packet_receive.c.
2607
2608         * Fixed SERVER_SIGNOFF sending to local clients.  It was
2609           totally broken and sent the notify to all local clients,
2610           instead of only to those that was on same channel as the
2611           signing off clients.  Affected file silcd/server_util.c.
2612
2613         * Added -D option to server.  It can be used to give debug
2614           level.  The levels are from 0 - 99, and are predefined for
2615           smooth server debugging.  (see silcd.c for the predefined
2616           levels).  Affected file silcd/server.c.
2617
2618 Wed Jun 19 16:01:51 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2619
2620         * Fixed a bug in Irssi SILC client to close the connection
2621           properly when disconnecting from server.  Affected file
2622           irssi/src/silc/core/client_ops.c.
2623
2624 Tue Jun 18 17:14:52 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2625
2626         * When authenticating as founder during JOIN command, check
2627           that the one authenticating becomes the only founder on the
2628           channel.  Affected file silcd/command.c.
2629
2630         * Better checking for founder mode setting when CUMODE_CHANGE
2631           notify is received.  Affected file silcd/packet_receive.c.
2632
2633         * Close all connections when shutting down the server by sending
2634           DISCONNECT packet.  Close all listeners too when shutting
2635           down the server.  Affected file silcd/server.c.
2636
2637         * Handle DISCONNECT packet correctly in client library by
2638           calling the "disconnect" client operation.  Affected file
2639           lib/silcclient/client.c.
2640
2641         * Handle local errors correctly during resuming.  Affected
2642           file lib/silcclient/client.c.
2643
2644 Tue Jun 18 10:26:27 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2645
2646         * The log file is not dupped internally anymore in
2647           lib/silcutil/silclog.c.  Fixed memory leaks too.
2648
2649         * The scheduler now dispatches all pending timeout tasks
2650           when it is uninitialized with silc_schedule_uninit.
2651           Affected file lib/silcutil/silcschedule.c.
2652
2653 Mon Jun 17 21:30:55 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2654
2655         * Added --enable-stack-trace option to configure.  Added
2656           memory allocation stack trace support.  Added files
2657           lib/silcutil/stacktrace.[ch].  Affected files are
2658           lib/silcutil/silcmemory.[ch].
2659
2660         * Fixed memory leaks from libraries and server.  Affected
2661           files around the tree.
2662
2663         * Reverted back a fix made to CUMODE which broke it.
2664           Affected file silcd/command.c.
2665
2666 Sun Jun 16 11:49:45 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2667
2668         * Added SILC_MESSAGE_FLAG_UTF8 to the protocol specs and the
2669           core library, and implemented it.  All textual messages SHOULD
2670           use this flag and the message MUST be UTF-8 encoded.
2671           All text messages sent by Irssi SILC client are now UTF-8
2672           encoded (regardless whether the terminal supports UTF-8 or not).
2673           Affected files are lib/silccore/silcchannel.h,
2674           irssi/src/silc/core/silc-servers.c, silc-channels.c and
2675           client_ops.c.
2676
2677 Sat Jun 15 18:23:39 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2678
2679         * Added lots of new statistics updating that was missing from
2680           the server and router code.  Affected files in silcd/.
2681
2682         * Sending SIGUSR1 signal to server now dumps the current
2683           server statistics into /tmp directory.  Affected file is
2684           silcd/silcd.c.
2685
2686         * ROBODoc documented the lib/silccrypt/silchash.h.  Improved
2687           the SILC Hash Interface also.  Added new functions
2688           silc_hash_get_name, silc_hash_init, silc_hash_update and
2689           silc_hash_final.  Affected file lib/silccrypt/silchash.c.
2690
2691 Sat Jun 15 12:09:14 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2692
2693         * Added some better info printing for client during connecting.
2694           Affected file silcd/server_util.c.
2695
2696         * Implemented the SILC_CHANNEL_UMODE_QUIET mode that can be used
2697           to silence a user on a channel.  Affected files are
2698           lib/silcclient/client_channel.c, irssi/src/silc/core/client_ops.c,
2699           irssi/src/fe-common/silc/module-formats.[ch], silcd/command.c
2700           and silcd/packet_receive.c.
2701
2702         * Fixed a fatal bug in handling of malformed command payload.
2703           Affected file silcd/command.c.
2704
2705         * Fixed a double free when announcing channel users to router.
2706           Affected file silcd/server.c.
2707
2708         * After successful authentication to channel founder mode, check
2709           that there isn't anyone else with founder mode on the channel.
2710           The one that authenticated will become founder and anyone
2711           else is demoted.  Affected file silcd/command.c.
2712
2713         * Added error printing of any error that has occurred during
2714           any command in client library.  Affected file is
2715           irssi/src/silc/core/client_ops.c.
2716
2717         * Removed some error printing from the client library and left
2718           it for the application to worry (from the error status it
2719           receives in 'command' client operation.  Affected file is
2720           lib/silcclient/command.c.
2721
2722 Fri Jun 14 22:59:02 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2723
2724         * Added new status types KEY_AGREEMENT_ALREADY_STARTED and
2725           KEY_AGREEMENT_SELF_DENIED to lib/silcclient/silcclient.h.
2726           Starting key agreement with itself is denied.  Affected file
2727           is lib/silcclient/client_keyagr.c.
2728
2729         * Fixed some error checkings from the SFTP library which caused
2730           misbehaviour.  Affected files are lib/silcsftp/sftp_client.c
2731           and lib/silcsftp/sftp_util.c.
2732
2733         * Added new "debug" and "debug_string" settings to Irssi SILC
2734           client which can be used to print runtime debugging on the
2735           Irssi's screen.  Available when compiled with --enable-debug
2736           option.  Affected file irssi/src/silc/core/silc-core.c.
2737
2738 Tue Jun 11 16:36:02 CEST 2002 Johnny Mnemonic <johnny@themnemonic.org>
2739
2740         * Fixed a missing variadic parameter in a function call that
2741           caused server crash when a non-allowed connection arrived.
2742           Reported by Richard Becker.  Affected file silcd/server.c.
2743
2744 Mon Jun 10 16:29:42 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2745
2746         * Added WATCH list sending to backup routers from router.
2747           The WATCH command is sent by the router to the backup
2748           router.  Affected file silcd/command.c.
2749
2750         * Mark the backup_router flag for RouterConnection entry
2751           if the backup router stuff is defined in the config file.
2752           Affected file silcd/serverconfig.c.
2753
2754         * Fixed some backup data sending around the code to work better
2755           if the router is standalone router.  Not all places were fixed.
2756           Affected file silcd/packet_receive.c, silcd/packet_send.c,
2757           silcd/server.c.
2758
2759         * Fixed the router connecting when connecting to multiple
2760           routers.  It ignored every other router except the first
2761           one.  Affected file silcd/server.c.
2762
2763 Mon Jun 10 09:28:21 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2764
2765         * Made the private key generation after expiration optional.
2766           If not created after expiration the old key will re-expire
2767           at a later time (and thus key pair is not necessary to
2768           change).  Affected file irssi/src/silc/core/clientutil.c.
2769
2770 Sun Jun  9 18:58:25 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2771
2772         * The length arguments in bind() and connect() were wrong
2773           and fixed now to used SIZEOF_SOCKADDR in the
2774           lib/silcutil/unix/silcunixutil.c.
2775
2776 Tue Jun  4 18:36:05 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2777
2778         * Fixed detach timeout handling to use Client ID and not
2779           the actual client entry which may be freed in the callback.
2780           Affected file silcd/command.c.
2781
2782 Thu May 30 15:53:45 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2783
2784         * Merged c0ffee's multiple interface support patch.
2785           Affected files in silcd/.
2786
2787 Wed May 29 18:08:15 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2788
2789         * Cleanup keys properly.  Affected file is
2790           irssi/src/silc/core/clientutil.c.
2791
2792 Tue May 28 20:11:41 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2793
2794         * Display the user mode on the status bar.  Affected file
2795           irssi/src/silc/core/silc-expandos.c.
2796
2797 Tue May 28 13:56:26 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2798
2799         * If private message key is not set, but the flag is set in
2800           the packet, ignore the packet since it cannot be decrypted.
2801           Affected file lib/silcclient/client_prvmsg.c.
2802
2803 Thu May 23 12:00:14 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2804
2805         * When resuming client, remove the old client entry from
2806           the watcher list too.  Affected file silcd/packet_receive.c.
2807
2808         * Do not allow normal server to force founder mode away
2809           from router if the founder mode is already set.  Affected
2810           file silcd/packet_receive.c.
2811
2812         * Remove the client entry with watch notify types with short
2813           timeout, and not directly, so that other notifys can be
2814           retrieved too.  Affected file lib/silcclient/client_notify.c.
2815
2816         * Display notification about data messages that cannot be
2817           displayed.  Affected files irssi/src/silc/core/client_ops.c,
2818           irssi/src/fe-common/silc/module-formats.[ch].
2819
2820 Sun May 19 18:59:00 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2821
2822         * Fixed the CHANNEL_CHANGE notify handling in client libary
2823           to not use freed memory.  Affected file is
2824           lib/silcclient/client_notify.c.
2825
2826         * Fixed CUMODE_CHANGE notify handling in server.  Affected
2827           file silcd/packet_receive.c.
2828
2829         * Fixed USERS command to support empty channels.  Affected
2830           file silcd/command.c.
2831
2832 Sat May 18 11:35:19 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2833
2834         * Allow multiple identical pending commands to be registered
2835           in client library.  Affected file is lib/silcclient/command.c.
2836
2837         * Call the completion for resolving client information only
2838           after all resolvers has finished.  This fixes a crash in
2839           the client.  Added support for checking when the resolvers
2840           are finished.  Affected file is lib/silcclient/idlist.c.
2841
2842         * Wait by default 3 seconds before reconnecting to the server
2843           after being disconnected.  Makes the /detach command a bit
2844           more usable.
2845
2846 Fri May 17 17:23:45 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2847
2848         * Check the watcher list before sending signoff notifys
2849           when closing client connection.  Affected file is
2850           silcd/server.c.
2851
2852         * Added better CMODE command rights checking.  Affected file
2853           silcd/server_util.c.
2854
2855 Fri May 17 08:33:41 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2856
2857         * Fixed watcher list checking during server signoff.  It
2858           crashed the server.  Affected file silcd/server_util.c.
2859
2860         * The JOIN command reply returns now the founder's public
2861           key.  Affected file is silcd/command.c.
2862
2863         * Announce the channel mode, and the mode properties with
2864           CMODE_CHANGE notify.  Affected file silcd/server.c.
2865
2866         * Mark new channels by default disabled, untill at least
2867           one user joins the channel.  Affected file is
2868           silcd/packet_receive.c.
2869
2870 Thu May 16 13:05:13 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2871
2872         * The nickname argument to watch notify can be optional.
2873           Fixes a crash in server.  Affected file silcd/packet_send.c.
2874
2875         * Remove the client entry from cache if the WATCH notify type
2876           is KILLED, SERVER_SIGNOFF or SIGNOFF.  Affected file is
2877           lib/silcclient/client_notify.c.
2878
2879         * Check the watcher list before and after changing nickname
2880           when the NICK_CHANGE notify is received.  Affected file is
2881           silcd/idlist.c.
2882
2883         * Fixed a crash in OPER and SILCOPER command sending.  Empty
2884           passphrase caused the crash.  Affected file is
2885           lib/silcclient/command.c.
2886
2887 Wed May 15 19:01:42 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2888
2889         * Merged with Irssi CVS for Irssi SILC client.
2890
2891 Tue May 14 19:37:48 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2892
2893         * Completed the protocol specifications.
2894
2895 Tue May  7 20:41:58 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2896
2897         * Merged with Irssi CVS for Irssi SILC client.
2898
2899 Tue May  7 11:07:16 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2900
2901         * Added the founder's public key delivery to the
2902           CUMODE_CHANGE notify type as well.  Updated the protocol
2903           specs and the code.  Affected files are silcd/packet_send.[ch],
2904           silcd/packet_receive.c and silcd/command.c.
2905
2906 Mon May  6 19:46:12 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2907
2908         * Added silc_pkcs_public_key_copy function into the
2909           lib/silccrypt/silcpkcs.[ch].
2910
2911         * Remove the `iv' from the SilcChannelEntry since we can
2912           live without it.  Affected files are silcd/idlist.h and
2913           silcd/packet_receive.c.
2914
2915         * Added support for sending the founder's public key in
2916           the CMODE_CHANGE notify packet in the server.  Affected
2917           files are silcd/packet_send.[ch], silcd/packet_receive.c,
2918           silcd/command.c and silcd/server.c.
2919
2920         * Changed the FOUNDER_AUTH authentication to use only
2921           public key authentication as defined by new protocol
2922           specs.  Passphrase authentication with that mode cannot
2923           be used anymore.  It is now possible to reclaim founder
2924           mode from any server in the network.  Affected files are
2925           silcd/command.c, silcd/idlist.h and silcd/command_reply.c.
2926
2927         * Added permanent channels support by making the channel
2928           permanent when FOUNDER_AUTH mode is set on the channel.
2929           The channel will not be destroyed even if channel is empty
2930           when that mode is set.  Protocol TODO #17.  Affected
2931           files are silcd/server.[ch], server_util.[ch],
2932           silcd/command.c, silcd/packet_receive.c and
2933           lib/silcclient/command.c.
2934
2935 Fri May  3 18:36:51 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2936
2937         * Added reference counter to the command reply context in
2938           the client library.  Affected files are
2939           lib/silcclient/command_reply.[ch].
2940
2941 Fri May  3 11:37:10 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2942
2943         * Fixed rekey protocol with PFS in the client library.
2944           Affected file is lib/silcclient/protocol.c.
2945
2946         * Added support for list of errors in client library
2947           command reply handling.  Affected file is
2948           lib/silcclient/command_reply.c.
2949
2950         * Defined that the WHOIS and IDENTIFY commands can send
2951           list of errors.  Updated the protocol specs.  Protocol
2952           TODO #2.
2953
2954         * Added support for sending list of errors to WHOIS and
2955           IDENTIFY commands in server.  Added support for receiving
2956           list of errors in server.  Affected files are
2957           silcd/command.c and silcd/command_reply.c.
2958
2959         * Fixed client info resolving on LEAVE command in client
2960           library to not crash.  Affected file is
2961           lib/silcclient/client_notify.c.
2962
2963 Thu May  2 08:45:11 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2964
2965         * Defined that the NICK command replies with thew changed
2966           nickname too, to make the nickname changing simpler at
2967           the client's end.  Updated protocol specs and the code
2968           in client and server.  Affected files are
2969           silcd/command.c, lib/silcclient/command_reply.c and
2970           lib/silcclient/command.c.
2971
2972 Mon Apr 29 20:10:42 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2973
2974         * Added `Compressed' packet flag to indicate that the packet
2975           payload is compressed by the sender.  Updated the protocol
2976           specs and the core library.  The compression still is not
2977           implemented in the sources.  Affected file is
2978           lib/silccore/silcpacket.h.
2979
2980 Mon Apr 29 09:48:12 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2981
2982         * Remove pending command callbacks also if the connection
2983           to the server is destroyed.  Affected file is
2984           lib/silcclient/client.c.
2985
2986 Sat Apr 27 19:52:32 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2987
2988         * Added new QUIET channel user mode that can be used to
2989           quiet a user in a channel.  Updated the protocol specs but
2990           it wasn't implemented yet.  Protocol TODO #27.  Affected
2991           file is lib/silccore/silcmode.h.
2992
2993 Mon Apr 22 09:09:44 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2994
2995         * Added BLOCK_INVITE user mode to be able to block incoming
2996           invite notifications.  Protoocol TODO #26.  Affected files
2997           are lib/silccore/silcmode.h, lib/silcclient/command.c and
2998           silcd/command.c.
2999
3000         * SILC Publickey fields MUST be UTF-8 encoded now.  Updated
3001           the protocol specs and the code.  Affected file is
3002           lib/silccrypt/silcpkcs.c.
3003
3004 Sun Apr 21 19:44:38 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3005
3006         * Disconnect Payload includes now the status type.  Updated
3007           the protocol specs and the code.  Protocol TODO #25.
3008           Affected files are silcd/server.c, lib/silcclient/client.c.
3009
3010         * Added NOT_AUTHENTICATED, BAD_SERVER_ID, INCOMPLETE_INFORMATION,
3011           KEY_EXCHANGE_FAILED and BAD_VERSION error status types.
3012           Moved the silc_client_command_status_messages table to the
3013           lib/silcutil/silcutil.c and added new funtion
3014           silc_get_status_message, which deprecates function
3015           silc_client_status_message.  Affected files are
3016           lib/silccore/silcstatus.h, lib/silcclient/command_reply.[ch],
3017           lib/silcutil/silcutil.[ch].
3018
3019 Fri Apr 19 17:35:15 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3020
3021         * Defined that the nickname hash in Client ID MUST be from
3022           lowercase nickname.  This effectively changes nicknames in
3023           SILC to case-insensitive.  Updated the protocol specs and
3024           the code.  Affected files are lib/silcutil/silcutil.[ch],
3025           silcd/serverid.c, and silcd/idlist.c.
3026
3027         * Added new channel user modes BLOCK_MESSAGES_USERS and
3028           BLOCK_MESSAGES_ROBOTS.  Updated the protocol specs and the
3029           code.  Affected files are lib/silccore/silcmode.h,
3030           lib/silcclient/command.c, and silcd/packet_send.c.
3031
3032         * Added new error status ERR_RESOURCE_LIMIT.  Updated protocol
3033           specs and code.  Affected file lib/silccore/silcstatus.h.
3034
3035         * Added support for watch list.  It is possible to add nicknames
3036           to be watched, and when they come to network, leave network
3037           or user mode changes the watcher will be notified of this
3038           change.  Added SILC_COMMAND_WATCH command, added new
3039           notify type SILC_NOTIFY_TYPE_WATCH to deliver the watch
3040           notifications.  Updated the protocol specs and implemented
3041           this to library, client and server.  Protocol TODO #21.
3042           Affected files are lib/silccore/silccomand.h,
3043           lib/silccore/silcnotify.h, lib/silcclient/command[_reply].[ch],
3044           silcd/command[_reply].[ch], lib/silcclient/client_notify.c,
3045           silcd/packet_send.[ch], silcd/packet_receive.c, and
3046           irssi/src/silc/core/client_ops.c.
3047
3048         * Added user mode SILC_UMODE_REJECT_WATCHING to reject
3049           somebody watching you.  Updated the protocol specs and the
3050           code.  Affected files are lib/silccore/silcmode.h, and
3051           lib/silcclient/command.c.
3052
3053 Fri Apr 19 09:02:20 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
3054
3055         * Added service support to SILC protocol.  Added new command
3056           SILC_COMMAND_SERVICE.  Updated the protocol specs and the
3057           core library.  Services are not implemented in server or
3058           client for now.  Protocol TODO #20.  Affected files are
3059           lib/silccore/silcstatus.h, lib/silccore/silccommand.h.
3060
3061         * Added SilcStatus argument to `command' client operation
3062           to return the error status when command sending fails
3063           locally.  Changed all command in client library to return
3064           correct command status.  Affected files are
3065           lib/silcclient/command.c, lib/silcclient/silcclient.h and
3066           irssi/src/silc/core/client_ops.c.
3067
3068 Thu Apr 18 14:09:51 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
3069
3070         * Added silc_mime_parse function to parse MIME headers.
3071           Affected files are lib/silcutil/silcstruti.[ch].
3072
3073         * Added MIME header parsing in Irssi SILC Client.  It displays
3074           all textual MIME objects, others it ignores.  Affected file
3075           is irssi/src/silc/core/clien_ops.c.
3076
3077 Wed Apr 17 22:07:59 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
3078
3079         * Fixed a bug in the pid writing function, which couldn't be
3080           written in a root-owned directory.
3081
3082 Tue Apr 16 09:34:40 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3083
3084         * Defined that channel message to unknown Channel ID must
3085           cause SILC_NOTIFY_TYPE_ERROR notify message to the sender.
3086           Updated the protocol specs and the code in server.  The
3087           affected file is silcd/packet_receive.c.
3088
3089 Mon Apr 15 19:57:57 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3090
3091         * Added new notify type SILC_NOTIFY_TYPE_ERROR and specified
3092           that it is used to send error notifys if error occurs during
3093           some SILC packet processing, except commands.  The error
3094           types are same as for command reply types.  Defined that
3095           if private message is sent to unknown Client ID the error
3096           is sent in SILC_NOTIFY_TYPE_ERROR instead of command reply.
3097           Updated the protocol specs and code.  Affected files are
3098           lib/silccore/silcnotify.h, added lib/silccore/silcstatus.h,
3099           lib/silcclient/client_notify.c, silcd/packet_receive.c,
3100           and irssi/src/silc/core/client_ops.c.  Renamed the
3101           SilcCommandStatus to SilcStatus.
3102
3103         * Defined the use of extra WHOIS attributes in WHOIS command.
3104           The <Requested Attributes> (defined in a separate document)
3105           can be used to request additional information about user
3106           not returned by standard WHOIS command.  Defined that server
3107           can send WHOIS command directly to client.  Client provides
3108           the requested attributes to the server.  Updated the protocol
3109           specs.  Protocol TODO #4.  Implementation is not done yet
3110           (Protocol TODO #24).
3111
3112         * Renamed function silc_client_command_status_message to
3113           silc_client_status_message.  Affected files are
3114           lib/silcclient/command_reply.[ch].
3115
3116 Sun Apr 14 21:13:42 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3117
3118         * Changed the WHOIS, IDENTIFY and WHOWAS count arguments to
3119           32 bit integers.  Updated the protcol specs and the code.
3120           Affected files are silcd/command.c and
3121           lib/silcclient/command.c.
3122
3123 Sun Apr 14 19:49:02 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
3124
3125         * Fixed a bug in library where sending a bogus authentication
3126           payload would lead to a crash.  Affected file is
3127           lib/silccore/silcauth.c.
3128
3129 Sat Apr 13 13:09:24 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3130
3131         * Added detach_disabled and detach_timeout server config
3132           options to the server.  Affected files silcd/serverconfig.[ch],
3133           silcd/command.c and silcd/packet_receive.c.
3134
3135 Fri Apr 12 20:09:08 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3136
3137         * Added resolve_cmd_ident field to the SilcClientEntry structure
3138           too so that if the entry is for example being resolved so
3139           another command may attach to the same pending command reply
3140           without requiring to resolve the same entry again.  Added
3141           support for adding multiple pending commands for one
3142           command idenfier.  Affected files lib/silcclient/command.[ch],
3143           lib/silcclient/command_reply.[ch], lib/silcclient/idlist.h.
3144
3145 Fri Apr 12 10:17:51 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3146
3147         * Defined that server receives WHOIS command reply for private
3148           and secret channels too.  Updated protocol specs and the
3149           code in server.  Affected file silcd/command.c.
3150
3151         * Defined <channel user mode list> argument to WHOIS command
3152           reply for returning user modes on the channels.  The
3153           channel list now doesn't include the user mode anymore but the
3154           actual channel mode.  Updated protocol specs and the code in
3155           client and server.  Affected files are silcd/command_reply.c,
3156           silcd/command.c, silcd/server.c, irssi/src/silc/core/client_ops.c,
3157           and lib/silcclient/command_reply.c.
3158
3159         * Save the channels list in WHOIS command reply in normal server
3160           so that WHOIS always shows joined channels also in normal
3161           server and not just on router.  Affected file is
3162           silcd/command_reply.c.
3163
3164 Thu Apr 11 22:29:33 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3165
3166         * Defined that server receives USERS command reply for private
3167           and secret channels too.  Updated protocol specs and the
3168           code in server.  Affected file silcd/command.c.
3169
3170 Thu Apr 11 16:32:08 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3171
3172         * Changed the UMODE's mode mask argument to be optional.  If
3173           not provided then the command merely returns the current mode
3174           mask to the client.  Updated protocol specs and the server.
3175           Affected file is silcd/command.c.
3176
3177         * Added SILC session detachment/resuming support.  It is possible
3178           to detach by closing the network connection and then re-connect
3179           and resume to the old client session.  Added DETACHED user
3180           mode that server will set for detached client.  Added new
3181           packet RESUME_CLIENT which is used to perform the resuming
3182           process.  Added DETACH command.  Updated the protocol specs,
3183           core library, client and server.  Protocol TODO #22.  Very
3184           many affected files around the tree.
3185
3186 Wed Apr 10 16:32:01 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3187
3188         * Changed the CMODE's mode mask argument to be optional.  If
3189           not provided then the command merely returns the current mode
3190           mask to the client.  Updated protocol specs and the server.
3191           Affected file is silcd/command.c.
3192
3193         * Changed the Killer's Client ID in KILLED notify to be just
3194           any ID payload since router server is allowed to kill as well.
3195           Updated protocol specs, client libary and server.  Affected
3196           files are lib/silcclient/client_notify.c, silcd/packet_receive.c,
3197           and irssi/src/silc/core/client_ops.c.
3198
3199 Tue Apr  9 17:15:42 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3200
3201         * Added new user modes ANONYMOUS for special anonymous servers
3202           that may set the mode for client, and BLOCK_PRIVMSG which
3203           client may set to block incoming private messages unless the
3204           Private Message Key flag is set (using private keys to protect
3205           private messages).  Updated protocol specs and code in client
3206           and server and core library.  Protocol TODO #23.  Affected
3207           files are lib/silccore/silcmode.h, silcd/server.[ch],
3208           irssi/src/silc/core/client_ops.c, silcd/packet_receive.c,
3209           irssi/docs/help/in/umode.in, lib/silcclient/command.c.
3210
3211         * Added new channel user mode BLOCK_MESSAGES which the client
3212           may set to itself to tell server not send channel messages.
3213           Other packets such as channel key packets are still sent.
3214           Protocol TODO #23.  Updated the protocol specs, client and
3215           server.  Affected files are lib/silccore/silcmode.h,
3216           irssi/docs/help/in/cumode.in, lib/silcclient/command.c,
3217           lib/silcutil/silcutil.c, silcd/command.c, and
3218           silcd/packet_send.c.
3219
3220 Mon Apr  8 23:57:32 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3221
3222         * Redefined the Status Payload to include now two 8 bit fields,
3223           instead of one 16 bit field.  This now makes it possible to
3224           send list of errors.  Updated the protocol specs and the code
3225           in core library, client library and server.  Protocol TODO #1.
3226           Affected files are lib/silccore/silccommand.[ch],
3227           lib/silcclient/command_reply.[ch], silcd/command.c,
3228           silcd/command_reply.c and silcd/packet_receive.[ch].
3229
3230 Mon Apr  8 19:57:40 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
3231
3232         * Added config parse status SILC_CONFIG_EPRINTLINE, this status
3233           must be handled by the application and should tell the application
3234           that an error message was already printed, and it should print the
3235           config coords (line, filename, ...).  Affected files are
3236           silcd/serverconfig.c, lib/silcutil/silcconfig.[ch].
3237
3238         * Added local macro SILC_SERVER_CONFIG_ALLOCTMP to make the
3239           server config parsing code more readable.
3240
3241           Fixed a bug in the fetch_logging() config callback.
3242
3243           Affected files is silcd/serverconfig.c.
3244
3245         * Drop root privileges when started in foreground.  Don't drop them
3246           if debugging also.  Affected file is silcd/silcd.c.
3247
3248 Mon Apr  8 17:00:41 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3249
3250         * Added more IM-like features by introducing new user modes
3251           for setting various presence information.  Added new modes:
3252           INDISPOSED, BUSY, PAGE, HYPER and ROBOT.  Updated protocol
3253           specs and code.  Protocol TODO #19. Affected files are
3254           lib/silccore/silcmode.h, irssi/src/silc/core/client_ops.c,
3255           irssi/docs/help/in/umode.in and lib/silcclient/command.c.
3256
3257 Sun Apr  7 17:07:59 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3258
3259         * Added STATS command to the protocol after all, to return
3260           various statistical information about the network.  It can
3261           be used by clients to retrieve statistical information, and
3262           servers may use it to to fetch cell and network wide
3263           statistics from router.  Updated the protocol specs and
3264           implemented it to the server.  Protocol TODO #16.
3265           Affected files are lib/silccore/silccommand, silcd/command.[ch],
3266           silcd/command_reply.[ch].
3267
3268 Sat Apr  6 17:08:58 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3269
3270         * The LIST command reply in client libary now adds new channel
3271           entry if the returned channel doesn't exist yet in cache,
3272           and returns the channel entry to the application in the
3273           command_reply client operation.  Affected file is
3274           lib/silcclient/command_reply.c.
3275
3276         * Changed the channel message payload's MAC generation to
3277           include the IV in the MAC as well.  This way all relevant
3278           parts of the channel message payload are authenticated also
3279           with the channel message MAC (and not only by packet MAC).
3280           Causes incompatibility with 1.0 protocol.  Protocol TODO #7.
3281           Affected file is lib/silccore/silcchannel.c.
3282
3283         * Fixed the SKE to save the remote version, since the
3284           silc_ske_parse_version mistakenly checked wrong version,
3285           after it replaced the start payload.  Affected files are
3286           lib/silcske/silcske.[ch].
3287
3288 Fri Apr  5 16:03:03 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3289
3290         * Splitted lib/silcutil/silcutil.h into silcstrutil.h for
3291           string utility functions.  Added there also new functions
3292           silc_utf8_[encode/decode/valid] for UTF-8 string encoding.
3293           Affected files lib/silcutil/silcstrutil.[ch].
3294
3295         * Renamed silc_*_pem functions to silc_pem_* functions.  Affected
3296           files are lib/silcutil/silcstrutil.[ch].
3297
3298         * Defined that the security property fields in SKE SHOULD be
3299           UTF-8 encoded, defined that version string MUST be US-ASCII
3300           encoded, defined that passphrases sent in connection
3301           authentication protocol MUST be UTF-8 encoded.  Implemented
3302           these to the client and server.  Defined also that other
3303           passphrases sent in the protocol MUST be UTF-8 encoded.
3304           Affected files are lib/silcske/silcske.c,
3305           lib/silcclient/protocol.c, silcd/protocol.c,
3306           silcd/serverconfig.c, and lib/silccore/silcauth.c.
3307
3308         * Changed the silc_client_close_connection interface to not
3309           need the SilcSocketConnection which should not be visible
3310           to application.  Affected files are lib/silcclient/client.c
3311           and lib/silcclient/silcclient.h.
3312
3313         * Rewrote the text for Private Message Key Payload in the
3314           protocol specification.  Protocol TODO #11.
3315
3316 Wed Apr  3 16:24:51 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3317
3318         * Upgraded the protocol version to 1.1, updated protocol specs
3319           and software.
3320
3321         * Added the nickname as new argument to NICK_CHANGE notify and
3322           added it to protocol specs and implemented it to client and
3323           server.  Protocol TODO #3.  Affected files are silcd/idlist.[ch],
3324           silcd/command.c, silcd/packet_receive.c, packet_send.[ch], and
3325           lib/silcclient/client_notify.c.
3326
3327         * Added the killer's client ID to the KILLED notify and added
3328           it to protocol specs and implemented it to client and server.
3329           Protocol TODO #13.  Affected files are silcd/command.c,
3330           silcd/packet_receive.c, packet_send.[ch],
3331           lib/silcclient/client_notify.c, irssi/src/silc/core/client_ops.c.
3332           The killer's client entry is now returned to application in
3333           the `notify' client operation.
3334
3335         * Fixed the Max Argument fields that had too large value set
3336           in the protocol specs.  Protocol TODO #14.
3337
3338         * Added the LEAVE command reply to return the ID of parted
3339           channel.  Updated protocol specs and implemented it to the
3340           client and server.  Protocol TODO #15.  Affected files are
3341           silcd/command.c, lib/silcclient/command_reply.c.  The channel
3342           entry is now returned to application in the `command_reply'
3343           client operation.
3344
3345         * Rewrote the version SKE version checking in client libary
3346           and in server to use the silc_parse_version_string.  Affected
3347           files are lib/silcclient/protocol.c, silcd/protocol.c.
3348
3349         * Added SILC_STATUS_ERR_NO_CHANNEL_FOPRIV error status to few
3350           commands that was missing it, and updated protocol specs and
3351           the server implementation.  Protocol TODO #10.  The affected
3352           file is silcd/command.c.
3353
3354         * Defined new message flags SILC_MESSAGE_FLAG_REPLY to be
3355           generic reply to a generic request (REQUEST flag), and
3356           SILC_MESSAGE_FLAG_DATA to send any kind of data in a generic
3357           way.  A draft-riikonen-silc-flags-payloads-00.txt is written
3358           to define the payload for DATA flag.  Added the flags to
3359           the implementation.  Protocol TODO #9.  Affected file is
3360           lib/silccore/silcchannel.h.
3361
3362           Changed the client library to return the message length
3363           to application as well in the channel_message and private_message
3364           client operations.  Affected files are
3365           lib/silcclient/client_prvmsg, lib/silcclient/client_channel.c,
3366           lib/silcclient/silcclient.h, irssi/src/silc/core/client_ops.c,
3367           and lib/silcclient/client_ops_example.c.
3368
3369         * Added two new channel modes: SILC_CMODE_SILENCE_USERS
3370           and SILC_CMODE_SILENCE_OPERS which can be used to moderate
3371           the channel.  Updated protocol specs and impelemented this
3372           to client and server.  Protocol TODO #6.  Affected files are
3373           silcd/packet_receive.c, server_util.c, lib/silcclient/command.c,
3374           lib/silcclient/client_channel.c, lib/silccore/silcmode.h.
3375
3376           Added new options m and M to CMODE command in Irssi SILC
3377           client to set these modes.
3378
3379         * Deprecated all administrative commands from SILC protocol
3380           since they are highly implementation specific commands.
3381           Updated protocol specs.  Moved the old commands in
3382           implementations to private range of command types.  Affected
3383           files are silcd/command.c, lib/silcclient/command.c and
3384           lib/silcclient/command_reply.c.  Protocol TODO #8.
3385
3386         * Fixed a bug in server where sending unknown command crashes
3387           the server.  Affected file silcd/command.c.
3388
3389 Wed Apr  3 09:57:47 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
3390
3391         * Added SILC_PROTOCOLVERSION macro to check protocol version
3392           of a socket connection.  The affected file is
3393           lib/silcutil/silcsockconn.h.
3394
3395         * Added better error logging in rekey protocol.  Affected file
3396           silcd/protocol.c.
3397
3398         * Do not check public key types in SKE during rekey.  Affected
3399           file lib/silcske/payload.c.
3400
3401         * Fixed the rekey protocol with PFS, which was totally broken.
3402           Affected file silcd/protocol.c.
3403
3404 Tue Apr  2 14:55:06 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
3405
3406         * Some client implementations quit network by doing first LEAVE
3407           and then immediately SIGNOFF (like Bombyx).  We now do check
3408           after a short time after LEAVE notify and check whether the
3409           client is still valid after LEAVE, and if not we remove it from
3410           cache.  Affected file is lib/silcclient/client_notify.c.
3411
3412 Tue Apr  2 13:39:04 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
3413
3414         * Merged version 1.1.4 of zlib. Even if it not currently in use,
3415           it's good not to have security holes here.
3416
3417         * Fixed a negative refcount situtuation for the config context.
3418           Affected file is silcd/serverconfig.c.
3419
3420 Mon Apr  1 20:15:10 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
3421
3422         * ROBOdoc documented lib/silcutil/silcutil.h.
3423
3424 Sat Mar 30 21:06:45 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3425
3426         * Optimized even more the SilcPacketContext structure.  Now
3427           totally saved 16 bytes of memory per context after optimization.
3428           Affected files are lib/silccore/silcpacket.[ch].
3429
3430         * Made strict checks for valid SILC IDs.  Affected file is
3431           lib/silccore/silcid.c.
3432
3433 Sat Mar 30 18:15:55 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3434
3435         * Changed the object argument for silc_cipher_register,
3436           silc_hash_register, silc_hmac_register and silc_pkcs_register
3437           to const.  Affected files are lib/silccrypt/silccipher.[ch],
3438           silchash.[ch], silchmac.[ch] and silcpkcs.[ch].
3439
3440         * Changed the silc_get_username and silc_get_real_name to
3441           never fail.  Affected file lib/silcutil/unix/silcunixutil.c.
3442
3443         * Fixed the Irssi SILC Client to use the silc_get_username and
3444           silc_get_real_name insted of glib routines since the glib
3445           routines only corrupt stack.  Fixes the Irssi SILC to work in
3446           Cygwin.  Affected file irssi/src/silc/core/silc-core.c.
3447
3448         * Fixed the Irssi to not use g_get_home_dir since it crashes
3449           or returns garbage on cygwin and corrupts stack.  Added function
3450           get_home_dir to Irssi routines.  Affected files are
3451           irssi/src/core/misc.[ch] and irssi/src/core/core.c.
3452
3453 Fri Mar 29 21:55:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3454
3455         * Made some structure optimizations.  SFTP memory FS MemFSEntry
3456           entry structure.  Optimized SilcTask structure.  Optimized
3457           SilcPacketContext structure.
3458
3459           Affected files lib/silcsftp/sftp_fs_memory.c,
3460           lib/silcutil/silcschedule.c, lib/silccore/silcpacket.h.
3461
3462 Fri Mar 29 10:41:07 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3463
3464         * And yet again reverted back the config thing since Johnny
3465           screwed it up.  Affected file silcd/serverconfig.[ch], server.c,
3466           and silcd.c.
3467
3468         * Fixed memory leaks from config object.  Affected files are
3469           silcd/serverconfig.[ch].
3470
3471         * Added support for adding new connections to the server in rehash.
3472           After rehash they take effect.
3473
3474           Added support for changing the maximum allowed connections in
3475           rehash.  The number can grow but going smaller is not supported.
3476
3477           Added function silc_server_num_sockets_by_remote to the
3478           silcd/server_util.[ch].
3479
3480           Affected files are silcd/server.c, and silcd/serverconfig.[ch].
3481
3482 Fri Mar 29 03:26:12 CET 2002 Johnny Mnemonic <johnny@themnemonic.org>
3483
3484         * Added preliminary checking during config parsing for a valid
3485           public/private key and removed further checks in the code.
3486           Affected files are silcd/serverconfig.[ch], server.c.
3487
3488         * Moved functions silc_server_drop() and silc_server_daemonise()
3489           from server.c to silcd.c since they are stricly related to
3490           the application activity.
3491
3492         * Reverted a small part of the automatic ref/unref since
3493           it caused a double unref in some situations.  Affected
3494           files are silcd/silcd.[ch], server.c, serverconfig.c.
3495
3496         * Added some .cvsignore files in the lib directory.
3497
3498 Thu Mar 28 22:51:15 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3499
3500         * Fixed silc_net_gethostbyaddr to correctly resolve by
3501           address.  Affected file lib/silcutil/silcnet.c.
3502
3503         * Fixed the notify relaying to client.  The HMAC to be used
3504           with relayed packets ws wrong and caused decryption failure
3505           at the client end.  Affected file is silcd/packet_receive.c.
3506
3507 Thu Mar 28 19:02:05 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3508
3509         * Created new branch silc_protocol_1_0_branch.
3510
3511         * Reverted the silc_log_quick change in lib/silcutil/silclog.c.
3512
3513         * Changed the silc_server_config_* routines to be SilcServer
3514           independent.  They are now officially application specific code
3515           and not part of generic server implementation.  Affected files
3516           are silcd/serverconfig.[ch], silcd/silcd.c, silcd/server.c.
3517
3518 Thu Mar 28 17:01:43 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3519
3520         * Added automatic referencing of config context in the
3521           silc_server_config_alloc, and automatic unreferencing in the
3522           silc_server_config_destroy.  Affected files are
3523           silcd/serverconfig.[ch], silcd/silcd.c.
3524
3525         * Fixed the silc_log_quick handling in the logging routines.
3526           It didn't log quickly when it was TRUE.  Affected file is
3527           lib/silcutil/silclog.c.  Also the flush delay was set even
3528           if it was 0 in config file.  Affected file is
3529           silcd/serverconfig.c.
3530
3531         * Added support for changing key pair of the server in rehash.
3532           Affected file silcd/server.c.
3533
3534 Thu Mar 28 12:17:21 CET 2002  Pekka Riikonen <priikone@silcnet.org>
3535
3536         * Fixed the TOPIC_SET notify to not cras.  It changed the topic
3537           too early, before getting the channel entry.  Affected file
3538           is silcd/packet_receive.c.
3539
3540 Thu Mar 28 09:58:16 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
3541
3542         * Added functions silc_server_config_[ref/unref], these are used
3543           to prevent that the config object is destroyed.
3544
3545           No longer directly affect global variables silc_log_quick and
3546           silc_log_delay, they are first cached inside the config object
3547           and then applied with silc_server_config_setlogfiles().
3548
3549           silc_server_config_set_defaults() is now internal to
3550           serverconfig.c, there are no reasons to show this internal stuff
3551           to the server.
3552
3553           Affected files are silcd/serverconfig.[ch].
3554
3555         * Added macro SILC_SERVER_LOG_STDERR(), this should replace most
3556           fprintf's to stderr, since some code may be executed again after
3557           the server went into the background.  Affected files are
3558           silcd/server.[ch].
3559
3560         * Added rehash support. Added function silc_server_rehash() that
3561           will perform all the basic tasks of the rehashing procedure.
3562
3563         * Added command line option `-x, --hexdump'. This will enable the
3564           SILC_LOG_HEXDUMP calls that are no longer enabled with `--debug'.
3565           The option `--hexdump' implies `--debug'.
3566
3567         * Fixed a bad bug in the logging APIs (silcutil library) where
3568           the application would crash after calling silc_log_reset_all().
3569
3570 Wed Mar 27 19:43:16 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3571
3572         * Fixed the KICKED notify handling in client library to
3573           correctly remove the channel and all entries from the
3574           channel when I was kicked.  This bug crashed the client.
3575
3576           Fixed yet another but in KICKED notify handling to remove
3577           the kicked client correctly from the channel.
3578
3579           Affected file is lib/silcclient/client_notify.c.
3580
3581         * Fixed a minor bug in looking up correct client entry
3582           in KICKED notify in server.  Affected file is
3583           silcd/packet_receive.c.
3584
3585         * Fixed the lib/silcmath/Makefile.am to include the MPI and GMP
3586           sources correctly to distribution.  Fixes --with-gmp option.
3587
3588         * Removed the manual rehashing from ID Cache, and changed it
3589           to use the SILC Hash Table's auto rehash feature.  Affected
3590           file is lib/silccore/silcidcache.c.
3591
3592 Wed Mar 27 00:07:11 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3593
3594         * Fixed a bug in the silc_client_nickname_format function that
3595           handles the multiple same nickname formatting.  Two clients
3596           with same nickname caused problems after the first one left
3597           and rejoined.  It didn't format the nickname correctly.
3598           Affected file is lib/silcclient/idlist.c.
3599
3600 Tue Mar 26 19:33:03 CET 2002  Pekka Riikonen <priikone@silcnet.org>
3601
3602         * Don't change the topic if olod topic is same as new one.
3603           Affected file is silcd/packet_receive.c.
3604
3605 Mon Mar 25 21:11:35 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3606
3607         * Added cross-reference support to the SILC Documentation
3608           generator.  All types across all HTML files are now cross-
3609           referenced.  Affected files util/robodoc/generator.c and
3610           scripts/silcdoc/silcdoc.
3611
3612         * Added file lib/silcutil/silctypes.h to include all the
3613           arithmetic type definitions and some macros.  Removed
3614           includes/bitmove.h and moved macros to silctypes.h.
3615
3616 Mon Mar 25 17:19:46 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3617
3618         * Merged bugfixes for Irssi SILC client from irssi.org CVS.
3619
3620 Sun Mar 24 11:21:04 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3621
3622         * Added `type' argument to silc_id_payload_parse_id function which
3623           now returns the type of the ID to the sent pointer.  Affected
3624           file is lib/silccore/silcid.[ch].
3625
3626         * Added check for CMODE_CHANGE notify type that mode change is
3627           allowed by the sender.  Affected file silcd/packet_receive.c.
3628
3629         * Added check for CUMODE_CHANGE notify type that mode change is
3630           allowed by the sender.  Affected file silcd/packet_receive.c.
3631           Added the ID type as CUMODE_CHANGE notify type as argument
3632           to the `notify' client operation.  Affected files are
3633           lib/silcclient/client_notify.c, irssi/src/silc/core/client_ops.c.
3634
3635         * Added function silc_client_add_server to the client library.
3636           Added support for resolving also channel and server info when
3637           received unknown entity in notify packet.  Affected files are
3638           lib/silcclient/idlist.[ch], lib/silcclient/client_notify.c.
3639
3640         * Added function silc_command_get_status to return the command
3641           status from the command reply's argument payload.  Affected files
3642           are lib/silccore/silccommand.[ch].
3643
3644         * Added check for KICKED notify type that the kicking is
3645           allowed by the client.  Affected file silcd/packet_receive.c.
3646
3647         * Created function silc_get_input which can be used to get input
3648           (echo on or off) from user on command line.  Affected files are
3649           lib/silcutil/silcutil.[ch].
3650
3651 Sat Mar 23 09:51:26 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3652
3653         * Optimized silc_server_packet_relay_to_channel function.
3654           Added new function silc_channel_message_payload_encrypt which
3655           can be called directly if channel message payload needs to
3656           be encrypted and is already encoded (no need to call _encode
3657           function).  Packet relaying is now done by router without any
3658           extra memory allocations.  Affected files are
3659           lib/silccore/silcchanel.[ch], silcd/packet_receive.c and
3660           silcd/packet_send.c.
3661
3662         * Fixed the INVITE notify handling.  It took wrong arguments
3663           as invite list and invite delete.  Affected file is
3664           silcd/packet_receive.c.
3665
3666         * Added check for TOPIC_SET notify type that the topic change is
3667           allowed by the client.  Affected file silcd/packet_receive.c.
3668
3669         * Added check for INVITE notify type that inviting is allowed by
3670           the client.  Affected file silcd/packet_receive.c.
3671
3672         * Changed the silc_server_client_on_channel to return the
3673           SilcChannelClientEntry as well.  Moved the function
3674           silc_server_check_cmode_rights to server_util.[ch].
3675           Affected files are silcd/server_util.[ch], silcd/command.c.
3676
3677         * Added function silc_server_check_umode_rights to check whether
3678           changing client's user mode is allowed.  Added check for
3679           UMODE_CHANGE notify type that the umode change is allowed
3680           by the client.  Affected files are silcd/server_util.[ch],
3681           silcd/packet_receive.c and silcd/command.c.
3682
3683 Fri Mar 22 12:25:58 CET 2002  Pekka Riikonen <priikone@silcnet.org>
3684
3685         * Fixed the SILC_PACKET_MAX_ID_LEN to actually be the max
3686           ID length.  It ignored that ID can be IPv6 based as well.
3687           Affected file lib/silccore/silcpacket.h.
3688
3689         * Fixed the silc_id_id2str and silc_id_str2id to take the
3690           IPv6 address offset's into consideration.  Affecte file is
3691           lib/silccore/silcid.c.
3692
3693 Thu Mar 21 20:44:13 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3694
3695         * Fixed the internal Unix scheduler functions to check for
3696           NULL context they may receive.  The affected file is
3697           lib/silcutil/unix/silcunixschedule.c.
3698
3699 Thu Mar 21 19:12:22 EET 2002  Timo Sirainen <tss@iki.fi>
3700
3701         * Changed hardcoded ~/.silc paths to use get_irssi_dir() so you
3702           can specify different directory with --home command line
3703           parameter. Affected files irssi/src/silc/core/client_ops.c,
3704           clientutil.c
3705
3706         * SILC-specific commands aren't now executed if the active server
3707           isn't of SILC-type, so there won't be problems with having
3708           IRC and SILC protocol support in same client. Affected files
3709           irssi/src/silc/core/silc-channels.c, silc-servers.c,
3710           silc-commands.h
3711
3712 Wed Mar 20 11:06:57 CET 2002  Pekka Riikonen <priikone@silcnet.org>
3713
3714         * Improved the signal support in SILC Schedule.  Added new
3715           function silc_schedule_signal_call which is used by application
3716           to mark a signal to be called.  It is now safe to perform
3717           any kind of tasks in signal callbacks since it is guaranteed
3718           that the application specified signal callback is called
3719           after the signal is over.  Affected files are
3720           lib/silcutil/silcschedule.[ch], lib/silcutil/*/silc*schedule.c.
3721
3722 Tue Mar 19 20:42:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3723
3724         * Added `name' field to SilcChannelPrivateKey to represent
3725           application given name for the key.  Moved also the context from
3726           lib/silcclient/idlist.h into lib/silcclient/silcclient.h.
3727           Added the `name' argument also to the function
3728           silc_client_add_channel_private_key.
3729
3730           Added function silc_client_current_channel_private_key to set the
3731           current channel private key in use.
3732
3733           Added "change" command to KEY command which can be used to change
3734           the current channel private key.  Bound the command also to
3735           alt+K (Alt+Shift+k).
3736
3737           Also affected files lib/silcclient/client_channel.c,
3738           irssi/src/docs/help/in/key.in, irssi/src/silc/core/silc-channel.c.
3739
3740 Tue Mar 19 16:32:43 CET 2002  Pekka Riikonen <priikone@silcnet.org>
3741
3742         * Added silc_rng_get_byte_fast function in to the
3743           lib/silccrypt/silcrng.[ch].
3744
3745         * Changed the interface of silc_packet_assemble and the
3746           silc_packet_send_prepare.  If silc_packet_assmble is now
3747           called the application does not call silc_packet_send_prepare
3748           because the library will call it automatically.  These
3749           interfaces now also return a reference to the outgoing buffer
3750           which includes the assembled packet, which the application can
3751           use to encrypt the packet.
3752
3753           Affected files are lib/silccore/silcpacket.[ch],
3754           lib/silcclient/client.c, client_channel.c client_prvmsg.c,
3755           silcd/packet_send.c, server_backup.c and packet_receive.c.
3756
3757         * Fixed a packet sending bug on very high load, where outgoing
3758           packet queue wasn't handled correctly and packets got corrupted.
3759           Affected files are lib/silcutil/*/silc*sockconn.c,
3760           lib/silcclient/client.c and silcd/server.c.
3761
3762 Mon Mar 18 21:00:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3763
3764         * Added macro SILC_PACKET_DATALEN which can be used during
3765           packet assembling to check whether the data to be added to
3766           the packet will fit to SILC_PACKET_MAX_LEN.  If not the data
3767           len is truncated until it fits it.
3768
3769           Added checks for maximum length of channel message payload and
3770           private message payload also.
3771
3772           Added checks for maximum packet length in server and in
3773           client library.
3774
3775           Affected files are lib/silccore/silcpacket.h, silcd/packet_send.c,
3776           lib/silcclient/client.c, lib/silccore/silcchannel.c and
3777           lib/silccore/silcprivate.c, lib/silcclient/client_channel.c and
3778           lib/silcclient/client_prvmsg.c.
3779
3780 Mon Mar 18 14:54:42 CET 2002  Pekka Riikonen <priikone@silcnet.org>
3781
3782         * Added silc_server_packet_queue_purge call to the
3783           silc_server_disconnect_remote to assure that all data in the
3784           queue before disconnecting is sent to the network.  Affected
3785           file silcd/server.c.
3786
3787 Sun Mar 17 19:26:16 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3788
3789         * Added the deleting of server's own ID cache entry to the
3790           silc_server_free function.  Free also everything else that
3791           has been allocated in silc_server_init.  The affected file
3792           is silcd/server.c.
3793
3794 Sun Mar 17 15:44:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3795
3796         * Added functions silc_parse_version_string, silc_version_to_num,
3797           and silc_ske_parse_version to parse SILC protocol style version
3798           strings.  Affected files lib/silcutil/silcutil.[ch] and
3799           lib/silcske/silcske.[ch].
3800
3801         * Added new configuration params: version_protocol, version_software
3802           and version_software_vendor to specify what version the remote
3803           host must at least be to be able to connect to server.  The vendor
3804           string can be regex matched too.  Added new function
3805           silc_server_connection_allowed to check maximum number of allowed
3806           connections, and allowed versions for incoming connections.
3807           Affected files are silcd/server.c, server_util.[ch] and
3808           serverconfig.[ch].
3809
3810 Sun Mar 17 10:24:50 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3811
3812         * Added preliminary support for signals in scheduler.  The
3813           signals we care about are now blocked always when the scheduler
3814           is locked.  This way we can synchronise the use of signal with
3815           scheduler.  It is guaranteed that when signal occurs the scheduler
3816           is not locked, and thus new tasks can be safely added to the
3817           scheduler.
3818
3819           Renamed silc_schedule_wakeup_init and silc_schedule_wakeup_uninit
3820           to silc_schedule_internal_init and silc_schedule_internal_uninit.
3821           Added new platform specific routines
3822           silc_schedule_internal_signals_[un]block and
3823           silc_schedule_internal_signal_[un]register.
3824
3825           Added new functions to SILC Schedule API:
3826           silc_schedule_signal_[un]register.  Each signal that application
3827           is going to use should be registered to the scheduler.
3828
3829           Affected files are lib/silcutil/silcschedule.[ch],
3830           lib/silcutil/*/silc*schedule.c.
3831
3832 Sat Mar 16 22:39:23 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3833
3834         * Check for unauthenticated client and server in the
3835           silc_server_new_client and silc_server_new_server functions.
3836           Affected file silcd/packet_receive.c.
3837
3838         * Added function silc_string_is_ascii to check whether given
3839           string is 7-bit ASCII string.  Affected files are
3840           lib/silcutil/silcutil.[ch].
3841
3842         * Added function silc_id_is_valid_server_id into the
3843           silcd/serverid.c and added checking for valid Server ID's in
3844           silc_server_new_server.  The Server ID must always be based
3845           on the server's public IP address.
3846
3847         * Added logging of DISCONNECT packet message in the server.
3848           Affected file silcd/server.c.
3849
3850 Sat Mar 16 18:04:30 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3851
3852         * Changed all library interfaces that use Global RNG to also
3853           accept SilcRng as argument.  Affected files are
3854           lib/silcclient/command.c, lib/silccore/silcauth.[ch],
3855           lib/silccore/silcchanel.[ch], lib/silcclient/client_channel.c,
3856           silcd/packet_send.c, lib/silccore/silcprivate.[ch],
3857           lib/silcmath/silcprimegen.c, lib/silcmath/silcmath.h, and
3858           lib/silccrypt/rsa.c.
3859
3860         * Added function silc_pkcs_generate_key to the
3861           lib/silccrypt/silcpkcs.[ch] for applications so that they
3862           don't need to do pkcs->pkcs->init calls anymore.
3863
3864         * Remove SilcSocketConnection from the SFTP API since it really
3865           wasn't needed there.  The application has the information
3866           saved in its contexts anyway and the SFTP layer doesn't need
3867           know about it.  Affected files lib/silcsft/silcsftp.h and
3868           lib/silcsftp/sftp_[server/client].c.
3869
3870         * Rewrote the SILC SIM (modules) interface in lib/silcsim.[ch].
3871           The SilcSimContext is not SilcSim.
3872
3873         * Fixed possible buffer overflows in silc_id_render in the
3874           lib/silcutil/silcutil.c.
3875
3876         * On EPOC the global crypto module lists are not used at all
3877           in the crypto library.  Added support for using the constant
3878           algorithm list on EPOC.  Affected files are
3879           lib/silccrypt/silccipher.c, silchash.c, silchmac.c and
3880           silcpkcs.c.
3881
3882         * Fixed the handling of third parameter of KICKED notify, since
3883           it was mistakenly updated to SILC Protocol 1.0 even though it
3884           is to be included in 1.1.  Since it is not in 1.0 it is not
3885           mandatory, and this fix now handles it only if it is provided,
3886           and it is not error if it is not provided.  Affected file
3887           lib/silcclient/client_notify.c.
3888
3889 Sat Mar 16 09:07:27 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3890
3891         * Handled CHANNEL_CHANGE notify (ignore it) in Irssi SILC
3892           client.  Affected file irssi/src/silc/core/client_ops.c.
3893
3894         * Merged with Irssi 0.8.4 from irssi.org CVS.
3895
3896 Thu Mar 14 12:53:57 CET 2002  Pekka Riikonen <priikone@silcnet.org>
3897
3898         * Check for valid socket connection in client entries before
3899           sending any messages.  Fixes a crash, but doesn't fix some
3900           other underlaying bug that is lurking there.  Affected
3901           file silcd/packet_send.c.
3902
3903 Thu Mar 14 13:38:12 EET 2002  Timo Sirainen <tss@iki.fi>
3904
3905         * $usermode, $cumode and $cumode_space expandos shouldn't do
3906           anything with non-SILC server records. Affected file
3907           irssi/src/silc/core/silc-expandos.c
3908
3909 Wed Mar 13 21:38:26 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3910
3911         * Fixed the silc_net_check_[host/local]_by_sock to support
3912           IPv6 bound sockets as well.  Now they can return IPv6 addresses
3913           as well.  Affected file lib/silcutil/silcnet.c.
3914
3915         * Fixed silc_net_addr2bin to correctly convert IPv6 addresses.
3916           Affected lib/silcutil/unix/silcunixnet.c.
3917
3918         * Fixed ID rendering (at least on some platforms, not NetBSD)
3919           for IPv6 addresses.  Affected file lib/silcutil/silcutil.c.
3920
3921 Tue Mar 12 17:58:59 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3922
3923         * Added silc_hash_public_key and silc_hash_public_key_compare
3924           functions to be used with SilcHashTable.  They can be used to
3925           hash public keys and compare public keys in hash table.  Affected
3926           file lib/silcutil/silcutil.[ch].
3927
3928         * Added support for specifying multiple public keys for Client
3929           connection section in server configuration file.  This makes it
3930           possible to accept multiple public keys from same host, or to
3931           make a section that accepts any incoming host, and have the
3932           accepted public keys listed in the section.
3933
3934           Added functions silc_sever_[find/get]_public_key,  added the
3935           support for this actually to all connection sections but only
3936           the Client section is currently allowed to specify multiple
3937           public keys.
3938
3939           Affected files are silcd/server.c, server_internal.h,
3940           command.c, protocol.c, server_util.[ch], packet_receive.c.
3941
3942 Mon Mar 11 23:37:38 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3943
3944         * Merged Irssi 0.8.2 from irssi.org CVS.
3945
3946 Sun Mar 10 23:34:48 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
3947
3948         * If silc_debug is TRUE, also output standard logging messages
3949           to stderr with the debug output.
3950
3951           Made silc_log_reset_all() flushing all channels before returning.
3952           Also fixed some documentation typos.
3953
3954           Affected files are lib/silcutil/silclog.[ch].
3955
3956 Sun Mar 10 20:07:49 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3957
3958         * Fixed the server to check correctly the amount of connections
3959           from single host, by checking also the type of the connection.
3960           Fixed also the comparison of number of connections and number
3961           of allowed connections.  Affected files are silcd/server.c,
3962           server_util.[ch].
3963
3964 Fri Mar  8 17:16:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3965
3966         * Fixed the USERS command reply to save the user's mode on the
3967           channel as well.  Fixed JOIN command reply to check whether a
3968           client is on channel already and not join it twice.  Affected
3969           file lib/silcclient/command_reply.c.
3970
3971         * Added new file silc-expandos.c into irssi/silc/core/ to return
3972           various stuff for various signal for the statusbar etc. updating.
3973           Now Irssi SILC client prints channel user modes etc. on the
3974           statusbar.
3975
3976         * The user mode (like server/router operator changes) is now shown
3977           on the Irssi SILC client's statusbar.  The affected files are
3978           irssi/src/silc/core/client_ops.c, silc-expandos.c.
3979
3980 Thu Mar  7 19:21:22 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3981
3982         * Changed silc_mutex_[un]lock calls in lib/silcutil/silcschedule.c
3983           to SILC_SCHEDULE_[UN]LOCK macros.
3984
3985         * Added more error printing to logs in server code.  Affected
3986           files silcd/server.c and silcd/protocol.c.
3987
3988         * Fixed -S option parsing in Irssi SILC Client.  Affected file
3989           irssi/src/silc/core/silc-core.c.
3990
3991         * Added silc_buffer_alloc_size function.  Affected file is
3992           lib/silcutil/silcbuffer.h.
3993
3994 Tue Mar  5 14:37:27 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3995
3996         * Changed all silc_[hash|hmac|cipher|pkcs]_default tables to
3997           constants.  Affected files in
3998           lib/silccrypt/silcpkcs.[ch], silchash.[ch], silchmac.[ch] and
3999           silccipher.[ch].
4000
4001         * Changed the internal SFTP Memory FS table to const.  Affected
4002           file lib/silcsftp/sftp_fs_memory.c.
4003
4004 Sun Mar  3 18:37:13 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4005
4006         * Fixed the buffer formatting and unformatting routines to
4007           check the size of 64 bits types with sizeof().  Affected
4008           file is lib/silcutil/silcbuffmt.c.
4009
4010 Mon Feb 25 17:19:05 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4011
4012         * Removed 0.6.x backwards support.
4013
4014 Sun Feb 24 12:53:25 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4015
4016         * Changed all integer type names:
4017           [u]int[8/16/32/64] -> Silc[UInt/Int][8/16/32/64].  This is
4018           to avoid collisions with other libraries using same type names
4019           as we did.
4020
4021 Sat Feb 23 20:31:43 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4022
4023         * Added `prefer_ipv6' argument to the functions
4024           silc_net_gethostbyname[_async].  If it is TRUE it will return
4025           IPv6 address over IPv4.  If FALSE IPv4 address is returned
4026           even if IPv6 address was found.  Affected files
4027           lib/silcutil/silcnet.[ch].
4028
4029         * Added support silc_net_create_connection[_async] to fallback
4030           to IPv4 address if IPv6 address could not be used (like if
4031           it doesn't work on a specific system).  Affected file in
4032           lib/silcutil/unix/silcunixnet.c.
4033
4034 Sat Feb 23 15:20:30 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4035
4036         * Added silc_schedule_reinit function to do the enlarging
4037           of the max tasks handling capabilities of the scheduler.
4038           Affected files lib/silcutil/silcschedule.[ch].
4039
4040 Wed Feb 20 20:41:01 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4041
4042         * Added automatic extern "C" { ... } for C++ compilers so the
4043           application does not need to define them.  Affected file
4044           includes/silcincludes.h.
4045
4046         * Renamed lib/silcclient/silcapi.h to silcclient.h as the
4047           old name went against naming convention.  Applications now
4048           include "silcclient.h" instead of "clientlibincludes.h".
4049           Removed includes/clientlibincludes.h, it is redundant now.
4050
4051         * Renamed includes/version.h to silcversion.h.
4052
4053         * Added really preliminary support for OS/2 into the util
4054           library.  Only thread & mutex API is implemented, others
4055           are still to be implemented.  Created the lib/silcutil/os2/
4056           directory.  Created also file includes/silcos2.h.
4057
4058 Wed Feb 20 18:48:49 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4059
4060         * Added preliminary BeOS support into the util library.
4061           Created lib/silcutil/beos/, and implemented all the needed
4062           functions to support SILC on BeOS.  Created also file
4063           includes/silcbeos.h.
4064
4065 Mon Feb 18 15:49:22 EET 2002  Timo Sirainen <tss@iki.fi>
4066
4067         * Added proper initializations to silc's irssi code, so it's
4068           now possible to load it as module.  Affected files
4069           irssi/src/silc/core/silc-core.c,
4070           fe-common/silc/fe-common-silc-core.[ch] and fe-text/silc.c
4071
4072 Sun Feb 17 19:02:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4073
4074         * Merged latest Irssi (0.8.1) from the irssi.org's CVS into
4075           the SILC tree.
4076
4077         * Fixed the silcdoc document generator to correct generate
4078           docs from all kinds of filenames.  Affected files are
4079           util/robodoc/Source/generator.c, scripts/silcdoc/silcdoc
4080
4081         * ROBOdoc documented lib/silcutil/silcmemory.h.
4082           Added also new function silc_memdup.
4083
4084         * Removed lib/silcutil/silcbufutil.h and moved those routines
4085           to the lib/silcutil/silcbuffer.h.
4086
4087 Sun Feb 17 15:52:30 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4088
4089         * Added `user_count' to the SilcChannelEntry which now tells the
4090           number of users on the channel.  The user count is now saved
4091           in normal server of global channels as well.  Affected files
4092           silcd/server.c, idlist.h, packet_receive.c and command.c.
4093
4094         * Splitted lib/silcutil/silcutil.[ch] into silcfileutil.[ch] to
4095           include file utility functions.
4096
4097         * Fixed the lib/silcsftp/sftp_fs_memory.c to use silcutil routines
4098           instead of calling directly OS routines.
4099
4100         * Fixed NICK change printing in Irssi SILC Client. Fixed
4101           KICKED notify printing in Irssi SILC Client.  Affected file
4102           irssi/src/silc/core/client_ops.c.
4103
4104         * Fixed a NICK change bug in client library, to not recreate the
4105           client_entry->channels hash table everytime nick is changed.
4106           Affected file lib/silcclient/client.c.
4107
4108 Sun Feb 17 10:10:14 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4109
4110         * ROBOdoc documented the lib/silcske/silcske.h, and improved
4111           the SKE interface a bit.
4112
4113         * Fixed padding problem in PKCS#1. The padding was not actually
4114           random since the random number generator was used incorrectly.
4115           This security bug affects only when encrypting with PKCS#1, and
4116           it is not currently used at all in SILC. SILC only use signing
4117           with PKCS#1. Affected file lib/silccrypt/pkcs1.c.
4118
4119 Sat Feb 16 13:44:24 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4120
4121         * Rewrote the notify handling in Irssi SILC client to not call
4122           the events as signals.  Fixes problems with Perl support.
4123           Affected files irssi/src/silc/core/client_ops.c, silc-channels.c.
4124
4125         * Send the auto-nicking NICK command in client library with
4126           little timeout after connecting.  The affected file is
4127           lib/silcclient/client.c.
4128
4129         * Added following new config file settings:
4130           channel_rekey_secs, key_exchange_rekey, key_exchange_pfs,
4131           key_exchange_timeout, conn_auth_timeout, connections_max,
4132           links_max.
4133
4134           Implemented all the new config settings handling in the server.
4135
4136           Optimized the use of SKE Mutual flag usage.  Use it only
4137           if connection authentication protocol is not based in public
4138           key authentication.
4139
4140           Renamed all SilcServerConfigSection* to SilcServerConfig*
4141           to have a bit shorter names.
4142
4143           Affected files silcd/serverconfig.[ch], server.[ch], and
4144           protocol.[ch].
4145
4146 Sat Feb 16 02:46:43 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
4147
4148         * Cleaned up the listening sockets code, preparing for the rehash
4149           support.  Affected file is silcd/server.c.
4150
4151         * Fixed some output messages.  Affected files are silcd/silcd.c,
4152           and silcd/server.c.
4153
4154 Fri Feb 15 19:10:20 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4155
4156         * Create lib/doc/silcrng_intro.html document as introduction
4157           to SILC RNG.  ROBOdoc documented lib/silccrypt/silcrng.h.
4158
4159 Fri Feb 15 13:23:03 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
4160
4161         * Fixes to the silcd config template.  Affected file is
4162           doc/example_silcd.conf.in.
4163
4164         * Removed type casts from silc_calloc(), conforming to the
4165           CodingStyle.  Affected file is lib/silcutil/silcconfig.c.
4166
4167         * Removed param_name member from client, server, and router
4168           section structs, now identifying the param directly.
4169
4170           Added CONFIG_FREE_AUTH macro in config file parsing.
4171
4172           Affected files are silcd/serverconfig.[ch].
4173
4174 Fri Feb 15 12:24:08 EET 2002  Timo Sirainen <tss@iki.fi>
4175
4176         * Fixed command line parameter handling. All SILC initialization
4177           is now done in silc_core_init() which also fixes autoconnecting
4178           to servers.
4179
4180           Affected files irssi/src/silc/core/silc-core.c,
4181           irssi/src/fe-text/silc.c.
4182
4183 Thu Feb 14 22:03:58 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4184
4185         * Added new configuration options and blocks:
4186           keepalive_secs, reconnect_count, reconnect_interval,
4187           reconnect_interval_max, reconnect_keep_trying and
4188           require_reverser_lookup.  Added ConnectionParam block, and
4189           implemented the connection parameters when connecting as
4190           initiator and when accepting connections as responder.
4191
4192           Added CONFIG_IS_DOUBLE macro in config file parsing, to check
4193           whether given configuration value has been given already.
4194
4195           Affected files silcd/serverconfig.[c], server.[c].
4196
4197         * Splitted the doc/example_silcd.conf.in.  Separated the crypto
4198           algorithm parts and created new file silcalgs.conf, that
4199           is now included from the example_silcd.conf.in.
4200
4201         * Optimized the silc_server_connect_to_router_second to take
4202           the connection configuration object from the SilcServerConnection
4203           object instead of finding it during the connecting phase.
4204           Added the configuration object to SilcServerConnection struct.
4205           Affected files silcd/server_internal.h, server.c.
4206
4207 Thu Feb 14 16:02:26 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4208
4209         * Add the client on channel after it was resolved at the
4210           channel message receiving, and it was not already on the
4211           channel.  Affected file lib/silcclient/client_channel.c.
4212
4213 Wed Feb 13 23:16:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4214
4215         * Fixed the public key authentication to allocate always the
4216           destination signature buffer instead of using static buffer.
4217           Affected file silcd/protocol.c.
4218
4219 Wed Feb 13 20:51:13 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4220
4221         * Unified the serverconfig.[ch]'s helper function interface.
4222           Affected file silcd/serverconfig.[ch].
4223
4224         * Removed doc/example_silc.conf.in since it is redundant.
4225           The make install will now install irssi/silc.conf file.
4226
4227         * Added new Passphrase and Publickey authentication methods to
4228           config file, allowing both public key and passphrase based
4229           authentication to be set at the same time.
4230
4231           Added `prefer_passphrase_auth' setting in config file which
4232           can be used to set to prefer passwd auth if both passwd and
4233           public key is set.  If not set, public key is preferred.
4234           This has effect only when being initiator (responder will try
4235           both anyway).
4236
4237           Added support for authentication with passphrase and public key
4238           at the same time.  The passphrase is tried first always since
4239           it is faster to check.
4240
4241           Affected file silcd/serverconfig.[ch], server.c, protocol.[ch].
4242
4243 Wed Feb 13 12:46:25 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
4244
4245         * Merged the new SILC Config library, with the server parsing
4246           support.  Read the header file silcconfig.h or the toolkit
4247           documentation for the news.  Affected files are
4248           doc/example_silcd.conf.in lib/silcutil/silcconfig.[ch]
4249           silcd/command.c silcd/packet_receive.c silcd/packet_send.c
4250           silcd/protocol.c silcd/server.c silcd/server_backup.c
4251           silcd/serverconfig.[ch] silcd/silcd.c.
4252
4253         * Fixed some silclog documentation.  Affected file is
4254           lib/silcutil/silclog.h.
4255
4256 Sun Feb 10 18:11:30 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4257
4258         * The silc_cipher_register, silc_hash_register and
4259           silc_hmac_register now checks if the object to be registered
4260           is registered already.  Affected files are
4261           lib/silccrypt/silccipher.c, silchash.c and silchmac.c.
4262
4263 Sun Feb 10 15:48:38 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4264
4265         * Merged new irssi from irssi.org's CVS, the version 0.7.99.
4266
4267 Sat Feb  9 14:54:33 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4268
4269         * Allow zero length channel messages inside the Channel Message
4270           Payload.  Affected file lib/silccore/silcchannel.c.
4271
4272         * Fixed scripts/silcdoc/silcdoc to support all kinds of filenames
4273           as header filenames.
4274
4275         * Removed lib/silcclient/README and created HTML file
4276           lib/silcclient/silcclient_using.html, which is now included
4277           as part of Toolkit documentation.
4278
4279 Thu Feb  7 10:12:25 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4280
4281         * Fixed CUMODE_CHANGE notify handling to change the mode of
4282           correct client.  Affected file lib/silcclient/client_notify.c.
4283
4284         * Make silc_rng_alloc fail if it cannot allocate the sha1
4285           hash algorithm.  Affected file lib/silccrypt/silcrng.c.
4286
4287 Sun Feb  3 17:20:52 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4288
4289         * Fixed the file transfer's key agreement payload to include
4290           zero port also if the hostname is NULL because it could not
4291           be bound.
4292
4293           Call file transfer monitor callback now also if error occurs
4294           during key agreement protocol.
4295
4296           Changed the silc_client_file_send interface to return the
4297           SilcClientFileError instead of session id.  The session ID
4298           is returned into pointer provided as argument.
4299
4300           Check that the file exists locally before sending the
4301           file transfer request at all.
4302
4303           Affected file lib/silcclient/client_ftp.c, silcapi.h.
4304
4305         * Added SILC_CLIENT_FILE_KEY_AGREEMENT_FAILED file transfer
4306           error than can occur while key agreement protocol.  Affected
4307           file lib/silcclient/silcapi.h.
4308
4309         * Fixed the event_mode CMODE handler to not crash when mode
4310           is changed and +k mode is set in the channel.  Affected file
4311           irssi/src/silc/core/silc-channels.c.
4312
4313         * Fixed SILC_LOG_ERROR to give out Error and not Warning, and
4314           SILC_LOG_WARNING to give out Warning and not Error.  Affected
4315           file lib/silcutil/silclog.c.
4316
4317         * Fixed the channel message payload decryption in the function
4318           silc_channel_message_payload_decrypt to not modify the original
4319           buffer before it is verified that the message decrypted
4320           correctly.  Otherwise, next time it is called with correct
4321           channel key it won't encrypt since the payload is corrupted.
4322           Affected file lib/silccore/silcchannel.c.
4323
4324 Sun Feb  3 11:46:12 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4325
4326         * Do not constantly resize the window.  A fix patch by cras.
4327           Affected file irssi/src/fe-text/screen.c.
4328
4329 Sat Feb  2 16:54:18 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4330
4331         * Applied IPv6 fix patch from Jun-ichiro itojun Hagino.
4332           Affected file lib/silcutil/silcnet.c.
4333
4334 Fri Feb  1 22:33:11 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4335
4336         * Fixed a bug in hash table internal routine for traversing
4337           the table with foreach callback.  The current entry may
4338           become invalid in the callback but it was referenced after
4339           the callback returned.
4340
4341           Do not allow auto rehashing of hash table during the
4342           silc_hash_table_foreach operation, for same reasons as it is
4343           not allowed for SilcHashTableList.  Affected files are
4344           lib/silcutil/silchashtable.[ch].
4345
4346 Fri Feb  1 14:55:00 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4347
4348         * Defined DLLAPI into silcincludes.h and silcwin32.h for
4349           Win32 DLL.  extern's in header files are now declared with
4350           DLLAPI.
4351
4352 Thu Jan 31 23:34:33 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4353
4354         * Fixed private message handling.  It used some old code that
4355           caused the client to crash.  Affecte file is
4356           lib/silcclient/client_prvmsg.c.
4357
4358 Thu Jan 31 19:06:22 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4359
4360         * Added function silc_client_add_channel,
4361           silc_client_replace_channel_id, and removed functions
4362           silc_client_new_channel_id and silc_idlist_get_channel_by_id
4363           from client library.
4364
4365         * Added cross reference of the joined channels to the
4366           SilcClientEntry, and changed the SilcChannelEntry's
4367           users list to SilcHashTable.  The affected files are
4368           lib/silcclient/idlist.[ch].
4369
4370         * Fixed a bug in hash table tarversing.  While the hash table
4371           is traversed with SilcHashTableList the table must not be
4372           rehashed.  It is now guaranteed that auto rehashable tables
4373           are not rehashed while tarversing the list.  Also defined that
4374           silc_hash_table_rehash must not be called while tarversing
4375           the table.  Added function silc_hash_table_list_reset that must
4376           be called after the tarversing is over.  The affected files are
4377           lib/silcutil/silchashtable.[ch].
4378
4379         * Changed all hash table traversing to call the new
4380           silc_hash_table_list_reset in server and in client library.
4381
4382         * Added function silc_client_on_channel to return the
4383           SilcChannelUser entry if the specified client entry is joined
4384           on the specified channel.  This is exported to application as
4385           well.  Affected files lib/silcclient/client_channel.c, silcapi.h.
4386
4387 Wed Jan 30 19:14:31 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4388
4389         * Fixed founder regaining problem with JOIN command on normal
4390           server.  The notify for mode change must be sent always and
4391           not only if !cmd->pending.  Affected file silcd/command.c.
4392
4393         * Fixed the WHOWAS command's reply sending to support the
4394           lists correctly.  Affected file silcd/command.c.
4395
4396 Wed Jan 30 11:11:47 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4397
4398         * When sending JOIN command to router for processing the
4399           sender's old command identifier was not saved back to the
4400           sender's command context, fixed now.  The affected file is
4401           silcd/command.c.
4402
4403         * Create the key in JOIN command of the router did not return
4404           the channel key, added check for this.  Affected file is
4405           silcd/command.c.
4406
4407         * Fixed a channel ID update bug in JOIN command reply.  Do
4408           not directly upgrade the ID but call the function
4409           silc_idlist_replace_channel_id if the ID was changed.
4410           Affected file silcd/command_reply.c.
4411
4412         * Fixed memory leaks from command calling if it would fail.
4413           Affected file silcd/command.c.
4414
4415 Tue Jan 29 19:49:31 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4416
4417         * Applied patches from cras:
4418
4419           Memory leak fixes around libaries, irssi window resize fix,
4420           new silclist.h and silcdlist.h, all extern inline changed to
4421           static inline.
4422
4423         * Removed dotconf from lib/dotconf, not needed anymore.
4424
4425         * Removed TRQ from lib/trq, not needed anymore.
4426
4427         * Do more frequent heartbeats (5 minutes instead of 10 minutes)
4428           with server connections.  Later this will be configurable
4429           in config file after new config file is done.  Affected file
4430           silcd/server.c.
4431
4432 Tue Jan 29 10:35:03 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4433
4434         * Fixed a crash in server related to channel announcements.
4435           Affected file silcd/server.c.
4436
4437 Mon Jan 28 17:49:42 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4438
4439         * Fixed memory leaks in silc_server_create_new_channel*
4440           functions.  Affected file silcd/server.c.
4441
4442         * Fixed the CHANNEL_CHANGE notify to re-announce the channel
4443           which ID was changed.  This way the router will send the
4444           user list for the channel again, and server won't be in
4445           desync in some rare circumstances.  Affected file is
4446           silcd/packet_receive.c.
4447
4448 Sun Jan 27 21:04:19 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4449
4450         * Check for NULL socket pointer in the function
4451           silc_server_packet_send_to_channel_real.  Affected file
4452           silcd/packet_send.c.
4453
4454         * Fixed the BAN notify handling to correctly remove ban
4455           list.  Affected file silcd/packet_receive.c.
4456
4457 Sat Jan 26 23:01:03 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4458
4459         * Fixed some header addition to Toolkit distribution in
4460           lib/silcutil/Makefile.am and lib/trq/Makefile.am.
4461
4462         * Added lib/silcclient/client_ops_example.h as an template
4463           file for application programmers to quickly start using
4464           the SilcClientOperation functions in their application.
4465           Updated the lib/silcclient/README as well to tell about this
4466           nice file made available.
4467
4468 Sat Jan 26 10:45:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4469
4470         * Call silc_server_remove_from_channels when removing client
4471           entry when NO_SUCH_CLIENT_ID was received.  Affected file
4472           is silcd/command_reply.c.
4473
4474 Fri Jan 25 19:12:36 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4475
4476         * Added server & router operator statistics updating.  Affected
4477           file silcd/packet_receive.c and silcd/command.c.
4478
4479         * Fixed the SERVER_SIGNOFF notify handling on normal server
4480           not to save the history information for clients.  Same was
4481           fixed earlier in remove_clients_by_server function, but not
4482           here.  Affected file silcd/packet_receive.c.
4483
4484         * Raised the default connection-retry count from 4 to 7 in
4485           server.  Affected file silcd/server.h.
4486
4487         * Cancel any possible reconnect timeouts when we start the
4488           key exchange.  Affected file silcd/server.c.
4489
4490         * Do not reconnect on connection failure when SCONNECT was
4491           given.  Affected files silcd/server.[ch].
4492
4493 Tue Jan 22 18:19:36 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4494
4495         * Removed assert()'s from the lib/silcclient/client_keyagr.c.
4496
4497         * Fixed the NICK command to always give the unformatted
4498           nickname to the one giving the NICK command.  If unformatted
4499           nickname is cached already it will be formatted and the
4500           local entry will always get the unformatted nickname.
4501           Affected file lib/silcclient/idlist.c.
4502
4503         * Fixed some double frees from client library commands.
4504           Affected file is lib/silcclient/command.c.
4505
4506         * Fixed CUMODE command in server to assure that no one can
4507           change founder's mode than the founder itself, there was a
4508           little bug.  Affected file silcd/command.c.
4509
4510 Mon Jan 21 19:07:53 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4511
4512         * Removed the SilcClientCommandDestructor from the client
4513           libary, it is not needed anymore.  Affected files are
4514           lib/silcclient/silcapi.h, command[_reply].[ch],
4515           client_notify, idlist.c.
4516
4517         * Fixed GETKEY command to first resolve client, and then
4518           resolve the server only if the client was not found, instead
4519           of resolving both at the same time.  Affected file is
4520           lib/silcclient/command.c.
4521
4522         * Added silc_client_start_key_exchange_cb and lookup the
4523           remote hostname and IP address before starting the key
4524           exchange with server.  The affected file is
4525           lib/silcclient/client.c.
4526
4527         * The server's public key is now saved using the IP address
4528           of the server and not the servername for the filename.
4529           The hostname public key filename is checked as an fall back
4530           method if the IP address based filename is not found.
4531
4532           Fixed the GETKEY command to save the fetched server key
4533           in correct filename.
4534
4535           Print the remote server's hostname now when new key is
4536           received during connection process.  Affected file is
4537           irssi/src/silc/core/client_ops.c.
4538
4539         * Return always our own public key to the client if it asks
4540           for it with GETKEY command.  Affected file silcd/command.c.
4541
4542         * Removed the use_auto_addr variable from default config
4543           file since it was in wrong section.  Affected file is
4544           irssi/src/config.
4545
4546         * Fixed TOPIC_CHANGE notification to not route it when it
4547           was sent using silc_server_send_notify_to_channel function.
4548           Affected file silcd/command.c.
4549
4550         * Fixed silc_server_send_notify_kicked to send the kicker's
4551           Client ID also, it was missing.  Affected files are
4552           silcd/command.c, silcd/packet_send.[ch].
4553
4554 Thu Jan 17 18:59:11 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4555
4556         * Do not save client history information in SERVER_SIGNOFF.
4557           Fixes the bug in normal server that it does not detect
4558           the client becoming valid after the server becomes back
4559           online.  Affected file silcd/server_util.c.
4560
4561         * Added `sock_error' field  into the SilcSocketConnection
4562           context.  When error occurs during socket operation (read
4563           or write) the error is saved.  Added also new function
4564           silc_socket_get_error to return human readable socket error
4565           message.  Affected files are lib/silcutil/silcsockconn.[ch],
4566           lib/silcutil/unix/silcunixsockconn.c, and
4567           lib/silcutil/win32/silcwin32sockconn.c.
4568
4569         * The server now prints the socket error message in the
4570           signoff for client.  Affected file silcd/server.c.
4571
4572         * Fixed the `created' channel information sending from router
4573           to server in JOIN command.  Checks now whether the channel
4574           really was created or not and set it according that.
4575
4576           Fixed the JOIN command to use the client entry's current
4577           ID during the joining procedure instead of the one it sent
4578           in the command (it is checked though), since it can change
4579           between the packet processing and command processing, and
4580           would just case unnecessary pain in the client end.  Affected
4581           file silcd/command.c.
4582
4583         * Fixed a channel key payload sending to use correct channel
4584           ID when the server was forced to change the channel's ID by
4585           router.  Router sent the key payload with the old Channel ID.
4586           Affected file silcd/packet_receive.c.
4587
4588 Wed Jan 16 22:26:30 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4589
4590         * Call silc_server_save_channel_key only if the key payload
4591           was provided in the JOIN command's command reply.  Affected
4592           file silcd/command_reply.c.
4593
4594 Tue Jan 15 18:49:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4595
4596         * Fixed silc_mp_sizeinbase to return the value correctly with
4597           MPI.  Affected file lib/silcmath/mp_mpi.c.
4598
4599         * Fixed the stop_server signal to correctly stop the scheduler
4600           and gracefully stop the server when SIGTERM or SIGINT signals
4601           are received.  Affected file silcd/silcd.c.
4602
4603 Mon Jan  7 23:38:19 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
4604
4605         * Simple handling of TERM and HUP signals. Also added some log
4606           flushing call around.  Affected file is
4607           silcd/silcd.c.
4608
4609         * Fixed small bugs in silclog.c. Now buffering output will take
4610           effect after 10 seconds since startup: This will ensure that
4611           no important startup messages are lost. Also output redirection
4612           will preserve original format ([Date] [Type] message).
4613           Affected file is lib/silcutil/silclog.c.
4614
4615         * Added two options to the config file, in the logging section:
4616           quicklogs:<yes/no>: and flushdelay:<seconds>:.  Affected files
4617           lib/silcutil/silclog.[ch], silcd/serverconfig.[ch].
4618
4619 Sun Jan  6 12:49:40 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4620
4621         * Do not print the warning about log files not being initialized
4622           more than once to avoid excess logging.  Affected file is
4623           lib/silcutil/silclog.c.
4624
4625         * Fixed the SIM compilation in lib/silcsim/Makefile.am.  Fixed
4626           the SIM copying in make install in Makefile.am.pre.
4627
4628 Sun Jan  6 01:10:21 CET 2001  Johnny Mnemonic <johnny@themnemonic.org>
4629
4630         * Rewritten silclog APIs. Globally interesting changes follows:
4631           silc_log_set_files() changed to silc_log_set_file().
4632           silc_log_set_callbacks() changed to silc_log_set_callback().
4633           ROBOdoc documented silclog header file.
4634           SilcLogCb now returns bool to wether inihibit the default
4635           handler or not (to keep the old behaviour return always TRUE).
4636           The new APIs should also fix the problem of the
4637           silcd_error.log file that was written in the current directory.
4638
4639           New features:
4640           Log files streams will remain opened after silc_log_set_file()
4641           call, means less CPU usage notably on high traffic servers.
4642           File streams are now full buffered, and flushed to the disk
4643           every 5 minutes, lesses HD activity and CPU usage.
4644           Messages can be redirected, allowing admins to configure
4645           one single logfile for all server messages.
4646           the silc_log_quick global variable to activate fast-logging.
4647           Affected files lib/silcutil/silclog.[ch]
4648
4649         * Changed some code to conform new silclog APIs. Affected
4650           files are doc/example_silcd.conf.in, silcd/server.c
4651           irssi/src/silc/core/silc-core.c, silcd/serverconfig.[ch],
4652           silcd/silcd.c.
4653
4654         * Fixed a memory leak that could occur in some situations.
4655           Affected file silcd/serverconfig.c.
4656
4657 Sat Jan  5 13:37:29 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4658
4659         * Added the silc_client_del_client to remove the client from
4660           all channels as well.  Affected file lib/silcclient/idlist.c.
4661
4662         * Fixed the client library to correctly remove the client
4663           from all channels when the client entry is being destroyed.
4664           Affected file lib/silcclient/client_notify.c, command.c.
4665
4666         * Added auto-nicking support to the client library.  If the
4667           applicatio now sets client->nickname it will be sent to the
4668           server after connecting by the library.  This way for example
4669           SILCNICK (or IRCNICK) environment variables will have effect
4670           and always change the nickname automatically to whatever
4671           it is wanted.  Affected file lib/silcclient/client.[ch].
4672
4673         * Renamed silc_server_command_bad_chars to the
4674           silc_server_name_bad_chars and moved it to the
4675           silcd/server_util.[ch].  Added also new function
4676           silc_server_name_modify_bad to return nickname that
4677           includes bad characters as new nickname without those
4678           bad characters.  This check and modify is now used in
4679           silc_server_new_client when the username is initially set
4680           as nickname, so it must be checked to be valid nickname.
4681           Affected file silcd/packet_receive.c.
4682
4683         * The nickname length is now taken from the packet for real
4684           and not trusted to strlen() since it clearly can return
4685           wrong length for nickname including bad characters.  This
4686           also applies to channel names.  Affected file silcd/command.c.
4687
4688         * Removed the lib/silcsilm/modules directory.  Modules are now
4689           compiled into the lib/silcsim.  Fixed the copying of the
4690           modules to follow symbolic links in Makefile.am.pre.
4691
4692 Wed Jan  2 18:56:21 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4693
4694         * Fixed silc_string_regexify list creation.  Fixes bugs with
4695           BAN and INVITE commands in server.  The affected file is
4696           lib/silcutil/unix/silcunixutil.c.
4697
4698 Sun Dec 30 13:41:34 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4699
4700         * Removed the command destructor entirely from the server's
4701           command and command reply routines.  It is not needed, and
4702           its usage was buggy and caused crashes.  Affected files are
4703           silcd/command[_reply].[ch].
4704
4705 Fri Dec 28 12:43:22 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4706
4707         * Cancel protocol and NULL sock->protocol if timeout
4708           occurred during protocol.  Affected file silcd/server.c.
4709
4710         * Cancel protocol timeouts always before calling the final
4711           callback, to assure that after final callback is called
4712           no other state will be called for the protocol anymore.
4713           Affected file silcd/protocol.c.
4714
4715         * Print error log if incoming connection configuration could
4716           not be found.  Affected file silcd/server.c.
4717
4718         * Fixed JOIN command to correctly save the founder mode
4719           to the client on normal SILC server, when the channel
4720           was created by the router.  Affected file silcd/command.c.
4721
4722         * Fixed LIST command (hopefully) to send correct reply
4723           packets.  Affected file silcd/command.c.
4724
4725 Thu Dec 20 16:14:52 CET 2001  Pekka Riikonen <priikone@silcnet.org>
4726
4727         * The silc_packet_receive_process now returns FALSE if the
4728           read data was invalid packet, and TRUE if it was ok.
4729
4730           The server now checks that if unauthenticated connection
4731           sends data and its processing fails the server will close
4732           the connection since it could be a malicious flooder.
4733
4734           Affected files lib/silccore/silcpacket.[ch], silcd/server.c.
4735
4736 Wed Dec 19 21:31:25 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4737
4738         * Make sure the warning about error opening a log file is
4739           printed only once and not everytime it fails (produces
4740           too much useless log).  Affected file lib/silcutil/silclog.c.
4741
4742 Wed Dec 19 18:21:51 CET 2001  Johnny Mnemonic <johnny@themnemonic.org>
4743
4744         * Made the silc_server_daemonise() function more readable.
4745           Affected file silcd/server.c.
4746
4747         * Pid file is now optional, the user may comment it out from
4748           the config file. Removed define SILC_SERVER_PID_FILE, we
4749           don't need a default any longer.  Affected file
4750           configure.in.pre, lib/Makefile.am.pre.
4751
4752         * Make some use of the pid file. The server now dies at startup
4753           if it detects a valid pid file on his path. The server would
4754           die anyway in this circumstance, because of the bind() failure.
4755           Affected file silcd/silcd.c.
4756
4757         * No longer compiling lib/dotconf.
4758
4759 Mon Dec 17 18:24:27 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4760
4761         * Fixed JOIN command parsing not to crash.  Affected file
4762           lib/silcclient/command.c.
4763
4764         * Fied the NICK_CHANGE notify to add the new client entry
4765           even it is resolved.  This removes an <[unknown]> nick
4766           thingy bug in the client.  Affected file is
4767           lib/silcclient/client_notify.c.
4768
4769         * Do not try to allocate 0 bytes (efence does not like it)
4770           in lib/silccore/silccomand.c when encoding payload.
4771
4772         * Do not take IRCNICK as nickname in Irssi SILC client since
4773           it is not possible to set nickname before hand connecting
4774           the server (TODO has an entry about adding auto-nicking
4775           support).
4776
4777         * Changed the silc_server_command_pending to check whether
4778           there already exists an pending entry with the specified
4779           command, command identifier and pending callback.  This is
4780           to fix IDENTIFY and WHOIS related crashes that may register
4781           multiple pending commands with same identifier.  Affected
4782           file silcd/command.c.
4783
4784         * Fixed the server to reconnect to the router even if it
4785           was already reconnecting and EOF was received.  This to
4786           fix a possibility that the server wouldn't ever try to
4787           auto-reconnect to the router.  Affected file silcd/server.c.
4788
4789 Sat Dec 15 20:31:50 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4790
4791         * Fixed the server's password authentication to use the
4792           length of the locally saved password, and not the one
4793           sent in the packet.  Affected file silcd/protocol.c.
4794
4795         * Fixed same password authentication problem in the
4796           Authentication Payload handling routines in
4797           lib/silccore/silcauth.c.
4798
4799         * Yet another password authentication problem fixed with
4800           channel password handling in silcd/command.c.
4801
4802 Mon Dec 10 19:57:40 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4803
4804         * If first character of string in silc_parse_userfqdn is '@'
4805           then do not parse it.  Affected file is
4806           lib/silcutil/silcutil.c.
4807
4808 Sun Dec  9 22:18:50 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4809
4810         * Fixed minor bug in IDENTIFY command reply sending, which
4811           caused various weird problems during JOIN when it was
4812           resolving names for users.  Affected file silcd/command.c.
4813
4814 Sun Dec  9 19:18:41 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4815
4816         * Fixed the IDENTIFY command reply sending to chech better valid
4817           clients.  It was possible to send incomplete list of replies.
4818           Affected file silcd/command.c.
4819
4820 Sat Dec  8 15:58:31 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4821
4822         * Added silc_client_command[s]_[un]register functions now to
4823           dynamically register the commands in client library.  Removed
4824           the static table of commands.  This allows the client library
4825           to call commands without causing the application to know about
4826           what commands library has called.
4827
4828           Removed the INFO command reply kludge to detect when the command
4829           was called by library.  Now library use its own command reply
4830           function for INFO command.
4831
4832           Added function silc_client_command_call to call a command.
4833           Application can use it to call command, not access the structure
4834           directly.
4835
4836           Now all commands that are sent by the client library (not
4837           explicitly sent by application) use own command reply functions.
4838
4839           Affected files around lib/silcclient/ and in
4840           irssi/src/silc/core/.
4841
4842         * Fixed the WHOIS command reply sending to chech better valid
4843           clients.  It was possible to send incomplete list of replies.
4844
4845           Fixed the WHOIS and IDENTIFY to send the request to router
4846           if normal server did not do it and did not find any results.
4847
4848           Affected file silcd/command.c.
4849
4850 Thu Dec  6 17:21:06 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4851
4852         * Moved the internal data from SilcClient context into its
4853           own file, not accesible to application.  Affected files
4854           lib/silcclient/client.h and lib/silcclient/client_internal.h,
4855           and other files in client library.
4856
4857 Thu Dec  6 10:37:55 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4858
4859         * Added doc/examples installation target in Makefile.am.pre.
4860           A patch by salo.
4861
4862 Tue Dec  4 17:43:19 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4863
4864         * If NO_SUCH_CLIENT_ID notify is received for WHOIS or IDENTIFY
4865           commands the found client entry will be removed from the
4866           cache, after notifying application about the error.  Affected
4867           file lib/silcclient/command_reply.c.
4868
4869         * Changed the /MSG to check for exact nickname user gave, and
4870           not let `nick' match `nick@host' if it is only one found.  Now,
4871           user must type the exact nickname (like nick@host2) even if
4872           there are no more than one same nicks found.  This is to avoid
4873           a possibility of sending nickname to wrong nickname since
4874           `nick' could match `nick@host'.  Affected file is
4875           irssi/src/core/silc-servers.c.
4876
4877 Mon Dec  3 18:49:45 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4878
4879         * Do not print "you are now server operator" or similar when
4880           giving /away command.  Affected files are
4881           irssi/src/silc/core/client_ops.c, silc-servers.h.
4882
4883         * Made the silc_server_command_pending_error_check to send
4884           the same command reply payload it received back to the
4885           original sender of the command.  This way all arguments
4886           that was received by the server will be received by the
4887           client too.  Affected file silcd/command.c.
4888
4889         * Added the silc_idcache_add to return the created cache entry
4890           to a pointer.  Affected file lib/silccore/silcidcache.[ch].
4891
4892         * Add global clients to expire if they are not on any channel.
4893           This is because normal server will never know if they signoff
4894           if they are not on any channel.  The cache expiry will take
4895           case of these entries.  This is done by normal servers only.
4896           The affected files are silcd/command_reply.c,
4897           silcd/idlist.[ch], silcd/server and silcd/packet_receive.c.
4898
4899         * If server receives invalid ID notification for WHOIS or
4900           IDENTIFY and the ID exists in the lists, it is removed.
4901           Affected file silcd/command_reply.c.
4902
4903         * If NO_SUCH_CLIENT_ID is received for WHOIS or IDENTIFY command
4904           in client then client entry that it matches is searched and
4905           the nickname is printed on the screen for user.  Affected
4906           file irssi/src/silc/core/client_ops.c.
4907
4908 Mon Dec  3 11:56:59 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4909
4910         * Use cache entry expire time in the LIST command reply to
4911           purge old entries from the cache after the LIST command
4912           reply has been received.  This way we don't have non-existent
4913           entries in the cache for too long.  Affected file is
4914           silcd/command_reply.c.
4915
4916 Sun Dec  2 23:29:07 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4917
4918         * If we are normal server, and we've not resolved client info
4919           in WHOIS or IDENTIFY from router, and it is global client,
4920           we'll check whether it is on some channel.  If it is not
4921           then we cannot be sure about its validity and will resolve it
4922           from router.  Fixes a bug in WHOIS and IDENTIFY.  Affected
4923           file silcd/command.c.
4924
4925         * Search channel by name (if possible) rather than by ID
4926           in IDENTIFY command's command reply.  Affected file is
4927           silcd/command_reply.c.
4928
4929 Sun Dec  2 13:48:46 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4930
4931         * Distribute to the channel passphrase in CMODE_CHANGE notify.
4932           Updated specs and implemented it.  Affected file silcd/command.c,
4933           silcd/packet_send.c and silcd/packet_receive.c.
4934
4935         * Implemented the <founder auth> payload handling in the JOIN
4936           command.  If provided all conditions for channel joining
4937           except requirement to provide correct passphrase can be
4938           overrided by the channel founder.  Updated the protocol specs.
4939           Affected file silcd/command.c.
4940
4941           Added support for founder auth in JOIN command in client
4942           library.  Fixed the parsing of the JOIN command now to support
4943           all options as they should be.  The affected file is
4944           lib/silcclient/command.c.
4945
4946         * Optimized the WHOIS and IDENTIFY commands to send the request
4947           to router only if it includes nicknames or other names.  If
4948           they include only IDs then check the local cache first before
4949           routing.  Affected file is silcd/command.c.
4950
4951         * Added channels topic announcements.  Affected file is
4952           silcd/packet_receive.c and silcd/server.c.
4953
4954         * Fixed the silc_server_send_notify_topic_set to really destine
4955           the packet to channel.  Affected file silcd/packet_send.c.
4956
4957         * Fixed a crash in CHANNEL_CHANGE notify handling in the client
4958           library.  Affected file lib/silcclient/client_notify.c.
4959
4960         * Added UMODE announcements.  Affected file silcd/server.c.
4961
4962 Sat Dec  1 12:52:39 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4963
4964         * Memory leak fixes in:
4965
4966           lib/silcutil/silcsockconn.c
4967           lib/silcske/silcske.c
4968           lib/silcske/groups.c
4969           lib/silccrypt/rsa.c
4970           lib/silccrypt/silcpkcs.c
4971           lib/silccore/silccommand.c
4972           lib/silccore/silcidcache.c
4973           silcd/idlist.c
4974           silcd/packet_send.c
4975           silcd/command.c
4976
4977         * ROBOdoc documented the lib/silcske/groups.h file and a
4978           bit changed the interface for better.
4979
4980 Thu Nov 29 22:12:50 EET 2001  Pekka Riikonen <priikone@silcnet.org>'
4981
4982         * Update the client entry context in the ID cache after
4983           nick change.  Affected file lib/silcclient/command.c.
4984           Fixes the CUMODE command when regaining founder privileges,
4985           and a little WHOIS problem.
4986
4987         * Fixed silc_net_gethostbyname to correctly call the
4988           inet_ntop.  Affected file lib/silcutil/silcnet.c.
4989
4990 Thu Nov 29 19:31:23 EET 2001  Pekka Riikonen <priikone@silcnet.org>'
4991
4992         * Added IPv6 support checking to the configure.in.pre, added
4993           also --enable-ipv6 option to override the check.  Affected
4994           file configure.in.pre.
4995
4996         * The silc_thread_create now calls the start function
4997           directly if threads support is not compiled in.  Removes
4998           ugly #ifdef's from generic code.  Affected files are
4999           lib/silcutil/unix/silcunixthread, win32/silcwin32thread.c.
5000
5001         * Added silc_net_gethostby[name/addr]_async to asynchronously
5002           resolve.  Affected files are lib/silcutil/silcnet.[ch].
5003
5004         * Added support for rendering IPv6 based server, client and
5005           channel IDs.  Affected file lib/silcutil/silcutil.c.
5006
5007         * Added support for creating IPv6 based server IDs.  Affected
5008           file is silcd/serverid.c.
5009
5010 Wed Nov 28 23:46:09 EET 2001  Pekka Riikonen <priikone@silcnet.org>'
5011
5012         * Added silc_net_gethostby[addr/name] into the
5013           lib/silcutil/silcnet.[ch].  Added IPv6 support to Unix network
5014           routines.  Added silc_net_is_ip[4/6].  Affected file is
5015           lib/silcutil/unix/silcunixnet.c.  All routines that take
5016           address as argument now supports both IPv4 and IPv6 addresses.
5017
5018 Mon Nov 26 18:09:48 EET 2001  Pekka Riikonen <priikone@silcnet.org>'
5019
5020         * Fixed LIST command reply sending in server.  Affected file
5021           silcd/command.c.
5022
5023         * Server now sends the kicker's client ID in the KICK notify
5024           to the kicked client.  Affected file silcd/command.c.
5025
5026         * The client library now parses the kickers client ID and
5027           UI displays it.  Affected files lib/silcclient/client_notify.c
5028           and irssi/src/silc/core/silc-channels.c, module-formats.c.
5029
5030         * Made all payload parsing function prototypes consistent.
5031           They all take now const unsigned char * and uint32 pair as
5032           the payload data instead of SilcBuffer.  Changes all around
5033           the source tree.  Other unsigned char* -> const unsigned char*
5034           changes around the tree as well.
5035
5036         * Optimized SFTP client and server packet sending not to
5037           allocate new buffer for each packet but to recycle the
5038           first allocated buffer.  Affected files are
5039           lib/silcsftp/sftp_client.c, sftp_server.c, sftp_util.[ch].
5040
5041         * Optimized the SFTP client to use SilcList instead of
5042           SilcDList for requests, because it is faster.  Affected file
5043           is lib/silcsftp/sftp_client.c.
5044
5045         * Moved the ID Payload routines from lib/silccore/silcpayload.[ch]
5046           into lib/silccore/silcid.[ch].
5047
5048           Renamed silcpayload.[ch] into silcargument.[ch].
5049
5050 Mon Nov 26 15:01:53 CET 2001  Pekka Riikonen <priikone@silcnet.org>
5051
5052         * If client entry is deleted with active key agreement
5053           session, abort the session.
5054
5055           The silc_client_abort_key_agreement now calls the completion
5056           callback with new SILC_KEY_AGREEMENT_ABORTED status.
5057
5058           Affected file lib/silcclient/silcapi.h, client_keyagr.c and
5059           idlist.c.
5060
5061 Sun Nov 25 18:01:45 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5062
5063         * Don't use __restrict in older GCC's.  Affected file is
5064           lib/silcmath/mpi/mpi-priv.h.  A patch by salo.
5065
5066         * silc_net_localhost now attempts to reverse lookup the
5067           IP/hostname.  Affected file lib/silcutil/silcnet.c.
5068
5069         * Defined <founder auth> argument to the SILC_COMMAND_JOIN
5070           command.  It can be used to gain founder privileges at
5071           the same time when joining the channel.
5072
5073           Defined that the SILC_NOTIFY_TYPE_KICKED send the
5074           kicker's client ID as well.  Updated protocol specs.
5075
5076           Defined that the server must send SILC_COMMAND_IDENTIFY
5077           command reply with error status to client who sent
5078           private message with invalid client ID.
5079
5080           Updated the protocol specification.
5081
5082         * Added silc_server_send_command_reply to send any
5083           command reply.  Affected file silcd/packet_send.[ch].
5084
5085         * Added silc_id_payload_encode_data to encode ID payload
5086           from raw ID data.  Affected file lib/silccore/silcpayload.[ch].
5087
5088         * The server now send IDENTIFY command reply with error
5089           status if client ID in private message is invalid.  Affected
5090           file silcd/packet_receive.c.
5091
5092         * Save the server key file with server's IP address in
5093           the filename instead of hostname.  The affected file is
5094           irssi/src/silc/core/client_ops.c.
5095
5096 Sat Nov 24 20:08:22 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5097
5098         * Typo fixes in irssi/src/fe-common/silc/module-formats.c.
5099           A patch by Sunfall.
5100
5101         * Added libtool support for compiling shared objects in
5102           lib/silcsim.  Affected file configure.in.pre and
5103           lib/silcsim/Makefile.am.  Original patch by cras.
5104
5105 Fri Nov 23 23:30:59 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5106
5107         * Pid file configuration, and server's config file fixes
5108           patch by toma.  Updated CREDITS file.
5109
5110 Sun Nov 18 01:34:41 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5111
5112         * Fixed silc_client_channel_message to not try to decrypt
5113           the message twice if it resolved the destination client
5114           information.  This could cause of dropping one channel
5115           message.  Affected file lib/silcclient/client_channel.c.
5116
5117 Wed Nov 14 23:44:56 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5118
5119         * Added silc_client_run_one into lib/silcclient/silcapi.h and
5120           lib/silcclient/client.c. This function is used when the SILC
5121           Client is run under some other scheduler, or event loop or
5122           main loop.  On GUI applications, for example this may be
5123           desired to used to run the client under the GUI application's
5124           main loop.  Typically the GUI application would register an
5125           idle task that calls this function multiple times in a second
5126           to quickly process the SILC specific data.
5127
5128 Wed Nov 14 19:16:52 CET 2001  Johnny Mnemonic <johnny@themnemonic.org>
5129
5130         * Fixed silc_server_drop() for dropping the supplementary
5131           groups as well, this could cause a security hole on some
5132           systems.
5133
5134 Wed Nov 14 16:22:25 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5135
5136         * __pid_t -> pid_t in lib/silccrypt/silcrng.c.  A patch by
5137           johnny.
5138
5139         * Write PID file after dropping privileges.  Added -F option
5140           to run server on foreground.  A patch by debolaz.
5141           Affected files silcd/server.c, silcd/silcd.c.
5142
5143         * Fixed MOTD to return the MOTD file server name.  Affected
5144           file silcd/command.c.
5145
5146         * Added INFO command reply handling to the Irssi SILC Client.
5147           Affected file irssi/src/silc/core/client_ops.c.
5148
5149 Wed Nov 14 00:18:08 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5150
5151         * Fixed the silc_idcache_list_* routines to really support
5152           the dynamic list.  Fixes a crash.  Affected file is
5153           lib/silccore/silcidcache.c.
5154
5155         * Fixed the LIST command reply to really call LIST command's
5156           pending callbacks.  Affected file silcd/command_reply.c.
5157
5158 Tue Nov 13 00:49:17 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5159
5160         * Update conn->local_entry->nickname after giving NICK
5161           command.  Affected file lib/silcclient/command.c.
5162
5163 Sun Nov 11 23:43:02 PST 2001  Brian Costello <bc@wpfr.org>
5164
5165         * Added the [pid] option to the silcd configuration file
5166
5167           Affected files: serverconfig.[ch] and silcd.c
5168
5169 Sun Nov 11 23:56:39 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5170
5171         * Save fingerprint in WHOIS command reply in server.
5172           Affected file silcd/command_reply.c.
5173
5174         * Fixed NICK commands pending callback registration.
5175           Affected file lib/silcclient/command.c.
5176
5177 Sun Nov 11 10:49:10 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5178
5179         * Use ++server->cmd_ident when sending commands in server,
5180           instead of random number.  Affected file silcd/command.c.
5181
5182         * Fixed GETKEY command reply to call actually GETKEY pending
5183           command callbacks.  Affected file silcd/command_reply.c.
5184
5185         * A bit stricter check for nicknames.  Check for same nickname
5186           in NICK command also.  Affected file silcd/command.c.
5187
5188         * Do not call INFO command everytime client ID changes, only
5189           during first connecting.  Affected file lib/silcclient/client.c.
5190
5191         * Set the new nickname only after successful command reply for
5192           NICK command is returned by server.  Affected file
5193           lib/silcclient/command.c.
5194
5195         * Remove nicknames from nicklist during server_signoff notify.
5196           Should fix /NAMES bit more.  The affected file is
5197           irssi/src/silc/core/silc-channels.c.
5198
5199         * Added `fingerprint' field to the SilcIDListData in the
5200           silcd/idlist.h to hold the fingerprint of the client's
5201           public key.
5202
5203           Send the fingerprint of the client's public key in WHOIS
5204           command reply.
5205
5206           Affected files silcd/command.c, and silcd/idlist.[ch].
5207
5208         * Added silc_fingerprint into lib/silcutil/silcutil.[ch] to
5209           create fingerprint from given data.
5210
5211         * Show the fingerprint of the client's public key in WHOIS.
5212           Affected files irssi/src/module-formats.[ch] and
5213           irssi/src/silc/core/client_ops.c.
5214
5215         * Format the multiple same nicknames also during JOIN and
5216           NICK_CHANGE notifys.  Affected file is
5217           lib/silcclient/client_notify.c.
5218
5219         * Do not print error on screen for invalid private message
5220           payload since it can come if someone is sending private
5221           messages with wrong key.  Affected file
5222           lib/silccore/silcprivate.c.
5223
5224         * Fixed multiple concurrent /PING crash.  Affected file
5225           lib/silcclient/command.c.
5226
5227         * Changed the wrong ID encoding.  All IP addresses must be
5228           in MSB first order in encoded format.  They were encoded
5229           wrong and was in LSB format.  Affected files are
5230           silcd/serverid.c, lib/silcutil/silcutil.c.
5231
5232         * Remove silc_net_addr2bin_ne from lib/silcutil/silcnet.[ch].
5233
5234         * Call the `connect' client operation through the scheduler
5235           in case of error.  Affected file lib/silcclient/client.c.
5236
5237         * Call the `failure' client operation even if the error
5238           occurred locally during a protocol.  Affected file is
5239           lib/silcclient/protocol.c.
5240
5241         * Added support of sending LIST command to router from normal
5242           server.  This way normal server can get list of all channels
5243           in the network too.  Fixed the channel list sending in the
5244           server too.  Affected files are silcd/command.c, and
5245           silcd/command_reply.[ch].
5246
5247         * Added silc_server_update_channels_by_server and
5248           silc_server_remove_channels_by_server.  They are used during
5249           disconnection of primary router and in backup router protocol.
5250           Affected file silcd/server_util.[ch], silcd/server.c and
5251           silcd/server_backup.c.
5252
5253         * Fixed channel adding to global list in IDENTIFY command
5254           reply in server.  Affected file silcd/command_reply.c.
5255
5256 Sat Nov 10 21:39:22 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5257
5258         * If the incoming packet type is REKEY or REKEY_DONE process
5259           that packet always synchronously.  Fixes yet another MAC
5260           failed error on slow (dialup) connections.  Affected file
5261           lib/silcclient/client.c and silcd/server.c.
5262
5263 Thu Nov  8 22:21:09 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5264
5265         * Call check_version SKE callback for initiator too.  Affected
5266           file lib/silcske/silcske.c.
5267
5268         * Implemented fix for security hole found in the SKE that was
5269           fixed in the specification few days back; the initiator's
5270           public key is now added to the HASH value computation.
5271           Added backwards support for the old way of doing it too, for
5272           old clients and old servers.  Affected file is
5273           lib/silcske/silcske.c.
5274
5275         * Enabled mutual authentication by default in SKE.  If initiator
5276           is not providing mutual authentication the responder will
5277           force it.  This will provide the proof of posession of the
5278           private key for responder.  The affected files are
5279           lib/silcclient/protocol.c and silcd/protocol.c.
5280
5281         * Do not cache anymore the server's public key during SKE.
5282           We do mutual authentication so the proof of posession of
5283           private key is done, and if the server is authenticated in
5284           conn auth protocol with public key we must have the public
5285           key already.  Affected file silcd/protocol.c.
5286
5287         * Added new global debug variable: silc_debug_hexdump.  If
5288           it is set to TRUE SILC_LOG_HEXDUMP will be printed.  Affected
5289           file lib/silcutil/silclog.[ch].
5290
5291         * Fixed compilation warning due to char * -> const char *.
5292           Affected files lib/silcutil/silcnet.h, and
5293           lib/silccore/silcauth.[ch].
5294
5295 Wed Nov  7 20:43:03 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5296
5297         * Fixed CMODE command when new channel key was created.  If
5298           the creation failed the old key was removed.  Next time giving
5299           same command would crash the server since the old key was
5300           freed already.  Affected file silcd/command.c.
5301
5302         * Fixed the silc_server_announce_get_channels to not crash
5303           on reconnect.  Affected file silcd/server.c.
5304
5305 Wed Nov  7 17:15:07 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5306
5307         * Added silc_log_set_debug_string function to set a regex
5308           string to match for debug output.  Only the function names,
5309           or filenames matching the given debug string is actually
5310           printed.  This way it is possible to filter out those debug
5311           strings that user is not interested in.
5312
5313           Fixed a bug in silc_string_regexify.
5314
5315           Affected files lib/silcutil/silclog.[ch], and
5316           lib/silcutil/unix/silcunixutil.c.
5317
5318         * Changed the -d options in both server and Irssi SILC client
5319           to take the debug string as argument.  Affected files
5320           silcd/silcd.c and irssi/src/silc/core/silc-core.c.
5321
5322 Tue Nov  6 21:31:54 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5323
5324         * Added silc_hash_babbleprint to create a Bubble Babble
5325           Encoded fingerprint.  The encoding is developed by Antti
5326           Huima (draft-huima-babble-01.txt), and it creates human
5327           readable strings out of binary data.  Affected file
5328           lib/silccrypt/silchash.[ch].
5329
5330         * Print the babble print now in addition of fingerprint as well
5331           in Irssi SILC client.  Affected files are
5332           irssi/src/fe-common/silc/module-formats.[ch],
5333           irssi/src/fe-common/silc/core/client_ops.c.
5334
5335 Sun Nov  4 23:37:28 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5336
5337         * Fixed a security problem found in SKE.  The initiator's
5338           public key too is now added to the HASH hash value creation
5339           which is signed by the responder to create the SIGN value.
5340           This will prevent anyone in the middle to lie to the responder
5341           about the initiator's public key.  If this is done now, the
5342           man in the middle will get caught.  Updated the protocol
5343           specification.
5344
5345 Sun Nov  4 11:43:53 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5346
5347         * Better installation directory handling.  Configure module
5348           paths and other paths automatically to example_silc* files
5349           in doc/.  A patch by toma.
5350
5351         * Fixed compiler warning from MPI library, and from SILC RNG.
5352           A patch by johnny.
5353
5354         * Added SILC_SERVER_PID_FILE to define the pid file for server.
5355           It can be configured with ./configure.  A patch by toma.
5356
5357 Sat Nov  3 23:48:23 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5358
5359         * Find correct make to use in prepare-clean.  A patch by
5360           toma.  Affected file prepare-clean.
5361
5362 Sat Nov  3 22:04:00 PST 2001  Brian Costello <bc@mksecure.com>
5363
5364         * Added irssi variables use_auto_addr, auto_bind_ip,
5365           auto_bind_port and auto_public_ip.
5366
5367         * Changed the interface for silc_client_send_key_agreement
5368           in lib/silcclient/silcapi.h
5369
5370         Affected files:
5371
5372          irssi/src/silc/core/silc-core.c
5373          irssi/config
5374          lib/silcclient/silcapi.h
5375          irssi/src/silc/core/silc-channels.c
5376          lib/silcclient/client_keyagr.c
5377          irssi/docs/help/key
5378
5379 Sat Nov  3 17:48:55 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5380
5381         * Added silc_pkcs_public_key_compare to compare two
5382           public keys.  Affected file lib/silccrypt/silcpkcs.[ch].
5383
5384         * Check that the client who set the founder mode on the
5385           channel is the same client that is giving the founder
5386           mode to itself.  It is done by comparing the saved public
5387           key (it is saved even in the authentication is passphrase).
5388           Affected file silcd/command.c.
5389
5390 Fri Nov  2 18:52:08 EST 2001  Pekka Riikonen <priikone@silcnet.org>
5391
5392         * Do not process packet for disconnected socket connection.
5393           Affected file lib/silccore/silcpacket.c.
5394
5395         * Process the DISCONNECT packet through scheduler in the
5396           client library.  Affected file lib/silcclient/client.c.
5397
5398         * Fixed the silc_client_packet_parse to not to increase
5399           the packet sequence number if the conn->sock and the
5400           current socket connection is not same.  This can happen
5401           for example during key agreement when the conn includes
5402           multiple socket connections (listeners).  Affected file
5403           lib/silcclient/client.c.
5404
5405         * The sender of the file transfer request now provides also
5406           the pointer (listener) for the key exchange protocol.  If
5407           the listener cannot be created then it sends empty key
5408           agreement and lets the receiver provide the listener.
5409
5410           Added `local_ip' and `local_port' arguments to the
5411           silc_client_file_send.  If they are provided they are used,
5412           if not then it will attempt to find local IP address, if
5413           not found or bind fails then the remote client will provide
5414           the listener.
5415
5416           Affected files are lib/silcclient/client_ftp.c and
5417           lib/silcclient/silcapi.h.
5418
5419         * Extended the FILE SEND command to support defining the
5420           local IP and port for key exchange listener.  They are
5421           optional.  Affected file irssi/src/silc/core/silc-servers.c.
5422
5423 Thu Nov  1 22:10:07 EST 2001  Pekka Riikonen <priikone@silcnet.org>
5424
5425         * Defined to WHOIS command reply the sending of fingerprint
5426           of the client's public key (if the proof of posession of the
5427           corresponding private key is verified by the server).
5428           Updated to the protocol specification.
5429
5430         * Added support of receiving the client's public key's
5431           fingerprint in command reply in client library.  Affected
5432           file is lib/silcclient/command_reply.c, and
5433           lib/silcclient/idlist.[ch].
5434
5435 Thu Nov  1 18:06:12 EST 2001  Pekka Riikonen <priikone@silcnet.org>
5436
5437         * Do not send over 128 chars long nickname to the server
5438           in NICK command.  Affected file lib/silcclient/command.c.
5439
5440         * Do not send over 256 chars long channel names to the server
5441           in JOIN command.  Affected file lib/silcclient/command.c.
5442
5443 Tue Oct 30 22:48:59 EST 2001  Pekka Riikonen <priikone@silcnet.org>
5444
5445         * Assure that silc_server_close_connection cannot be called
5446           twice for same socket context.  Affected file is
5447           silcd/server.c.
5448
5449 Tue Oct 30 16:58:14 EST 2001  Pekka Riikonen <priikone@silcnet.org>
5450
5451         * Send error message to application if opening file for
5452           writing during file transfer fails.  Affected file is
5453           lib/silcclient/client_ftp.c.
5454
5455           Remove all file transfer sessions for a client that we're
5456           removing from ID cache.
5457
5458           Affected file is lib/silcclient/client_ftp.c.
5459
5460         * Fixed silc_net_addr2bin to return correct address.  Affected
5461           file lib/silcutil/[unix/win32]/silc[unix/win32]net.c.
5462
5463         * Fixed file transfer session removing on signoff notify.
5464           Affected file irssi/src/silc/core/silc-servers.c.
5465
5466         * Added the SilcClientFileError to be returned in the monitor
5467           callback.  Added NO_SUCH_FILE and PERMISSION_DENIED errors.
5468           Affected file lib/silcclient/silcapi.h.
5469
5470 Mon Oct 29 17:43:04 EST 2001  Pekka Riikonen <priikone@silcnet.org>
5471
5472         * Fixed a crash in silc_client_ftp_free_sessions and
5473           silc_client_ftp_session_free_client.  Affected file
5474           lib/silcclient/client_ftp.c.
5475
5476         * Added `disabled' field in the SilcChannelEntry in the server
5477           to indicate if the server entry is disabled.  Affected file
5478           silcd/idlist.h, silcd/command[_reply].c.
5479
5480         * SILC server adds now /var/run/silcd.pid everytime it is
5481           started.  Affected file silcd/silcd.c.
5482
5483         * Added silc_server_packet_send_clients to send a packet to
5484           the provided table of client entries.  Affected file
5485           silcd/packet_send.[ch].
5486
5487         * Fixed a crash in client resolving in client_prvmsg.c in
5488           client library.  Affected file lib/silcclient/client_prvmsg.c.
5489
5490         * Do not actually remove the client directly from ID cache
5491           during SERVER_SIGNOFF, but invalidate it.  This way we
5492           preserve the WHOWAS info for the client.  Affected file
5493           silcd/server_util.c.
5494
5495         * Fixed SERVER_SIGNOFF notify handling in the server.  The
5496           server is now able to process incoming SERVER_SIGNOFF notify
5497           for a server that it doesn't even know about.  It will remove
5498           the clients provided in the notify.  Affected file
5499           silcd/packet_receive.c.
5500
5501         * Check for partial packet in data queue after every packet that
5502           was found from the queue.  Return and wait for more data if
5503           there is partial data in queue.  Affected file is
5504           lib/silccore/silcpacket.c.
5505
5506 Sun Oct 28 18:46:27 EST 2001  Pekka Riikonen <priikone@silcnet.org>
5507
5508         * Added SilcClietFileError enum to indicate error in
5509           file transfer.  Added SILC_CLIENT_FILE_MONITOR_KEY_AGREEMENT
5510           and SILC_CLIENT_FILE_MONITOR_ERROR new monitor statuses.
5511           Affected files lib/silcclient/silcapi.h and
5512           lib/silcclient/client_ftp.c.
5513
5514         * Check that newsize in silc_buffer_realloc is larger than
5515           the old buffer's size.  Affected file lib/silcutil/silcbufutil.h.
5516
5517         * Added better monitor of file transfers.  It now monitors
5518           key agreement protocol during the file transfer too.  Added
5519           error reporting too.  Affected files
5520           irssi/src/silc/core/silc-servers.c,
5521           irssi/src/fe-common/silc/module-formats.[ch].
5522
5523         * Wrote a help file for FILE command.
5524
5525         * Added silc_rng_global_get_byte_fast to get not-so-secure
5526           random data as fast as possible.  Random data is read from
5527           /dev/urandom if available and from the SILC RNG if not
5528           available.  It is used in padding generation.  Affected file
5529           lib/silccrypt/silcrng.[ch].
5530
5531         * All packets in client library are now processed synchronously.
5532           Optimized packet processing a lot.  Affected file
5533           lib/silcclient/client.c.
5534
5535         * All server connection packets are processing synchronously
5536           now in server, to optimize packet processing.  Affected file
5537           silcd/server.c.
5538
5539         * Include files are installed now only in Toolkit distribution
5540           if make install is given.  Affected files: all Makefile.am's.
5541
5542 Thu Oct 25 22:44:06 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5543
5544         * Assure that silc_client_notify_by_server_resolve does not
5545           resolve the client information multiple times.  If it cannot
5546           be found by the first it cannot be found at all.  Affected
5547           file lib/silcclient/client_notify.c.
5548
5549         * Fixed WHOWAS command reply calling.  Affected file
5550           lib/silcclient/command_reply.c.
5551
5552         * Removed all references to silc_idlist_get_client from the
5553           Irssi SILC client since that call is internal call used by
5554           the library.  The Irssi SILC client will use now client
5555           retrieval functions found in silcapi.h.
5556
5557         * Fixed a bug in resolving nickname info before sending
5558           private message.  It used freed memory.  Affected file
5559           irssi/src/silc/core/silc-servers.c.
5560
5561 Thu Oct 25 19:04:49 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5562
5563         * Assure my_channels statistics cannot go negative in server.
5564           Affected files silcd/server.c, silcd/server_util.c.
5565
5566 Wed Oct 24 19:53:05 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5567
5568         * Upgraded dotconf 1.0.2 to 1.0.6 in lib/dotconf.
5569
5570 Tue Oct 23 13:51:19 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5571
5572         * Win32 Toolkit changes.  Affected files
5573           win32/silc.dsw, win32/libsilc/libsilc.def,
5574           win32/libsilcclient/libsilc.def,
5575           lib/silcutil/silcutil.c, and
5576           lib/sftp/sftp_fs_memory.c.
5577
5578 Mon Oct 22 16:35:05 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5579
5580         * Added silc_net_localip to return local host's IP address.
5581           Affected file lib/silcutil/silcnet.[ch].
5582
5583         * If key exchange or rekey protocol is active for a connection
5584           parse all packets syncronously since there might be packets
5585           in packet queue that we are not able to process without first
5586           processing packets before them.  Affected file silcd/server,
5587           lib/silcclient/client.c.
5588
5589         * SilcPacketParserCallback now returns TRUE or FALSE to indicate
5590           whether library should continue processing the packet.
5591           Affected file lib/silccore/silcpacket.h.
5592
5593         * Added SilcSFTPMonitor callback, SilcSFTPMonitors and
5594           SilcSFTPMonitorData to SFTP server to monitor various
5595           SFTP client requests.  Affected file lib/silcsftp/silcsftp.h,
5596           lib/silcsftp/sftp_server.c.
5597
5598         * Added silc_file_size to return file size.  Affected file
5599           lib/silcutil/silcutil.[ch].
5600
5601         * Implemented the file transfer support for the client library.
5602           Added preliminary support for simple client to client one-file
5603           transmission.  Affected file lib/silcclient/client_ftp.c,
5604           lib/silccilent/client.[ch].
5605
5606         * Added new local command FILE to the Irssi SILC Client.
5607           It is used to perform the file transfer.  It has subcommands
5608           SEND, RECEIVE, SHOW and CLOSE.  Affected files
5609           irssi/src/silc/core/client_ops.c,
5610           irssi/src/silc/core/silc-server.[ch].
5611
5612 Mon Oct 22 12:50:08 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5613
5614         * Relay the SILC_PACKET_FTP in the server.  Affected files
5615           silcd/server.c and silcd/packet_receive.c.
5616
5617 Sun Oct 21 20:21:02 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5618
5619         * Renamed silc_file_read and silc_file_write to functions
5620           silc_file_readfile and silc_file_writefile.  Added function
5621           silc_file_open and silc_file_close.  Affected files
5622           lib/silcutil/silcutil.[ch].
5623
5624 Thu Oct 18 20:58:13 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5625
5626         * Resolve the client info when received private message or
5627           channel message for a client which nickname we don't know.
5628           Affected files lib/silcclient/client_prvmsg.c and
5629           lib/silcclient/client_channel.c.
5630
5631         * Do not crash in /KEY if client is not connected.  Affected
5632           file irssi/src/silc/core/silc-channels.c.
5633
5634         * Added SilcClientStatus field to the SilcClientEntry in the
5635           lib/silcclient/idlist.h.
5636
5637           Added SILC_CLIENT_STATUS_RESOLVING to mark that the entry
5638           is incomplete and is being resolved, it won't be resolved
5639           twice.
5640
5641           Make sure also that USERS command reply does not resolve
5642           twice information.  Affected file is
5643           lib/silcclient/command_reply.c.
5644
5645           Make sure that silc_client_get_clients_by_list does not
5646           resolve twice same information.
5647
5648         * Check for valid client->id in the silc_server_free_client_data.
5649           Affected file silcd/server.c.
5650
5651         * Fixed /GETKEY nick@server not to crash if the server entry
5652           is not found.  Affected file lib/silcclient/command.c.
5653
5654         * Fixed the silc_server_check_cmode_rights to check the
5655           requested modes correctly.  Affected file silcd/command.c.
5656
5657 Thu Oct 18 12:10:22 CEST 2001  Pekka Riikonen <priikone@silcnet.org>
5658
5659         * Better checks for non-printable chars in nick added.
5660           Affected file silcd/command.c.
5661
5662 Thu Oct 18 09:18:58 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5663
5664         * Call the silc_server_udpate_servers_by_server in the
5665           primary router that comes back online in the backup resuming
5666           protocol.  Otherwise it routes packets wrong.  Affected file
5667           silcd/server_util.[ch], silcd/server_backup.c.
5668
5669 Wed Oct 17 16:51:18 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5670
5671         * Added SILC_STR_UI8_[N]STRING[_ALLOC] formats to the
5672           lib/silcutil/silcbuffmt.[ch].
5673
5674         * Redefined the SILC packet header to include the padding
5675           length.  Affected file lib/silccore/silcpacket.[ch].
5676
5677         * Added SILC_PACKET_PADLEN_MAX macro to return the padding
5678           length for maximum padding up to 128 bytes).  Affected
5679           file lib/silccore/silcpacket.h.
5680
5681         * Removed all backwards support for old 0.5.x MAC thingies.
5682           The SILC packet header change makes it impossible to be
5683           backwards compatible.
5684
5685         * Send the ENDING packet with timeout in the backup resuming
5686           protocol.  This is to assure that all routers has connected
5687           to the primary router.  Affected file silcd/server_backup.c.
5688
5689         * Changed the RNG to take the first IV from random data.  It
5690           used to take it from zero actually.  Changed the RNG also
5691           to use /dev/urandom during session.  /dev/random is used
5692           in initialization.  Affected file lib/silccrypt/silcrng.[ch].
5693
5694 Tue Oct 16 20:45:49 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5695
5696         * Changed the SILC packet header to have the first two bytes
5697           (the packet length) encrypted.  Affected files aroung the
5698           code tree, lib/silccore/silcpacket.[ch].  Removed the
5699           SilcPacketCheckDecrypt callback.  It is not needed anymore
5700           since the silc_packet_receive_process will determine now
5701           whether the packet is normal or special.
5702
5703         * Implemented the unidirectional MAC keys.  Affected files
5704           lib/silcske/silcske.c, silcd/protocol.c and
5705           lib/silcclient/protocol.c.
5706
5707         * Implemented the packet sequence number to the MAC computation.
5708           Affected files lib/silccore/silcpacket.c, silcd/protocol.c,
5709           silcd/packet_send.c, silcd/server.c, lib/silcclient/client.c,
5710           lib/silcclient/protocol.c.
5711
5712 Mon Oct 15 17:42:55 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5713
5714         * Allow backup router to announce servers.  All servers
5715           announced by backup router are added to the global list
5716           automatically.  Update hte server's socket to our primary
5717           router also when backup router announces a server.
5718           Affected file silcd/packet_receive.c.
5719
5720         * Do not update the client->router in the function
5721           silc_server_udpate_clients_by_server if the client is on
5722           global list.  We might fail to find any specific server
5723           for locally connected clients and local cell clients.  They
5724           should still use the `from' and not `to' as client->router.
5725           This fixes backup router resuming protocol.  Affected file
5726           silcd/server_util.c.
5727
5728         * Decrease channel statistics count only if the channel
5729           deletion worked.  Affected files are silcd/server.c and
5730           silcd/server_util.c.
5731
5732         * Added silc_server_update_servers_by_server to update origin
5733           of all server entries.  Used during backup router protocol.
5734           Affected files silcd/server_util.[ch], silcd/server.c. and
5735           silcd/backup_router.c.
5736
5737         * ROBODoc documented the lib/silccrypt/silchmac.h.  Added new
5738           function silc_hmac_init, silc_hmac_update, silc_hmac_final,
5739           silc_hmac_get_hash and silc_hmac_get_name.  Affected file
5740           lib/silccrypt/silchmac.c.
5741
5742 Sun Oct 14 18:28:22 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5743
5744         * Assure that router cannot reroute the same channel message
5745           to the sender.  Affected file silcd/packet_receive.c.
5746
5747 Sat Oct 13 12:46:18 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5748
5749         * Made better checks that the channel message is not sent
5750           to the router it came from.  Affected file is
5751           silcd/packet_send.c.  Fixed memory leak too.
5752
5753         * Announce informations for incoming router connection, but
5754           only after checking if it is replaced by backup router.
5755           Affected file silcd/packet_receive.c.
5756
5757 Fri Oct 12 18:37:24 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5758
5759         * Fixed the backup resuming protocol to work in multiple
5760           router environment.  Affected file silcd/server_backup.c.
5761
5762         * Route packet only to one router in the function
5763           silc_server_packet_send_to_channel.  Affected file is
5764           silcd/packet_send.c.
5765
5766         * Fixed silc_server_send_notify_dest to set the broadcast
5767           flag.  Fixed the silc_server_send_notify_topic to actually
5768           send the TOPIC_CHANGE notify and not SERVER_SIGNOFF notify.
5769           Affected file silcd/packet_send.c.
5770
5771         * Changed the SFTP Filesystem interface.  Changed the
5772           SilcSFTPFilesystemStruct to SilcSFTPFilesystemOps to include
5773           the filesystem operation function.  The SilcSFTPFilesystem
5774           is now a context that is allocated by all filesystem allocation
5775           functions and it already includes the operations structure
5776           and filesystem specific context.  It is given as argument
5777           now to the silc_sftp_server_start.  This made the interface
5778           a bit cleaner.  Affected file lib/silcsftp/silcsftp[_fs].h,
5779           lib/silcsftp/sftp_fs_memory.c and sftp_server.c.
5780
5781 Thu Oct 11 22:19:26 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5782
5783         * Changed the backup router adding and getting interfaces
5784           in the server.  The router that will be replaced by the
5785           specified backup router is now sent as argument.  Affected
5786           files silcd/serverconfig.[ch], silcd/backup_router.[ch], and
5787           silcd/server.c.
5788
5789         * Added silc_net_addr2bin_ne to return the binary form of
5790           the IP address in network byte order.  Affected files
5791           lib/silcutil/[unix/win32].silc[unix/win32]net.[ch].
5792
5793 Thu Oct 11 12:14:19 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5794
5795         * Check for existing server ID in silc_server_new_server
5796           and in silc_server_connect_to_router_final and remove the
5797           old entry if it exists.  Affected file silcd/packet_receive.c,
5798           silcd/server.c.
5799
5800         * Send the channel message always to only one router, either
5801           in upstream or downstream.  Affected file is
5802           silcd/packet_send.c.
5803
5804 Tue Oct  9 17:45:43 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5805
5806         * Wrote the definition of the backup resuming protocol to the
5807           protocol specification.
5808
5809         * Removed one redundant channel key generation from normal
5810           server during joining procedure.  Removed one redundant
5811           channel key sending from server to router during joining
5812           procedure.  Affected file silcd/command.c.
5813
5814         * Made minor bugfixes to the backup router resuming protocol.
5815           Affected file silcd/server_backup.c, server.c.
5816
5817 Mon Oct  8 16:47:42 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5818
5819         * Added --disable-asm configuration option.  Affected files
5820           configure.in.pre, lib/silcmath/mpi/configure.in.  A patch
5821           by salo.
5822
5823         * Implemented the backup resuming protocol that is used to
5824           resume the primary router position in the cell after the
5825           primary router comes back online.  Affected files
5826           silcd/server_backup.[ch], silcd/server, silcd/packet_receive.c,
5827           and silcd/server_util.[ch].
5828
5829 Sun Oct  7 12:29:25 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5830
5831         * Sleep two (2) seconds after sending QUIT command to server.
5832           Affected file lib/silcclient/command.c.
5833
5834         * Assure that if outgoing data buffer is pending do not force
5835           send any data.  Affected file silcd/packet_send.c.
5836
5837         * Assure that if outgoing data buffer is pending do not force
5838           send any data.  Affected file lib/silcclient/client.c.
5839
5840         * Implemented the backup router support when the primary router
5841           goes down.  The servers and routers can now use the backup
5842           router as new primary router without loosing connectivity.
5843
5844 Sat Oct  6 21:18:54 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5845
5846         * Added new SILC_IDLIST_STATUS_DISABLED flag for entries
5847           in the server to indicate disabled entry.  All data read
5848           from the connection will be ignored and no data is sent
5849           for entry that is disabled.  Affected files are
5850           silcd/idlist.h, silcd/server.c.
5851
5852 Fri Oct  5 00:03:29 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5853
5854         * Created SFTP client and server test programs in the
5855           lib/silcsftp/tests directory.
5856
5857 Wed Oct  3 23:31:42 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5858
5859         * Implemented memory filesystem (virtual filesystem) for
5860           SFTP server.  Affected file lib/silcsftp/silcsftp_fs.h,
5861           sftp_fs_memory.c.
5862
5863 Sun Sep 30 22:10:57 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5864
5865         * Implemented the SFTP (SSH File Transfer Protocol) to the
5866           lib/silcsftp.  It includes SFTP client and SFTP server
5867           implementations.
5868
5869 Sun Sep 30 10:35:44 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5870
5871         * Moved lib/silccore/silcprotocol.[ch] to the
5872           lib/silcutil library.
5873
5874         * Added silc_buffer_format_vp and silc_buffer_unformat_vp to
5875           take variable argument list pointer as argument.  Affected
5876           file lib/silcutil/silcbuffmt.[ch].
5877
5878         * Added silc_buffer_set function that is used to set data
5879           to a SilcBuffer that is not allocated at all (SilcBufferStruct).
5880           Affected file lib/silcutil/silcbuffer.h.
5881
5882         * Changed various routines in the core library to use the new
5883           silc_buffer_set instead of allocating new buffer only for
5884           temporary purposes.
5885
5886         * Added 64-bit value formatting and unformatting support to the
5887           silc_buffer_[un]format routines.  Affected file is
5888           lib/silcutil/silcbuffmt.[ch].
5889
5890           Added also 64-bit macros: SILC_GET64_MSB and SILC_PUT64_MSB,
5891           to includes/bitmove.h.
5892
5893 Fri Sep 28 21:30:10 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5894
5895         * Fixed channel user mode saving in client library.  Affected
5896           file lib/silcclient/command[_reply].c.
5897
5898 Thu Sep 27 22:52:30 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5899
5900         * Defined the file transfer to the SILC Protocol.  Added
5901           new packet type SILC_PACKET_FTP and defined File Transfer
5902           Payload.  The mandatory file transfer protocol is SFTP
5903           (SSH File Transfer Protocol).  Affected file in addition
5904           of the internet draft is lib/silccore/silcpacket.h.
5905
5906         * Deprecated the SILC_PACKET_CELL_ROUTERS and defined new
5907           packet SILC_PACKET_RESUME_ROUTER instead.  The new packet
5908           is used as part of backup router protocol when the primary
5909           router of the cell is back online and wishes to resume
5910           the position as primary router.
5911
5912         * Redefined the MAC generation keys in the protocol.  The
5913           same key is not used anymore in both direction.  Both
5914           direction will now use different keys for sending and
5915           receiving.  This fixes a potential security flaw.  This
5916           change causes incompatibilities in the protocol.
5917
5918         * Redefined also the MAC computation from the packet.
5919           An packet sequence number is now added to the MAC
5920           computation.  This prevents possible replay attacks against
5921           the protocol.  This change too causes incompatibilities
5922           in the protocol.
5923
5924           Added `sequence' field to the SilcPacketContext to hold
5925           the current sequence number for the packet.
5926
5927 Wed Sep 26 20:15:22 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5928
5929         * Added `created' field to the SilcIDListData in the file
5930           silcd/idlist.h to indicate the time when the entry was
5931           created.
5932
5933         * Added `created' field to the SilcChannelEntry too.  Affected
5934           file silcd/idlist.h.
5935
5936         * Added `creation_time' aguments to all the announcement functions
5937           in the server.  If it is provided then only the entries that
5938           was created after the provided time frame are actually
5939           announced.  Affected file silcd/server.[ch].
5940
5941         * The protocol says that the Channel ID's IP address must be
5942           based on the router's IP address.  Added check for this in
5943           the silc_server_new_channel when processing incoming New Channel
5944           Payload.  Affected file silcd/packet_receive.c.
5945
5946         * Print out the correct version with --version in SILC client.
5947           Affected file irssi/src/silc/core/silc-core.c.
5948
5949 Mon Sep 24 17:19:00 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5950
5951         * Fixed WHOWAS command to check for completnes of the client
5952           entry always, not just when the command is coming from client.
5953           Affected file silcd/command.c.
5954
5955         * Added new function silc_server_packet_queue_purge to purge the
5956           outgoing data queue to the network.  After the function returns
5957           it is guaranteed that the outgoing packet queue is empty.
5958           Affected file silcd/packet_send.[ch].
5959
5960         * Purge the outgoing packet queue in the rekey protocol's final
5961           callback to assure that all rekey packets go to the network
5962           before quitting the protocol.  Affected file silcd/server.c.
5963
5964         * Added silc_client_packet_queue_parse as similar function as
5965           in server to the client library.  The affected file is
5966           lib/silcclient/client.c.
5967
5968 Sun Sep 23 15:15:53 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5969
5970         * Splitted silcd/server.c and created silcd/server_util.[ch]
5971           for utility functions.
5972
5973         * Added new socket flag SILC_SF_DISABLED to indicate that the
5974           connection is open but nothing can be sent to or received from
5975           the connection.  Affected file lib/silcutil/silsockconn.[ch].
5976           The checking for disabled socket is checked in the low level
5977           silc_socket_write and silc_socket_read functions.
5978
5979 Thu Sep 20 23:11:28 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5980
5981         * Allow only nicknames and channel names that fits into the
5982           7-bit unsigned char ASCII set.  Affected file silcd/command.c.
5983
5984 Thu Sep 20 18:04:12 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5985
5986         * When processing JOIN command reply in server check that if
5987           the channel exists in our global list we'll move it the local
5988           list.  Affected file silcd/command_reply.c.
5989
5990         * Fixed the check whether client is joined on the channel already
5991           in JOIN command.  Affected file lib/silcclient/command.c.
5992
5993         * Fixed the JOIN command reply to check whether the channel
5994           already exists.  Affected file lib/silcclient/command_reply.c.
5995
5996 Wed Sep 19 22:58:32 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5997
5998         * Added silc_ske_status_string to map the SKE error numbers
5999           to readable strings.  The affected files are
6000           lib/silcske/silcske[_status].[ch].
6001
6002 Tue Sep 18 22:50:41 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6003
6004         * Do not show the private channels on the WHOIS channel list
6005           as it is not allowed by the protocol.  The affected file is
6006           silcd/server.c.
6007
6008 Sun Sep 16 12:32:58 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6009
6010         * Assure that the packet length digged from the actual packet
6011           is something sensible in the silc_packet_decrypt_rest_special
6012           in lib/silccrypt/silcpacket.c.
6013
6014         * Free and NULL the allocated pointer in silc_hmac_alloc if
6015           the HMAC allocation fails.  The affected file is
6016           lib/silccrypt/silchmac.c.
6017
6018         * Print the selected security properties to the log files in
6019           the server.  Affected file silcd/protocol.c.
6020
6021         * Add SKE's reference counter even if calling the completion
6022           callback manually.  Otherwise it goes negative, although it
6023           does not cause any problems.  The affected file is
6024           lib/silcske/silcske.c.
6025
6026         * Remove the client entry with short timeout after giving the
6027           KILL command.  Affected file lib/silcclient/command.c.
6028
6029         * Fixed to send error reply in WHOIS and IDENTIFY commands in
6030           case all found clients are already disconnected (WHOWAS would
6031           found them) in the server.  Affected file silcd/command.c.
6032
6033         * Update the last_receive (time of last data received) to be
6034           updated only when received private or channel message so that
6035           the idle time showed in WHOIS makes more sense.
6036
6037         * Added boolean field `valid' in to the SilcClientEntry in the
6038           client library to indicate whether the entry is valid or not.
6039           This fixes the nickname change bug on channel when changing
6040           the nickname to be same than the old (like nick to Nick) the
6041           nickname formatter doesn't set the new nick anymore to Nick@host.
6042           Affected file lib/silcclient/idlist.[ch].
6043
6044         * Now actually fixed the nickname changing on disconnection.
6045           Added new function silc_change_nick to the Irssi SILC Client.
6046           Affected file irssi/src/silc/core/client_ops.c,
6047           irssi/src/silc/core/silc-nicklist.[ch].
6048
6049 Sat Sep 15 13:29:17 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6050
6051         * Check that the public key exists in the GETKEY command before
6052           trying to encode it.  Affected file silcd/command.c.
6053
6054         * Print some notifications on received public keys with GETKEY
6055           command in the Irssi SILC Client.  Affected files are
6056           irssi/src/fe-common/silc/module-formats.[ch],
6057           irssi/src/silc/core/client_ops.c.
6058
6059         * Use IDENTIFY command to resolve the server information in the
6060           GETKEY command instead of INFO command.  Affected file
6061           lib/silcclient/command.c.
6062
6063         * All command reply functions in the client library now calls
6064           the pending command reply callbacks even if an error has
6065           occurred.  The server has done this a long time and now it was
6066           time to move the client library to this as well.  Now all
6067           errors can be delivered back to the pending command reply
6068           callbacks if necessary.  Affected files are
6069           lib/silcclient/command[_reply].[ch].
6070
6071         * Change the nickname on disconnection back to the username
6072           because in reconnect the server will enforce it to it anyway.
6073           Affected file irssi/src/silc/core/silc-servers.c.
6074
6075         * Fixed a config file parsing bug in the Irssi SILC client.
6076           Affected file irssi/src/silc/core/clientconfig.c.
6077
6078 Thu Sep 13 23:11:18 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6079
6080         * When printing the channel mode on JOIN, verify that the
6081           channel key and channel's HMAC are valid.  Affected file
6082           irssi/src/silc/core/client_ops.c.
6083
6084 Thu Sep 13 20:24:52 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6085
6086         * Added defines SILC_DEFAULT_CIPHER, SILC_DEFAULT_HMAC,
6087           SILC_DEFAULT_HASH and SILC_DEFAULT_PKCS in the file
6088           lib/silccrypt/[silccipher.h|silchmac.h|silchash.h|silcpkcs.h].
6089
6090         * Removed channel key rekey task deleting from the function
6091           silc_server_save_channel_key.  Affected file silcd/server.c.
6092           Added explicit timeout task context instead that is used to
6093           delete the task if we are registering a new task before the
6094           new task has elapsed.
6095
6096         * When channel key rekey occurs the client library now saves
6097           the old channel key for a short period of time (10 seconds) and
6098           is able to use it in case some is still sending channel
6099           messages encrypted with the old key after the rekey.  Affected
6100           file lib/silcclient/[idlist.h|client_channel.c].
6101
6102 Sun Sep  9 15:49:16 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6103
6104         * Added check to the silc_server_new_id_real to not accept
6105           new ID if it is the sender's own ID.  Affected file is
6106           silcd/packet_receive.c.
6107
6108         * Assure that we do not announce ourself or the one we've
6109           sending our announcements when we're router and are announcing
6110           servers to our primary router.  Affected file silcd/server.c.
6111
6112         * Fixed silc_server_command_identify_check_client to assemble
6113           correct WHOIS packet.  It send corrupted WHOIS packet and
6114           caused problem with router to router connections.  Affected
6115           file silcd/command.c.
6116
6117           Fixed also silc_server_command_whois_check the same way
6118           as for the IDENTIFY command.
6119
6120         * Added new SilcIDListStatus to the server in the SilcIDListData
6121           structure.   The status now includes the current status of
6122           the entry (like registered, resolved etc.).  Affected file
6123           silcd/idlist.[ch].  Defined a bunch of different status types
6124           as well.  This replaced the old boolean registered field as well.
6125
6126           Added resolve_cmd_ident field to the SilcClientEntry structure
6127           too so that if the entry is for example being resolved so
6128           another command may attach to the same pending command reply
6129           without requiring to resolve the same entry again.  This concept
6130           should optimize the WHOIS and the IDENTIFY resolving under
6131           heavy load by taking away unnecessary resolving for entries
6132           that are being resolved already.
6133
6134           Added support for adding multiple pending commands for one
6135           command idenfier.  Affected file silcd/command[_reply].[ch].
6136
6137         * Fixed WHOIS and IDENTIFY save to remove the cache entry
6138           before deleting the data.  Otherwise the hash table will have
6139           freed data in comparison functions.  Affected file is
6140           silcd/command_reply.c.
6141
6142         * Fixed silc_idlist_replace_client_id to add the new entry to
6143           the cache with NULL nickname.  Otherwise there will be invalid
6144           memory as the nickname after the nickname is freed.  Affected
6145           file silcd/packet_receive.c.
6146
6147         * Fixed the silc_idlist_get_clients_by_hash.  The entries was
6148           saved into wrong slots because the previous number of entries
6149           was not taken into account.  Affected file silcd/idlist.c.
6150           Fixed same thing in silc_idlist_get_clients_by_nickname too.
6151
6152         * If we are router and we receive JOIN notify to a channel that
6153           does not have any users then notified client is marked as the
6154           channel founder, as it is it.  The affected file is
6155           silcd/packet_receive.c
6156
6157         * Added to the extended hash table API's table_del_*ext functions
6158           the destructor as argument too, so that the caller can decide
6159           which destructor to use or whether to use destructor at all.
6160           Affected file lib/silcutil/silchashtable.[ch].
6161
6162         * Fixed ID Cache purging.  It actually deleted the entries from
6163           the hash table after the data was freed.  The hash table ended
6164           up comparing freed memory.  The affected file is
6165           lib/silccore/silcidcache.c.
6166
6167 Sat Sep  8 10:22:10 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6168
6169         * Fixed Irssi SILC client's KILL command's HELP syntax.
6170
6171         * The USERS command now resolves the detailed user information
6172           if the userinfo field is missing.  Affected file is
6173           lib/silcclient/command_reply.c.
6174
6175         * Do not print error in silc_file_read if the read file does
6176           not exist.  Just silently return NULL.  Affected file is
6177           lib/silcutil/silcutil.c.
6178
6179         * Fixed the silc_log_output to not wine about NULL filename
6180           and to not create some bogus " " filename.  Affected file is
6181           lib/silcutil/silclog.c.
6182
6183 Fri Sep  7 22:16:38 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6184
6185         * Fixed various printing bugs on the user interface in the
6186           Irssi SILC Client.  Minor changes that were forgotten from
6187           the release.
6188
6189 Fri Sep  7 17:28:37 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6190
6191         * Fixed the configure.in.pre and the compilation and distribution
6192           environment to support the new autoconf 2.52.  That version is
6193           now required to compile the CVS trunk.
6194
6195 Thu Sep  6 12:47:37 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6196
6197         * Renamed function silc_parse_nickname to silc_parse_userfqdn
6198           to generally parse user@fqdn format strings.  Affected file
6199           lib/silcutil/silcutil.c.
6200
6201         * Added nickname_format and nickname_force_format fields to the
6202           SilcClientParams structure.  The first one defines the format
6203           for the nicknames that the library will enforce if the receives
6204           multiple same nicknames.  The second one is boolean value and
6205           can be used to force the library to always enforce the format
6206           to the nicknames regardles whether there are multiple nicknames
6207           or not.  This configurable formatting was employed to flexibly
6208           support accessing multiple nicknames from the user interface.
6209           The userinterface can now set the nicknames to what ever format
6210           they prefer.  Affected file lib/silcclient/silcapi.h.
6211
6212           Added function silc_client_nickname_format to the file
6213           lib/silcclient/idlist.c.  It performs the nickname formatting.
6214
6215           Added new field `hostname´ to the SilcClientEntry context.
6216           It holds the hostname of the client.  Affected file is
6217           lib/silcclient/idlist.h.
6218
6219         * Irssi SILC Client sets the nicknames in nick@hostn format.
6220           Fe. priikone@otaku, priikone@otaku2 etc.  Affected file
6221           irssi/src/silc/core/silc-core.c.
6222
6223           The WHOIS printing now also shows both the real nickname and
6224           the formatted nickname so that user knows how to access the
6225           user if there are multiple same nicknames cached.  Affected
6226           file irssi/src/silc/core/client_ops.c.  Changed the WHOIS
6227           printing formatting too to take the hostname now as a separate
6228           argument.  The Affected file is
6229           irssi/src/fe-common/silc/modules-formats.[ch].
6230
6231         * Changed the silc_client_get_clients_local to accept the formatted
6232           nickname as argument.  It accepts the real nickname too but the
6233           formatted nickname can be used to find the true entry from
6234           multiple entries.  Affected file lib/silcclient/silcapi.h and
6235           lib/silcclient/idlist.c.
6236
6237         * Added nickname_format_parse field to the SilcClientParams.
6238           It is a callback function provided by the application to parse
6239           the nickname out of the formatted nickname string. The library
6240           calls it to get the nickname from the formatted string. Since
6241           the application generally knows better the format of the nickname
6242           string it parses it instead of the library, even though library
6243           encodes the formatted string.  If the callback function is not
6244           provided then the library will use the string as is.  The
6245           affected file is lib/silcclient/silcapi.h.
6246
6247         * All the nickname strings passed to the client library in
6248           commands are now expected to be formatted nickname strings.
6249           If the command does not support the formatted nickname string
6250           it will assume that the sent string is the actual nickname.
6251           Affected file lib/silcclient/command.c.
6252
6253 Tue Sep  4 22:31:28 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6254
6255         * Added public key authentication support to OPER and SILCOPER
6256           commands in the client library.  Affected file is
6257           lib/silcclient/command.c.
6258
6259 Tue Sep  4 12:39:17 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6260
6261         * Changed the get_auth_methdod client operation to be asynchronous.
6262           It can be async if the application resolves the authentication
6263           method from the server during the negotiation.  Added new
6264           SilcGetAuthMeth completion callback that the application will
6265           call after resolving the authentication method.
6266
6267           Added function silc_client_request_authentication_method that
6268           the application can use to resolve the authentication method
6269           from the server.  Added also SilcConnectionAuthRequest callback
6270           that the library will call after the server has replied.  The
6271           application can call this function if it does not know the
6272           current authentication method.
6273
6274           Affected files are lib/silcclient/client.c and
6275           lib/silcclient/silcapi.h.
6276
6277         * The Irssi SILC client now automatically resolves the authentication
6278           method incase any configuration information is not present (and
6279           currently there never is).  The affected file is
6280           irssi/src/silc/core/client_ops.c.
6281
6282         * Fixed public key authentication from the client library.
6283           Affected file lib/silcclient/protocol.c.  Changed also the
6284           protocol specification about the public key authentication in
6285           the connection authentication protocol.  The actual data to be
6286           signed is now computed with a hash function before signing.
6287
6288         * Fixed the public key authentication from the server as well.
6289           Affected file silcd/protocol.c.
6290
6291         * Removed the mlock()'s from the memory allocation routines.
6292           Affected file lib/silcutil/silcmemory.c.  The ./configure does
6293           not check anymore for the mlock().  Affected file is
6294           configure.in.pre.
6295
6296         * Fixed USERS command in server to allow the execution of the
6297           command for private and secret channels if the client sending
6298           the command is on the channel.  Affected file silcd/command.c.
6299
6300         * Fixed silc_client_get_clients_local to return the clients
6301           count correctly.  It could return wrong value.  Affected file
6302           lib/silcclient/idlist.c.
6303
6304 Mon Sep  3 20:09:59 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6305
6306         * Fixed the lib/silcmath/mpi/mpi.h to always use 32-bit data
6307           types.  The assembler optimizations seemed not to like 64-bit
6308           data types.  The assmebler optimizations thus are now enabled
6309           also for BSD systems as opposed to only enable them for Linux.
6310
6311         * Do not check for threads at all on BSD systems.  Affected
6312           file configure.in.pre.
6313
6314         * Removed -n and -h options from the Irssi SILC Client since
6315           they are not used in silc.
6316
6317         * Fixed the prime generation to assure that the first digit
6318           of the generated random number is not zero since our conversion
6319           routines does not like number strings that starts with zero
6320           digit.  If zero digit is seen the random number is regenerated.
6321           This caused some corrupted RSA keys when the zero first digit
6322           was met.  Affected file lib/silcmath/silcprimegen.c.
6323
6324 Sun Sep  2 17:17:24 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6325
6326         * Fixed WIN32 configuration in the ./configure script.
6327           Fixed to include xti.h on environments that has it.
6328           Patches by Carsten Ilchmann and andrew.
6329
6330 Sat Sep  1 00:29:33 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6331
6332         * Changed the silc_id_create_client_id to be collision
6333           resistant.  It is now assured that there cannot be created
6334           two same client ID's.  I suspect that some weird bugs in
6335           the server were actually caused by duplicate Client IDs.
6336           Affected file silcd/serverid.[ch].  A router receiving
6337           new ID now also assures and informs the sending server
6338           if the ID caused collision.
6339
6340         * Changed the silc_id_create_channel_id to also assure that
6341           there are no collisions.
6342
6343 Wed Aug 29 17:55:01 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6344
6345         * Statement about ignoring the Mutual Authentication flag when
6346           performing rekey with PFS was a bit misleading.  It is ignored
6347           if it was set in the initial negotiation, it cannot be even
6348           set in the rekey.  Fixed in the ke-auth draft.  Started the
6349           new versions of the protocol drafts in the doc/.
6350
6351 Sun Aug 26 14:59:15 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6352
6353         * Fixed a bug in silc_client_command_identify_save when saving
6354           new channel information.  The channel name was no duplicated
6355           and caused crash on exit.  Affected file is
6356           lib/silcclient/command_reply.c.
6357
6358 Fri Aug 17 23:07:45 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6359
6360         * Fixed the getkey command handling in the server.  Send just
6361           empty OK reply to the sender if the key could not be fetched
6362           (but everything else was ok, like the key just was not available).
6363           Changed the public key parameter to optional in the protocol
6364           specs so that empty OK reply can be sent.  Affected file
6365           silcd/command.c.
6366
6367           Added a message to Irssi SILC client to tell to user if the
6368           server did not return a public key.
6369
6370 Tue Aug 14 07:29:27 CEST 2001  Pekka Riikonen <priikone@silcnet.org>
6371
6372         * Fixed a channel key regeneration bug.  It registered new
6373           timeout tasks exponentially until all system resources were
6374           used.  Affected file silcd/server.c.
6375
6376 Sun Aug 12 20:48:14 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6377
6378         * Added the SILC Document generator to the scripts/silcdoc.
6379           It can be used to generate the Toolkit Reference Manual out
6380           of the source tree.  Internally it will also use the RoboDoc
6381           generator now imported in util/robodoc.
6382
6383 Sun Aug 12 12:28:17 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6384
6385         * Added couple of return's in rekey protocol if error orccurred
6386           during the protocol.  The execution must be terminated.
6387           Affected file silcd/protocol.c.  Also, terminate the protocol
6388           always with timeout.
6389
6390 Sat Aug 11 12:36:02 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6391
6392         * The client's Client ID was created initally from the wrong
6393           nickname (it could have been in format nick@host) in the
6394           silc_server_new_client.  Affected file silcd/packet_receive.c
6395
6396 Sat Aug 11 00:29:57 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6397
6398         * Added some SILC_LOG_ERROR's to various error conditions
6399           if client could not be added to ID cache.  Affected files
6400           silcd/packet_receive.c and silcd/server.c.
6401
6402         * When client's sock->user_data is freed, NULL also the
6403           client->router and client->connection pointers.  Added check
6404           for these pointers being NULL to various places around the
6405           code.  Affected file silcd/server.c.
6406
6407         * Added client->data.registered == TRUE checks to various
6408           places around the code to assure that unregistered client's
6409           are not handled when it is not allowed.  Affected file
6410           silcd/server.c.
6411
6412         * Added `bool registered' fields to all
6413           silc_idlist_[server|client]_get_* routines to indicate whether
6414           the fetched client needs to be registered or not.  Affected
6415           file silcd/idlist.[ch].
6416
6417         * Add your own entry as registered to the ID cache in the
6418           server.  Affected file server.c.
6419
6420         * Fixed a bug in silc_server_new_server.  The SilcServer was
6421           set as the new server's context instead of SilcServerEntry.
6422           This naturally caused some weird bugs.
6423
6424         * Added "updated" field the SilcChannelEntry which indicates
6425           the time since the channel entry was last accessed.  This
6426           can be used to determine whether it is necessary to
6427           announce the channel after backup resuming protocol.
6428           Affected files silcd/idlist.[ch].
6429
6430 Thu Aug  9 18:28:37 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6431
6432         * Do not delete the channel rekey task when adding it
6433           for in silc_server_create_channel_key.
6434
6435         * Changed the silc_server_create_channel_key to return
6436           TRUE or FALSE to indicate the success of the channel key
6437           creation.
6438
6439 Thu Jul 26 11:32:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6440
6441         * Fixed MSVC++ project files and added missing files to
6442           Makefiles under win32/.
6443
6444 Wed Jul 25 18:43:54 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6445
6446         * Do not add TCP_NODELAY flag if the operating system
6447           does not have it defined.  Affected files are
6448           lib/silcutil/[unix/win32]/silc[unix/win32]net.c.
6449
6450         * Fixed buffer overflow from Irssi SILC Client.  Affected
6451           file irssi/src/fe-common/core/themes.c.
6452
6453         * Fixed double free in client library in the file
6454           lib/silcclient/client.c when disconnecting from server.
6455
6456         * Applied double free patch from cras to Irssi SILC client.
6457           Affected files irssi/src/core/[modules/expandos].c
6458
6459         * Fixed the disconnection handling to Irssi SILC Client.
6460           The application must call silc_client_close_connection
6461           in ops->connect client operation in case of failure of
6462           the connection.  Affected file is
6463           irssi/src/silc/core/client_ops.c.
6464
6465         * Do not set sock->protocol to NULL in the function
6466           silc_client_close_connection after executing the protocol's
6467           final callback since the sock might not be valid anymore.
6468           Affected file lib/silcclient/client.c.
6469
6470 Wed Jul 25 16:04:35 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6471
6472         * Do not enable SILC_THREADS if the linking with libpthread
6473           did not happen.  Affected file configure.in.pre.
6474
6475         * Added notion to protocol specification that server must
6476           verify the sent authentication payload with CMODE when
6477           setting the channel founder key.  Implemented it to the
6478           server.  Affected file silcd/command.c.
6479
6480 Mon Jul 23 18:31:43 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6481
6482         * Added _EXTRA_DIST SILC distribution variable to the
6483           distributions file.  It is used to conditionally add extra
6484           files or directories to the specific distribution.  Affected
6485           files ./prepare, Makefile.am.pre and distributions.
6486
6487           Removed the `_' from the start of the distribution names.
6488           It is redundant.
6489
6490         * Added README.WIN32 for instructions to compile the Toolkit
6491           under WIN32.
6492
6493 Mon Jul 23 10:12:37 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6494
6495         * Fixed a double free in disconnection in the server.  Affected
6496           file is silcd/server.c.
6497
6498         * Fixed the lib/silcske/groups.c to work now also with GMP
6499           MP library.  The string conversion did not work when using
6500           specific base and the base is indicated in the string as well.
6501
6502         * Created win32/ directory which now includes MSVC++ specific
6503           stuff so that toolkit (DLLs) may be compiled with MSVC++.
6504           It will appear only in the toolkit distribution
6505
6506 Sun Jul 22 19:40:30 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6507
6508         * Changed the key material distribution function in case when
6509           the hash output is too short.  The data is now concatenated
6510           a bit differently than it used to.  Made the change to the
6511           SKE protocol specification.
6512
6513         * Added better GMP detection to configure.in.pre.  A patch
6514           by salo.
6515
6516 Fri Jul 20 13:16:00 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6517
6518         * Fixed a minor bug in SKE that might cause some problem on
6519           some platforms.  Affected file lib/silcske/silcske.c.
6520
6521         * Added the cookie checking for initiator in the SKE.  It checks
6522           that the responder returns the sent cookie unmodified.  The
6523           affected file is lib/silcske/silcske.c.  Added new SKE
6524           error type INVALID_COOKIE that can be sent during the
6525           negotiation.  Fixed some memory leaks as well.
6526
6527         * Added the "invalid cookie" error message to Irssi SILC client's
6528           message formats.
6529
6530 Thu Jul 19 21:44:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6531
6532         * Added `task_max' field to the SilcClientParams to indicate
6533           the maximum tasks the scheduler can handle.  If set to zero,
6534           default values are used.  Affected file lib/silcclient/silcapi.h.
6535
6536         * Fixed memory leaks in silc_client_close_connection.  Affected
6537           file lib/silcclient/client.c.
6538
6539         * Added silc_client_del_client_entry to client library to free
6540           all memory of given client entry.  Affected file is
6541           lib/silcclient/idlist.[ch].
6542
6543         * Added new functions silc_client_del_channel and
6544           silc_client_del_server to delete channel and server entries.
6545           Affected file lib/silcclient/[silcapi.h/idlist.c].
6546
6547         * Removed silc_client_del_client_by_id from silcapi.h.
6548
6549         * Fixed the INFO command to return the server's own info
6550           correctly when querying by Server ID.  Affected file is
6551           silcd/command.c.
6552
6553 Thu Jul 19 14:47:30 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6554
6555         * Removed the non-blocking settings in WIN32 code in the
6556           silc_sock_[read/write] and added SleepEx instead.  Affected
6557           file lib/silcutil/win32/silcwin32sockconn.c.  The availability
6558           of input data is now checked with FIONREAD and ioctlsocket.
6559
6560 Wed Jul 18 18:34:01 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6561
6562         * Call silc_schedule_task_del_by_context in the
6563           silc_protocol_cancel instead of silc_schedule_task_del_by_callback.
6564           Affected file lib/silccore/silcprotocol.c.
6565
6566         * Call silc_protocol_cancel for active protocols in the
6567           silc_server_close_connection if the funtion
6568           silc_server_free_sock_user_data has not been called.
6569           Affected file silcd/server.c.
6570
6571         * Generic tasks cannot be deleted using the del_by_fd
6572           task deleting function since generic tasks does not match
6573           any specific fd.  Affected file lib/silcutil/silcschedule.[ch].
6574
6575         * Added a notion to SILCOPER help file that the SILCOPER works
6576           only on router server, not on normal server.
6577
6578 Wed Jul 18 09:40:04 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6579
6580         * Added for WIN32 support for the new scheduler as well.
6581           Affected file lib/silcutil/win32/silcwin32schedule.c.
6582
6583         * Fixed the SHA1 implementation to work on various platforms.
6584
6585 Tue Jul 17 23:04:10 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6586
6587         * Rewrote the SILC Scheduler entirely.  Removed the old SILC Task
6588           API.  It is part of the scheduler now.  Everything else is
6589           as previously but some functions has changed their names.
6590           Checkout the lib/silcutil/silcschedule.h for the interface.
6591           Updated all applications to use the new interface.  Affected
6592           files are lib/silcutil/silcschedule.[ch].
6593
6594 Tue Jul 17 16:53:30 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6595
6596         * Found a bug in the SKE implementation.  The HASH value,
6597           specified by the protocol, was not computed correctly.  The
6598           public key of the responder was not added to the computation
6599           even though it is mandatory.  Affected file lib/silcske/silcske.c.
6600           This unfortunately causes incompatibilities with older
6601           clients and servers.
6602
6603         * Added WIN32 specific network init and uninit functions:
6604           silc_net_win32_init and silc_net_win32_uninit to init and uninit
6605           the Winsock2.  Affected file lib/silcutil/silcnet.h and
6606           lib/silcutil/win32/silcwin32net.c.
6607
6608         * Set the socket always to nonblocking mode on WIN32 after
6609           reading data or writing data.  Affected file is
6610           lib/silcutil/win32/silcwin32sockconn.c.
6611
6612 Mon Jul 16 22:55:26 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6613
6614         * Fixed various compilation problems under WIN32.  Affected
6615           files lib/silcutil/win32/silcwin32thread.c and
6616           lib/silcutil/win32/silcwin32schedule.c.
6617
6618         * Removed all _internal.h #includes from public header
6619           files.  Internal headers must never be included from
6620           public headers.
6621
6622           Removed also the lib/silcske/payload_internal.h file.
6623
6624         * All include files that may be needed (public and some others
6625           included by the public headers) by application developers are
6626           now copied to the ./includes directory.  It does not copy any
6627           internal headers.  Affected file Makefile.defines.pre and all
6628           Makefile.am's under lib/ and subdirs.
6629
6630 Thu Jul 12 17:49:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6631
6632         * Do not change the ~/.silc directory's permissions automatically.
6633           Affected file irssi/src/silc/core/clientutil.c.
6634
6635 Thu Jul 12 10:18:40 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6636
6637         * Do not cancel the protocol in silc_server_close_connection
6638           it might cause recursion.  Now cancelled in the function
6639           silc_server_free_sock_user_data.  Affected file silcd/server.c.
6640
6641         * Fixed the silc_server_remove_clients_by_server to regenerate
6642           the channel keys correctly finally.  Added also new function
6643           silc_server_remove_clients_channels to actually do it.
6644           Affected file silcd/server.c.
6645
6646         * Fixed the silc_server_new_channel to not crash by giving
6647           wrong router to the new channel.  Affected file is
6648           silcd/packet_receive.c.
6649
6650 Wed Jul 11 18:31:57 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6651
6652         * Added SilcClientParams structure to the lib/silcclient/silcapi.h
6653           which is given as argument to the silc_client_alloc now.
6654           It can be used to configure the client and set various parameters
6655           that affect the function of the client.
6656
6657         * The USERS command in server did not check whether the channel
6658           is private or secret.  Affected file silcd/command.c.
6659
6660         * Added new argument to the USERS command in protocol specification.
6661           The USERS command now can take the channel name as argument
6662           as well.  Added support for this in client and server and
6663           updated the protocol specs.
6664
6665         * Completed the GETKEY command in client. It can be now used
6666           to fetch also servers public key not only some clients.
6667           Affected files lib/silcclient/command[_reply].c.
6668
6669         * Added silc_client_get_server to return server entry by the
6670           server name.  Affected files lib/silcclient/silcapi.h and
6671           idlist.c.
6672
6673         * Redefined the IDENTIFY command in protocol specification to be
6674           more generic.  It now can be used to query information about
6675           any entity in the SILC Network, including clients, servers and
6676           channels.  The query may be based either the entity's name
6677           or the ID.  Added support for this in both client and server.
6678
6679           Affected files silcd/command.c and lib/silcclient/command.c
6680           and command_reply.c.
6681
6682         * Optimized the WHOIS and WHOWAS commands in the server. Removed
6683           the _from_client and _from_server functions.  Affected file
6684           silcd/command.c.
6685
6686         * Added silc_client_get_channel_by_id_resolve to the file
6687           lib/silcclient/silcapi.h to resolve channel information by
6688           its ID.  Added also silc_client_get_channel_by_id that
6689           does not resolve it from the server.
6690
6691 Tue Jul 10 18:05:38 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6692
6693         * Added SilcServerEntry context into the client library
6694           to represent one server.  The INFO command now allocates
6695           these to save the resolved server info.  For now on the
6696           client library will also keep information about servers,
6697           connected and resolved with INFO.
6698
6699           The INFO command now allocates the SilcServerEntry context
6700           and saves the server info there.  The COMMAND_REPLY in
6701           the INFO now returns the parameters to application in
6702           same order as defined in the protocol specification.
6703
6704           The entries are cached in the client->server_cache.
6705
6706         * The INFO command is now issued after received the Client ID
6707           from the server.  Affected file lib/silcclient/client.c.
6708
6709         * The CMODE_CHANGE notify may now return also an SilcServerEntry
6710           to the application as the mode changer might be server.
6711           It is guaranteed that NULL is not returned anymore to the
6712           application.  Affected file lib/silcclient/client_notify.c.
6713
6714           The ID Type is now also passed to the application so that
6715           it can check whether the returned entry is SilcClientEntry
6716           or SilcServerEntry.
6717
6718           Added new function silc_client_get_server_by_id to return
6719           the server entry by ID.  Affected files are the
6720           lib/silcclient/silcapi.h and lib/silcclient/idlist.c.
6721
6722         * Do not create the channel in the Irssi SILC Client when issuing
6723           the JOIN command but when received the sucessful JOIN command
6724           reply.  Otherwise the channel might get created even though we
6725           could not join it.  The Affected file is
6726           irssi/src/silc/core/[silc-channels.c/client_ops.c].
6727
6728         * Fixed a channel joining bug in router.  The router must also
6729           check the channel modes, invite and ban lists etc. when serving
6730           the JOIN command sent by normal server.  Affected file is
6731           silcd/command.c.  The router now resolves the client's
6732           information from the server who sent the JOIN command if it
6733           does not know it, and processes the JOIN command only after
6734           that.
6735
6736         * Changed the SilcCommandCb to take new argument; void *context2.
6737           Affected file lib/silccore/silccommand.h
6738
6739           The second argument in the command callbacks in the server now
6740           includes the SilcServerCommandReplyContext if the command was
6741           called as pending command callback from the command reply.
6742           Otherwise it is NULL. When called as pending the status of the
6743           command reply will be checked and if it was erronous the
6744           error will be sent to the original sender of the command.
6745           This way the client always receives the error messages even
6746           though the server was actually the one who received the error
6747           when it resent the command to router, for example.  Affected
6748           files silcd/command[_reply].[ch].
6749
6750         * Fixed sending WHOWAS command's error message to client if
6751           the requested client could not be found.  It was missing.
6752           silcd/command.c.
6753
6754         * Changed the CMODE and CUMODE commands reply arguments in the
6755           protocol specification.  The Channel ID is now sent in both
6756           of the commands to identify the channel.  Implemented this
6757           new feature to the client and server.  Affected files
6758           lib/silcclient/command_reply.c and silcd/command.c.
6759
6760         * Made better checks for invite and ban lists in the JOIN
6761           command in server.  Affected file silcd/command.c.
6762
6763 Mon Jul  9 18:28:34 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6764
6765         * The server now performs the incoming host IP/DNS lookup
6766           using the silc_socket_host_lookup and thus does not block
6767           the server anymore.  Affected file silcd/server.c.
6768
6769         * Completed the multi-thread support for SILC Scheduler in
6770           the lib/silcutil/silcschedule.c.
6771
6772         * Fixed the configure.in.pre to detect the pthread correctly
6773           on various systems.
6774
6775         * Fixed a deadlock in silc_task_queue_wakeup in the file
6776           lib/silcutil/silctask.c.
6777
6778 Mon Jul  9 13:40:03 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6779
6780         * Added new function silc_schedule_wakeup that is used in
6781           multi-threaded environment to wakeup the main thread's
6782           schduler. It needs to be used when a thread adds a new task
6783           or removes a task from task queues. After waking up, the
6784           scheduler will detect the task queue changes. If threads
6785           support is not compiled in this function has no effect.
6786           Implemented the wakeup mechanism to both Unix and WIN32
6787           systems.  Affected files are lib/silcutil/silcschedule.[ch],
6788           lib/silcutil/unix/silcunixschedule.c and the
6789           lib/silcutil/win32/silcwin32schedule.c.
6790
6791         * Added new function silc_task_queue_wakeup to wakeup the
6792           scheduler by the specified task queue.  Affected file
6793           lib/silcutil/silctask.[ch].
6794
6795         * The silc_socket_host_lookup_start now wakes up the scheduler
6796           after adding the timeout task.  Affected file is
6797           lib/silcutil/silcsockconn.c.
6798
6799         * The silc_socket_host_lookup is synchronous now if the threads
6800           support is not compiled in.  However, the callback is still
6801           called asyncronously through the scheduler, anyway.  Affected
6802           file lib/silcutil/silcsockconn.c.
6803
6804 Mon Jul  9 00:24:45 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6805
6806         * Added new function silc_socket_host_lookup to perform
6807           asynchronous IP and FQDN lookups for the socket connection.
6808           Affected files lib/silcutil/silcsockconn.[ch].
6809
6810 Sun Jul  8 18:44:53 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6811
6812         * Added SILC_MUTEX_DEFINE to define the mutex on environments
6813           that may or may not compile the mutex support in.
6814
6815           Changed the silc_mutex_alloc interface. It allocates the
6816           mutex now to the sent pointer and returns TRUE or FALSE.
6817
6818           Affected file lib/silcutil/silcmutex.h.
6819
6820         * Wrote the SILC Task Queue interface to support multi-threads.
6821           Affected file lib/silcutil/silctask.[ch].
6822
6823         * Wrote the SILC Scheduler to support multi-threads.  Affected
6824           file lib/silcutil/silcschedule.c.
6825
6826 Sun Jul  8 11:16:01 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6827
6828         * Implemented the SILC Mutex API and SILC Thread API for WIN32
6829           in lib/silcutil/win32/.
6830
6831 Sun Jul  8 00:18:15 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6832
6833         * Defined SILC Mutex API and SILC Thread API and implemented
6834           them for Unix.  Affected files are
6835           lib/silcutil/silcmutex.h, lib/silcutil/silcthread.h,
6836           lib/silcutil/unix/silcunixmutex.c and
6837           lib/silcutil/unix/silcunixthread.c.
6838
6839 Sat Jul  7 14:40:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6840
6841         * Fixed the silc_server_remove_clients_by_server's channel
6842           key re-generation.  The hash table handling was incorrect
6843           and would not work with many channels.  Affected file is
6844           silcd/server.c.
6845
6846         * Fixed some memory leaks around the server code.
6847
6848         * Rewrote the silc_server_get_users_on_channel to support IPv6
6849           based Client ID's.  Affected file silcd/server.c.
6850
6851         * Defined the SILC_MESSAGE_FLAG_SIGNED to the protocol
6852           specification.  However, a separate document must be written
6853           to define the detailed signing procedure and the payload
6854           associated with the flag.  Defined the flag to the
6855           lib/silccore/silcchannel.h as well.
6856
6857 Fri Jul  6 18:26:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6858
6859         * Changed the dynamic tables to static size tables in the
6860           lib/silccrypt/silchmac.c.
6861
6862         * Removed GCC dependencies from the code.  A patch by cras.
6863
6864 Fri Jul  6 09:39:35 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6865
6866         * Do not show the error "Error receiving packet bla bla"
6867           in server if it really was not an error (-2 means that reading
6868           is pending).  Affected file silcd/server.c.
6869
6870 Thu Jul  5 21:22:32 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6871
6872         * Fixed a possible crash in silc_server_remove_clients_by_server
6873           in silcd/server.c.  Fixed there also some memory leaks.
6874
6875         * Fixed the silc_idlist_replace_client_id.  It could replace
6876           wrong key in the hash table.  Affected file silcd/idlist.c.
6877
6878         * Do not check whether there are global users on the channel
6879           if the channel->global_users is FALSE.  Affected functions
6880           silc_server_remove_from_one_channel and
6881           silc_server_remove_from_channels in silcd/server.c.  Also,
6882           do not check if the removed client is local as we can be
6883           sure that global client was not removed from the channel
6884           and checking for global users is not needed.
6885
6886         * The silc_server_remove_clients_by_server now re-generates
6887           the channel keys correctly for those channels that had
6888           clients removed from them.  Affected file silcd/server.c.
6889
6890 Tue Jul  3 11:39:20 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6891
6892         * Found the reason of random crashes in the server.  We weren't
6893           ignoring the SIGPIPE signal (which can be sent in write())
6894           and it crashed the server.  Affected file silcd/silcd.c.
6895
6896 Fri Jun 29 20:05:25 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6897
6898         * Assure that sock->user_data is not NULL in the function
6899           silc_server_packet_send in silcd/packet_send.c.
6900
6901         * Disconnect the remote connection if it could not be added
6902           to any ID lists in the server.  The affected file is
6903           silcd/server.c.
6904
6905         * Check in silc_server_packet_send[_real/dest] that the
6906           socket is not disconnecting and ignore the data if it is.
6907           Affected file silcd/packet_send.c.
6908
6909         * Define inline to __inline on native WIN32 compilation.
6910           Affected file includes/silcwin32.h.
6911
6912         * Added some explicit type casts for inline code since MSVC
6913           require them.  Affected files lib/silcutil/silcbuffer.h,
6914           lib/trq/silcdlist.h and lib/trq/silclist.h.
6915
6916         * Print warning in log files from now on if the packet
6917           decryption fails.  Affected file silcd/server.c.
6918
6919 Thu Jun 28 21:30:39 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6920
6921         * Changed the `say' client operation's interface to accept
6922           new `type' argument to indicate the type of the message sent
6923           by the library.  The application may filter the library's
6924           messages according the type.  The affected file is the
6925           lib/silcclient/silcapi.h.
6926
6927         * Added two new functions to lib/silcclient/silcapi.h:
6928           silc_client_del_client and silc_client_del_client_by_id.
6929           Affected file lib/silcclient/idlist.c.
6930
6931         * Moved the clientincludes.h from includes/ to silc/ and
6932           serverincludes.h from includes/ to silcd/.
6933
6934         * The modes for the CMODE and CUMODE are now passed as
6935           uint32 for application with COMMAND_REPLY.  The affected
6936           file is lib/silcclient/command_reply.c.
6937
6938 Wed Jun 27 22:24:47 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6939
6940         * /WHOIS without arguments shows client's own information.
6941           Affected file lib/silcclient/command.c.
6942
6943         * Changed PING to not accept any arguments.  The specs
6944           says that client can ping only the connected server so
6945           requiring an argument is not needed.  Affected file is
6946           lib/silcclient/command.c.
6947
6948 Wed Jun 27 00:10:33 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6949
6950         * Fixed a fatal bug in private message sending and reception
6951           encryption and decryption when using private message keys.
6952           The implementation was incorrect and did not follow the
6953           specification.  It causd that some of the message were
6954           lost since it did not use the sending and receiving keys
6955           as the protocol suggests.  This has been fixed and will cause
6956           incompatibilities with older clients when sending private
6957           message encrypted with private message keys.  Affected files
6958           lib/silcclient/client_prvmsg.c, lib/silcclient/client_keyagr.c
6959           and various other in Irssi SILC Client.
6960
6961           Added `responder' boolean argument to the functions
6962           silc_client_add_private_message_key[_ske] to indicate when
6963           the key is added as responder or initiator of the key
6964           negotiation.
6965
6966 Tue Jun 26 19:23:07 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6967
6968         * Removed the silc_ske_check_version function and created
6969           a SilcSKECheckVersion callback.  Added also a function
6970           silc_ske_set_callbacks that is now used to set all SKE
6971           callbacks.  The callback functions are not given to
6972           the SKE functions anymore, but this function is used to
6973           set the callbacks.
6974
6975         * Fixed the WIN32 DLL generation in lib/Makefile.am.pre.
6976
6977         * Added `silc_version' argument to the silc_client_alloc
6978           to define the version of the application for the library.
6979           The library will use the version string to compare it
6980           against the remote host's (usually a server) version
6981           string.  Affected file lib/silcclient/silcapi.h
6982
6983         * Added the KE protocol context to Key Agreement context
6984           in client library so that we can abort the SKE if it
6985           is in process when we get timeout.  Affected file is
6986           lib/silcclient/client_keyagr.c.
6987
6988         * Do not resolve the client ID forever if it returns in the
6989           first time that such client does not exist.  This was done
6990           for example with private message.  Affected file is
6991           lib/silcclient/client_prvmsg.c.
6992
6993 Mon Jun 25 21:42:51 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6994
6995         * Do not add regex.h for WIN32.  The affected file
6996           includes/silcincludes.h.
6997
6998         * Added WIN32 DLL generation to lib/Makefile.am.pre.  It might
6999           not work yet 100%.  It generates the DLL's automatically
7000           when compiling with --with-win32 under cygwin.
7001
7002 Sun Jun 24 19:49:23 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7003
7004         * lib/contrib/regex.c is not compiled on WIN32.
7005
7006         * Added silc_net_get_socket_opt function to the
7007           lib/silcutil/silcnet.h.
7008
7009         * Added includes/silcwin32.h for WIN32 specific includes
7010           and definitions.
7011
7012         * Do not use ptime structure or any of the posix process
7013           functions on WIN32 in lib/silccrypt/silrng.c.
7014
7015         * Added silc_gettimeofday to provide generic function
7016           for struct timeval on all platforms.  Added the function
7017           to lib/silcutil/silcutil.h.
7018
7019 Sun Jun 24 12:19:52 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7020
7021         * Moved the lib/silccore/silcsockconn.[ch] to the utility
7022           library as they clearly belong there.  As a plus side we
7023           can make the actual socket connection routines platform
7024           specific.
7025
7026           Added also new generic function silc_socket_read and
7027           silc_socket_write (that used to be silc_packet_[read/write].
7028           The implementation of these are platform specific.
7029
7030         * Added WIN32 specific routines of silc_socket_[read/write]
7031           to lib/silcutil/win32/silcwin32sockconn.c.
7032
7033 Sat Jun 23 16:01:00 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7034
7035         * Added preliminary support for native WIN32 compilation under
7036           cygwin (using the -mno-cygwin option for GCC) to the
7037           ./configure.in.pre.  The --with-win32 now prepares the
7038           compilation for native WIN32.
7039
7040         * Rewrote the SILC Scheduler interface in the file
7041           lib/silcutil/silcschedule.h.  The scheduler is now context
7042           based and does not have anymore any global static scheduler.
7043           Moved the Unix scheduler to the lib/silcutil/unix/ directory
7044           and created lib/silcutil/win32 directory for WIN32 based
7045           scheduler.
7046
7047         * Added Unix specific network routines to the
7048           lib/silcutil/unix/silcunixnet.c and the old
7049           lib/silcutil/silcnet.c includes now only generic routines.
7050
7051           Added WIN32 specific network routines to the
7052           lib/silcutil/win32/silcwin32net.c.
7053
7054         * Added Unix specific utility functions from the
7055           lib/silcutil/silcutil.c to lib/silcutil/unix/silcunixutil.c.
7056
7057         * Added WIN32 SILC Scheduler to the file
7058           lib/silcutil/win32/silcwin32schedule.c. The code is of course
7059           untested.
7060
7061 Fri Jun 22 10:44:14 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7062
7063         * Do not handle JOIN notify in the server if the target client
7064           is not registered (idata->registered == FALSE).  The affected
7065           file is silcd/packet_receive.c.
7066
7067         * Update the nickrec->founder in event_cumode in the Irssi SILC
7068           client.  Affected file irssi/src/silc/core/silc-channels.c.
7069
7070         * Fixed the CUMODE_CHANGE notify handling in the server when
7071           server and router are announcing their clients on channels.
7072           Now the mode changes are saved and notified correctly.  The
7073           affected file is /silcd/packet_receive.c.
7074
7075         * Fixed silc_idlit_replace_[server/client/channel]_id functions.
7076           They really did not replace the cache entry in the ID Cache.
7077           Now they do that.  Affected file silcd/idlist.c.
7078
7079         * Fixed the KICK notify handling in the Irssi SILC client to
7080           update the channel records so that the kicked client does not
7081           appear to be on the channel.  The affected file is
7082           irssi/src/silc/core/silc-channels.c.
7083
7084         * Always update the conn->current_channel when executing command
7085           on a channel.  Affected file irssi/src/silc/core/silc-servers.c.
7086
7087         * Fixed the KILL notify handling in Irssi SILC client to remove
7088           the killed client on all channels.
7089
7090 Thu Jun 21 17:10:08 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7091
7092         * Fixed the silc_parse_command_line to remove extra spaces
7093           from the start and end of the arguments.  Affected file is
7094           lib/silcutil/silcutil.c.
7095
7096         * Cancel and free any active protocol in the function
7097           silc_server_close_connection.  Affected file silcd/server.c.
7098
7099         * Cancel and free any active protocol in the function
7100           silc_client_close_connction.  Affected file is
7101           lib/silcclient/client.c.
7102
7103         * Do not execute the KILL command for clients that are in
7104           history (ie. they are not in the network).  Affected file is
7105           silcd/command.c.
7106
7107         * Fixed KILL notify handling, client does not crash anymore.
7108           Affected file irssi/src/silc/core/silc-channels.c.
7109
7110         * Reduced the default packet buffer size from 2048 to 1024 in
7111           lib/silccore/silcpacket.c.
7112
7113         * Added SILC_SKE_STATUS_FREED SKE status type and a reference
7114           counter to the SKE context that is incresed when the SKE library
7115           performs async operation outside the library.  If the outside
7116           process frees the SKE context and FREED status will be set
7117           and the library will detect after the sync operation that the
7118           libary is freed.  The affected files are
7119           lib/silcske/silcske[_status].[ch].
7120
7121         * Resolve the client entry information in the function
7122           silc_client_channel_message to assure that NULL pointer is not
7123           passed as client entry to the application. */
7124
7125         * Fixed the task timeout calculation to assure that there is
7126           never negative timeouts.  The affected file is
7127           lib/silcutil/silcschedule.c.
7128
7129         * Fixed the channel user mode notification sending in server.
7130           It was sent point-to-point to the router (or to server by router)
7131           but it needs to be destined to a channel.  The routines now
7132           supports sending the channel user mode notifys to the channels
7133           when announcing clients and channels.  Affected files are
7134           silcd/server.c and silcd/packet_receive.c.
7135
7136         * Fixed the CHANNEL_CHANGE notify handling in the client libary.
7137           It did not actually replace the old channel entry in the cache.
7138           Affected file lib/silcclient/client_notify.c.
7139
7140 Tue Jun 19 22:10:36 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7141
7142         * Fixed a possible crash in silc_packet_send_prepare.  It now
7143           assures always that there is enough space in the buffer and
7144           at the tail area of the buffer (for MAC).
7145
7146           Fixed the inbound buffer reallocation in silc_packet_read.
7147           It was old code and did not handle the reallocation correctly.
7148           Affected
7149
7150           The affected file is lib/silccore/silcpacket.c.
7151
7152         * Fixed buffer overflow in silc_parse_nickname in the file
7153           lib/silcutil/silcutil.c.
7154
7155 Tue Jun 19 13:40:09 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7156
7157         * make install generates new server keys only if there is not
7158           keys already.
7159
7160 Mon Jun 18 18:49:07 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7161
7162         * Set SILC_MESSAGE_FLAG_NOREPLY when sending the away message.
7163           Added check that if the NOREPLY is set then we will not send
7164           the away message.  This avoids infinite loop of away messages
7165           if both clients are away.  The affected file is
7166           lib/silcclient/client_prvmsg.c.
7167
7168         * Fixed client crash if /NICK was given without arguments.
7169           Affected file lib/silcclient/command.c.
7170
7171         * Server does not send the invite list in INVITE command back
7172           to the client if the list was not altered.  Added this notion
7173           to the protocol spec as well.  Affected file silcd/command.c.
7174
7175           Fixed possible crash in INVITE command by checking the
7176           value of silc_server_get_client_route command.
7177
7178         * Fixed the INVITE notify type handling.  The arguments are now
7179           taken in correct order and client does not crash.  The affected
7180           file is irssi/src/silc/core/silc-channels.c.
7181
7182           Removed the "Inviting xxx to channel" message from the
7183           client library away and let the application handle it.
7184           Affected file lib/silcclient/command.c.  Added that message
7185           to Irssi SILC client's message formats.
7186
7187         * Fixed CMODE command crash in client.  It now checks the
7188           amount of arguments correctly and does not crash.  The affected
7189           file is lib/silcclient/command.c.
7190
7191         * Do not create new channel automatically in silc_channels_join
7192           but check whether the channel by that name already exists.
7193           Affected file irssi/silc/core/silc-channels.c.
7194
7195         * Do not send the SERVER_SIGNOFF to router if the disconnected
7196           entity was the router.  Affected file silcd/server.c.
7197
7198         * Added the handling of the SERVER_SIGNOFF notify to the Irssi
7199           SILC client as it was missing from there.
7200
7201           Added the handling of the KICK notify to the Irssi SILC client
7202           as it was missing.  Added "you have been kicked" message to
7203           Irssi SILC client's message modules formats.
7204
7205           Added the handing of the KILL notify to the Irssi SILC client
7206           as it was missing.  Added the kill message module formats
7207           as well.
7208
7209           The affected file is irssi/src/silc/core/silc-channels.c.
7210
7211         * The router did not save the channel mode the server announced.
7212           Affected file silcd/packet_receive.c.
7213
7214         * Fixed a possible crash in INFO command in server.  If the
7215           server did not provide the server info it crashed.  Affected
7216           file silcd/command.c.
7217
7218 Sun Jun 17 15:26:05 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7219
7220         * Fixed the GETKEY command in the server to check also the
7221           global list.  Otherwise the GETKEY would not work correctly
7222           in normal SILC server.  Affected file silcd/command.c.
7223
7224 Sat Jun 16 18:00:00 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7225
7226         * Fixed GETKEY crash, it crashed if the command did not succseed.
7227
7228 Tue Jun 12 21:36:18 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7229
7230         * Redefined the SILC MP API in lib/silcmath/silcmp.h. The API
7231           is now real and not just an macro interface to GMP.
7232
7233           Removed the entire GMP from the source tree and imported new
7234           NSS MPI library instead.  Reason for removing GMP is that it is
7235           extremely large and compiles extremely slow.  The NSS MPI
7236           is only a few files and compiles in less than 10 seconds.
7237           The speed is also about the same as GMP.  The MPI is imported
7238           to lib/silcmath/mpi.
7239
7240           If the system has GMP installed we will still use the GMP.
7241           If it is not then the NSS MPI will be compiled.
7242
7243 Mon Jun 11 18:07:24 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7244
7245         * Merged a long nickname (127 characters long) crash bugfix from
7246           Irssi CVS tree.  Affected file irssi/src/core/misc.c.
7247
7248         * Merged a freed memory reference bugfix from Irssi CVS tree.
7249           Affected file irssi/src/core/commands.c.
7250
7251 Sun Jun 10 16:08:35 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7252
7253         * Added the server's public key sving and verification to the
7254           server when performing the SKE.  This was missing and the
7255           remote server's (or router's) public key was accepted without
7256           checking whether we have it previously or trust it at all.
7257           Affected file silcd/protocol.c.
7258
7259 Sat Jun  9 20:17:30 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7260
7261         * Check in the silc_server_timeout_remote if protocol is active
7262           and make sure that the protocol's final callback is called so
7263           that all memory if freed.  Affected file silcd/server.c.
7264
7265 Sat Jun  9 12:51:27 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7266
7267         * silc_server_whois_send_reply crashed the server if the nickname
7268           was 127 characters long.  Affected file silcd/command.c.
7269
7270 Thu Jun  7 16:29:56 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7271
7272         * Added sanity check to the silc_server_new_client. If the hostname
7273           is provided inside username then check that the provided hostname
7274           really is the same as the resolved one.  If the hostname was not
7275           resolved then check it from the public key.  Affected file is
7276           silcd/packet_receive.c.
7277
7278         * Fixed a fatal bug in Irssi SILC client. Do not send QUIT command
7279           if the server disconnected us and the connection is not valid
7280           anymore.  Affected file irssi/src/silc/core/silc-channels.c.
7281
7282         * Moved the silc_client_[chmode|chumode|chumode_char] away from
7283           the library to the lib/silcutil/silcutil.[ch].
7284
7285 Thu Jun  7 08:57:16 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7286
7287         * Close log file after open.  Affected file
7288           lib/silcutil/silclog.c.
7289
7290         * Check whether sock == NULL in silc_client_send_packet and return
7291           if it is.  Affected file lib/silcclient/silcclient.c.
7292
7293         * Check rec->entry == NULL in the Irssi SILC Client before
7294           sending the channel message.  Affecte file is
7295           irssi/src/silc/core/silc-servers.c.
7296
7297 Tue Jun  5 08:08:21 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7298
7299         * Merged a splitted window bugfix from Irssi CVS tree.  The
7300           affected file is irssi/src/fe-text/textbuffer-view.c.
7301
7302         * Fixed the ME, ACTION and NOTICE printing in Irssi Client.
7303           It did not print nickname.
7304
7305         * Improved the distributions system a bit.
7306
7307 Mon Jun  4 17:57:16 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7308
7309         * Merged /WINDOW bugfix from irssi CVS tree. Affected file is
7310           irssi/src/fe-text/gui-window.c.
7311
7312         * Fixed a fatal bug in Irssi SILC client. Crashed if sent message
7313           to in-active server.  The affected file is
7314           irssi/src/silc/core/client_ops.c.
7315
7316         * Resolve the client in USERS command reply if the entry does
7317           not have username resolved.  The affected file is
7318           lib/silcclient/command_reply.c.  Also, changed the IDENTIFY
7319           command to WHOIS command to really resolve stuff.  The USERS
7320           is not used any more in any critical section so WHOIS can
7321           be used even though it might be slower than IDENTIFY.
7322
7323         * Changed the lib/silcutil/silchashtable.h header to ROBODoc
7324           format.
7325
7326 Sun Jun  3 14:21:32 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7327
7328         * Changed the protocol API a bit more consistent in the
7329           lib/silccore/silcprotocol.[ch].
7330
7331         * Changed the following headers to ROBODoc format:
7332
7333                 lib/silccore/silcpayload.h
7334                 lib/silccore/silcprotocol.h
7335                 lib/silccore/silcsockconn.h
7336
7337           All core library headers are now formatted.
7338
7339 Sat Jun  2 10:45:09 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7340
7341         * Fixed a bug in Irssi SILC client; do not show that you are
7342           server/router operator if you really are not.  Affected file is
7343           irssi/src/silc/core/client_ops.c.
7344
7345         * Renamed silc_command_free_payload to silc_command_payload_free.
7346           Affected file lib/silccore/silccommand.h
7347
7348         * Added silcmath.h to include the prototoypes of various routines
7349           in the lib/silcmath.  Removed the old modinv.h, mpbin.h and
7350           silcprimegen.h.
7351
7352         * Changed the following headers to ROBODoc format:
7353
7354                 lib/silccore/silcchannel.h
7355                 lib/silccore/silccommand.h
7356                 lib/silccore/silcid.h
7357                 lib/silccore/silcidcache.h
7358                 lib/silccore/silcmode.h
7359                 lib/silccore/silcnotify.h
7360                 lib/silccore/silcpacket.h
7361                 lib/silcmath/silcmath.h
7362
7363 Fri Jun  1 22:19:37 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7364
7365         * Added checking to the server code not to start the server if
7366           ciphers and stuff are not configured properly.  Affected files
7367           silcd/serverconfig.[h] and silcd/server.c.
7368
7369         * Changed the layout of the header files of the public interfaces
7370           in the SILC libraries.  The new layout supports ROBODoc
7371           documentation tool (and some others) so that it is easy to create
7372           a library reference manual.  All the other headers and source
7373           code must still follow the CodingStyle document.  Also source
7374           code must not include these ROBODoc stuffs, only the headers.
7375           Furthermore, all public interface headers must now be named
7376           by using `silc' prefix, example: silcapi.h, silccipher.h.
7377           Some files were renamed due to this.  All the other headers
7378           must not be used as public interfaces.  I will update the
7379           CodingStyle document later.  Changed following headers, so far:
7380
7381                 lib/silcclient/silcapi.h
7382                 lib/silccore/silcauth.h
7383                 lib/silccore/silcprivate.h
7384                 lib/silccrypt/silcdh.h
7385
7386 Fri Jun  1 10:28:09 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7387
7388         * Updated TODO.
7389
7390         * Removed silc_client_packet_send_flush from the client library
7391           as it is not needed.  Affected file lib/silcclient/client.[ch].
7392
7393         * Added printing of message of unresolved authentication method
7394           to the Irssi SILC client.  Added it to the module formats.
7395           Removed the same message from the client library.
7396
7397 Thu May 31 13:57:33 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7398
7399         * Added new distribution feature, DISTLABEL.  Every distribution
7400           can define own preprocessor label that can be used in the
7401           source code.  For example: #ifdef SILC_DIST_CLIENT.  Affected
7402           file distributions, acconfig.h.pre and prepare.
7403
7404 Tue May 29 22:16:40 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7405
7406         * Added Makefile.defines_int to include the actual definitions
7407           for Makefile.defines.in.  Tested the new distribution system,
7408           created distributions and tested installation.
7409
7410         * Added AWAY message printing to the Irssi SILC client.  Added
7411           the messages to the irssi/src/fe-common/silc/module-formats.[ch].
7412
7413         * Added SCONNECT command to call the SILC's CONNECT command.
7414           Cannot use CONNECT directly since Irssi uses that internally.
7415           Affected file irssi/src/silc/core/silc-servers.c.
7416
7417           Added ACTION local command.  It is same as ME command but takes
7418           the channel as mandatory argument.
7419
7420           Rewrote some of the Irssi's help files to suite for SILC
7421           protocol.
7422
7423 Mon May 28 19:05:22 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7424
7425         * Added Makefile.defines[.in] that should for now on be included
7426           in all Makefile.am file in the source tree.  That file includes
7427           all common compilation definitions for SILC source tree.
7428
7429 Mon May 28 10:30:51 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7430
7431         * Minor changes to the ./prepare script to change the package
7432           name according the distribution name to the configure.in.
7433
7434 Sun May 27 22:24:57 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7435
7436         * Created new distribution system.  Added file `distributions'
7437           that defines all the distributions that can be created out of
7438           the SILC source tree.  The ./prepare script now reads that
7439           file to determine how to prepare the distributions.  The
7440           first argument to the ./prepare is the name of the distribution
7441           and second is the version of the distribution.  If given
7442           without arguments it creates the default (toolkit) distribution
7443           with the default version (defined in ./prepare).
7444
7445           All Makefile.am files that are subject to the distributions
7446           are now named as Makefile.am.pre.  These are ./Makefile.am
7447           and lib/Makefile.am.  Others may be changed later.
7448
7449 Sun May 27 15:57:17 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7450
7451         * Added invite list, ban list, some key management and connection
7452           error message printing to module formats in the Irssi SILC client.
7453
7454         * Added new silc_client_set_away_message to set the away message
7455           that is back to the person who sent private message.  The
7456           affected file lib/silcclient/silcapi.h and the
7457           lib/silcclient/client_prvmsg.c.
7458
7459 Sun May 27 12:39:48 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7460
7461         * Fixed the private message sending in the Irssi SILC client,
7462           added local command KEY to the Irssi SILC client.
7463
7464           Added key management and key agreement message formats to the
7465           irssi/src/fe-common/silc/module-formats.[ch].
7466
7467           Added USERS (alias WHO) printing, server/router operator
7468           indication and LIST command printing to the module formats.
7469
7470 Sat May 26 17:43:42 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7471
7472         * Fixed channel joining notify handling, cumode notify handling
7473           from Irssi SILC client.
7474
7475         * Added SILC specific module-formats to the Irssi SILC client so
7476           that SILC specific message hilighting, colors etc is possible.
7477           Affected file irssi/src/fe-common/silc/module-formats.[ch].
7478
7479           Added channel mode, channel user mode, actions, notices,
7480           whois and whowas printing to the the module-formats.c.
7481
7482         * Fixed a bug in channel deletion in the server.  The channel
7483           is not left to the cache even if the channel founder auth mode
7484           is set when there are no users anymore on the channel.  Affected
7485           file silcd/server.c.
7486
7487         * The silc_net_localhost now resolves the entire hostname including
7488           the domain name.  Affected file lib/silcutil/silcnet.c.
7489
7490 Sat May 26 12:13:37 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7491
7492         * Changed the ask_passphrase client operation to be ascynchronous.
7493           It has now a completion callback and a context that the
7494           application must call after it has got the passphrase from
7495           the user.  Affected files lib/silcclient/silcapi.h,
7496           lib/silcclient/protocol.c, lib/silcclient/command.c and
7497           silc/client_ops.c.
7498
7499           Added SilcAskPassphrase callback that the application calls
7500           to deliver the passphrase to the library.
7501
7502         * Changed the SKE protocol's SilcSKEVerifyCb to be asynchronous.
7503           The public key verification and especially a certificate
7504           verification is asynchronous procedure.
7505
7506           Added new SILC_SKE_STATUS_PENDING status to indicate the
7507           request is pending and a callback will be called to finalize
7508           the request.
7509
7510           Added also SILC_SKE_STATUS_PUBLIC_KEY_NOT_PROVIDED status to
7511           indicate that remote end did not send its public key (or
7512           certificate), even though we require it.  Added check for this
7513           condition in the SKE.  This was a security bug, now fixed.
7514
7515           Defined new SilcSKEVerifyCbCompletion callback that is called
7516           when the verification process is completed.
7517
7518           The affected files lib/silcske/silcske_status.h and
7519           lib/silcske/silcske.[ch].
7520
7521         * Changed the verify_public_key client operation to be async
7522           as well.  Defined SilcVerifyPublicKey callback that is used to
7523           indicate the success of the public key verification process.
7524
7525           Changed the server and client to use the new async client
7526           operations.
7527
7528         * Changed the Irssi SILC client's internal scheduler to be called
7529           twice as many times as it used to be.  As a result the client
7530           should be a bit faster now.  Affected file is
7531           irssi/src/silc/core/silc-core.c.
7532
7533         * Added support to Irssi SILC client of asynchronous public key
7534           verification and passphrase inquiry.  Affected file is
7535           irssi/src/silc/core/silc-core.c.
7536
7537 Fri May 25 14:38:38 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7538
7539         * Do not say "You have left channel %s" in client library.
7540           Moved it to the application.  Affected files are
7541           lib/silcclient/command.c and silc/client_ops.c.
7542
7543         * Fixed silc_client_get_clients.  Command context was not
7544           duplicated and was freed memory in the callback.  Affected
7545           file lib/silcclient/idlist.c.
7546
7547         * Do not say "you are now talking..." on JOIN command in the
7548           client library.  The appliation must handle it.
7549
7550         * Do not say ".. changed topic to" in command reply in the
7551           client libary.  The application must handle it.
7552
7553         * Fixed TOPIC command sending in the client library.
7554
7555         * Fixed a memory leak in silc_client_command_free in the file
7556           lib/silcclient/command.c.
7557
7558 Thu May 24 19:08:55 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7559
7560         * Imported a modified version of Irssi client to the source tree.
7561           The Irssi will be used to create a new client called
7562           Irssi SILC.  Imported to irssi/.
7563
7564           Added silc_core_init_finish function to the Irssi.  Affected
7565           file irssi/configure.in.
7566
7567           A lot changes in the Makefile.ams around the irssi tree.
7568
7569 Tue May 22 22:23:49 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7570
7571         * Do not rehash if the new size is same as the old size of the
7572           hash table, in the silc_hash_table_rehash*.  The affected file
7573           lib/silcutil/silchashtable.c.
7574
7575         * Replaced hash_table_del_by_context calls from the server
7576           (when channel->user_list and client->channels) to the
7577           hash_table_del as it is sufficient and faster.
7578
7579 Tue May 22 17:27:16 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7580
7581         * Added silc_hash_table_list, silc_hash_table_get and the
7582           SilcHashTableList structure to provide an alternative way to
7583           traverse the hash table.  The affected files are
7584           lib/silcutil/silchashtable.[ch].
7585
7586         * Changed the server's idlist routines to use the hash table
7587           routines to optimize the code.
7588
7589 Mon May 21 21:46:20 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7590
7591         * Replaced the client entry's `channel' list and channel entry's
7592           `user_list' list to hash tables for optimized lookup.  Changed
7593           the code to use the hash table interface around the code.
7594           Affected file lib/silcd/idlist.[ch].
7595
7596         * Added `auto_rehash' boolean argument to the function
7597           silc_hash_table_alloc to indicate whether the hash table should
7598           auto-rehash when it thinks is appropriate time.  It will
7599           increase the hash table size if the there is twice as much
7600           entries in the table than the size of the table, and will
7601           decrease the size if there are twice as less entries than
7602           the size of the table.
7603
7604 Mon May 21 09:51:11 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7605
7606         * Fixed silc_xxx_get_supported to not crash at some circumstances.
7607
7608 Sun May 20 13:45:58 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7609
7610         * silc_idcache_purge_by_context deletes the entry now by context
7611           as it is supposed to do.  Affected file lib/silccore/idcache.c.
7612
7613         * Send the ERR_NO_SUCH_NICK in the WHOIS command reply if the
7614           client is not anymore valid (WHOWAS givens the info) and not
7615           the ERR_NO_SUCH_CLIENT_ID if the nickname still exists.
7616
7617 Sat May 19 16:30:03 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7618
7619         * Removed the `data' and `data_len' arguments from the ID Cache
7620           interfaces and added `name' argument.  ID Cache does not handle
7621           anymore the binary data only a names associated with given ID.
7622
7623         * When hashing a Client ID with silc_hash_id the entire ID is
7624           not hashed anymore, instead only the hash of the Client ID is
7625           hashed.  This way we can access the Client ID from the cache
7626           with Client ID but with the hash of the ID (which is a hash of
7627           the nickname) as well without any difference in performance.
7628
7629           Added also silc_idcache_find_by_id_one_ext to do one on one
7630           searching when we have the actual ID.  Added also function
7631           silc_hash_client_id_compare.  The affected files are
7632           lib/silccore/idcache.[ch] and lib/silcutil/silcutil.[ch].
7633
7634         * When hashing the name associated with a ID it is always done
7635           in lowercase.  This way we can access the cache without worrying
7636           about case-sensitivity, even though, for example nicknames are
7637           case sensitive.
7638
7639         * Fixed a bug in server with channel message sending.  It put
7640           wrong ID type as destination ID.  The affected file
7641           silcd/packet_send.c.
7642
7643         * silc_idcache_del_by_context now deletes from all hash tables
7644           by context.  Affected file lib/silccore/idcache.c.
7645
7646 Fri May 18 17:42:00 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7647
7648         * Changed the client library to use the new ID Cache interface.
7649           Changes around the source tree.
7650
7651         * Added silc_hash_table_rehash_ext to rehash with specific
7652           hash function.  Affected file lib/silcutil/silchashtable.[ch].
7653
7654         * Added silc_hash_string_compare to compare two strings in the
7655           hash table.  Affected file lib/silcutil/silcutil.[ch].
7656
7657 Fri May 18 11:18:45 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7658
7659         * Added new function silc_idcache_del_by_context into the
7660           lib/silccore/idcache.[ch].
7661
7662         * Changed the server's ID list routines to use the new ID Cache
7663           interface.  Changes around the source tree.
7664
7665 Fri May 18 08:35:31 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7666
7667         * Added silc_hash_table_del[_by_context]_ext functions in to the
7668           lib/silcutil/silchashtable.[ch].
7669
7670           Removed silc_hash_table_find_all* routines and added new
7671           silc_hash_table_find_foreach to replace them.
7672
7673           Added silc_hash_table_replace_ext function as extended
7674           replacing function.  Separated the simple hash table interface
7675           from the extended hash table interface in the file
7676           lib/silcutil/silchashtable.h.
7677
7678         * Fixed minor bugs and changed it to use some of the new
7679           hash table functions in lib/silccore/idcache.c
7680
7681 Thu May 17 18:15:12 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7682
7683         * Added new function silc_hash_table_find_all to return all keys
7684           in the hash table by the specified key.  As the hash table is
7685           collision resistant it also makes it possible to have several
7686           duplicate keys in the hash table.  This function may be used to
7687           find all of the keys from the hash.
7688
7689           Added user_context arguments to the SilcHashFunction,
7690           SilcHashCompare and SilcHashDestructor to deliver user specified
7691           context.
7692
7693           Added new fuctions silc_hash_table_find[_all]_ext to do
7694           extended lookup with specified hash and compare functions and
7695           specified user contexts.
7696
7697           Added new function silc_hash_table_add_ext to add the key
7698           with specified hash function and user context.
7699
7700           Added new function silc_hash_table_foreach to traverse all
7701           entrys in the hash table.  Added SilcHashForeach callback
7702           function.
7703
7704           Added new function silc_hash_table_del_by_context to delete
7705           the entry only if the context associated with the key matches.
7706
7707           Affected files are lib/silcutil/silchashtable.[ch].
7708
7709         * Removed silc_hash_[server/client/channel]_id and added just
7710           silc_hash_id to the lib/silcutil/silcutil.[ch].  Added also
7711           silc_hash_id_compare to compare two ID's using as the hash table
7712           comparison function.  Added also silc_hash_data to hash
7713           binary data and silc_hash_data_compare to compare it.
7714
7715         * Removed silc_idlist_find_client_by_hash as it is not needed
7716           anymore.  Affected file silcd/idlist.[ch].
7717
7718         * Rewrote the entire ID Cache system (in lib/silccore/idcache.[ch])
7719           to use internally the SilcHashTable.  The new ID Cache is a lot
7720           faster than the old one.  Some of the ID Cache interface was also
7721           rewritten and obsolete and stupid functions were removed.
7722
7723 Wed May 16 23:03:30 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7724
7725         * Added entry_count field to the SilcHashTable to keep the number
7726           of the entries in the table.  Implemented the function
7727           silc_hash_table_rehash.  Added new function
7728           silc_hash_table_count.  Affected file lib/silcutil/silchashtable.c.
7729
7730           Fixed a minor bug in silc_hash_table_free.
7731
7732         * Added silc_hash_string, silc_hash_uint, silc_hash_ptr,
7733           silc_hash_client_id, silc_hash_server_id and silc_hash_channel_id
7734           into the lib/silcutil/silcutil.[ch].
7735
7736 Wed May 16 20:02:47 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7737
7738         * Implemented a collision resistant hash table into the
7739           lib/silcutil/silchashtable[ch].  See the header and the source
7740           for the SilcHashTable API.
7741
7742 Tue May 15 22:05:46 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7743
7744         * Merged dotconf version 1.0.2 into lib/dotconf.
7745
7746 Sun May 13 19:32:09 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7747
7748         * Do not compile anything in lib/silcsim/* if the SIM support
7749           is not enabled.  The tree should now compile without problems
7750           under cygwin.
7751
7752 Thu May 10 22:49:51 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7753
7754         * Compiled the SILC under cygwin.  Compiled and tested briefly
7755           without problems.  More tests needed.  The SIMs didn't compile
7756           though.
7757
7758         * Added various #ifdef HAVE_* stuff to lib/silccrypt/silrng.c.
7759
7760         * Fixed possible crash in silc_get_username in the
7761           lib/silcutil/silcutil.c.
7762
7763 Tue May  8 09:04:03 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7764
7765         * Fixed a va_arg in silc/client_ops.c.
7766
7767         * Oops, RC5 routines were named AES and caused some problems
7768           when not using SIM's.  Affected file lib/silccrypt/rc5.c.
7769
7770 Sun May  6 13:59:48 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7771
7772         * Added new SilcIDIP structure into the lib/silccore/id.h and
7773           replaced the old `ip' fields from all SILC ID's to that type.
7774           This is a step towards IPv6 support.
7775
7776           The silc_id_get_len takes now the ID as an extra argument.
7777           The silc_id_id2str, silc_id_str2id and silc_id_dup now supports
7778           both IPv4 and IPv6 based ID's.
7779
7780           The affected files are lib/silccore/id.[ch] and other files
7781           around the tree using these routines.
7782
7783         * Removed the ID length arguments in server from various
7784           silc_server_send_notify_* routines -> they are not needed
7785           anymore.
7786
7787 Sat May  5 13:56:33 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7788
7789         * Fixed memory leak in silc_encode_pem_file in the file
7790           lib/silcutil/silcutil.c.
7791
7792 Thu May  3 21:23:50 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7793
7794         * Check minor version as well in the SKE.  Affected files are
7795           silcd/protocol.c and lib/silcclient/protocol.c.
7796
7797         * Added --identifier option to the server so that an identifier
7798           can be when creating the public key for the server.  Affected
7799           file is silcd/silcd.c.
7800
7801         * Fixed minor decoding bug in silc_pkcs_decode_identifier in
7802           lib/silccrypt/silcpkcs.c.
7803
7804 Wed May  2 20:50:49 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7805
7806         * Register default ciphers and stuff when using -C option with
7807           the server.  Affected file sildc/silcd.c.
7808
7809         * Put back the servers public key filename format, it is better
7810           than the new one.  For now, the client keys are saved with the
7811           new filename format.  The affected file silc/client_ops.c.
7812
7813         * Implemented the Cipher API for the rest of the ciphers that
7814           did not implement it or implemented it the wrong way.
7815
7816 Wed May  2 13:31:26 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7817
7818         * Register default ciphers and stuff when using the -S option
7819           in the client.  Affected file silc/silc.c.  Same also when
7820           creating new key pair with -C option.
7821
7822 Tue May  1 14:18:13 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7823
7824         * Fixed the silc_verify_public_key client operation function to
7825           save the public keys differently.  The fingerprint is now
7826           used as filename and not the hostname.  This way also the
7827           client keys are saved uniquely and not with hostnames.  The
7828           affected file is silc/client_ops.c.
7829
7830         * Trimmed the silc_hash_fingerprint function to remove extra
7831           whitespaces from the end of the fingerprint.  The affected
7832           file is lib/silccrypt/silchash.c.
7833
7834         * Updated TODO.
7835
7836         * Added silc_cipher_register_default function to register all
7837           default ciphers.  It can be used when configuration files
7838           does not exist and the application does not want any specific
7839           ciphers in any specific order.
7840
7841           The SilcDList is now used as silc_cipher_list dynamically
7842           allocated cipher list.  Removed the static list all together
7843           and now all ciphers must be allocated to the dynamic list.
7844           The silc_cipher_alloc routine was changed to check only the
7845           dynamic list.
7846
7847           All silc_cipher_* routines that used to return int returns
7848           now bool.
7849
7850           The affected files lib/silccrypt/silccrypt.[ch].
7851
7852         * The same thing was done to silc_hash_* as for silc_cipher_*
7853           routines.  Affected files lib/silccrypt/silchash.[ch].
7854
7855         * The same thing was done to silc_pkcs_* as for silc_cipher_*
7856           routines.  Affected files lib/silccrypt/silcpkcs.[ch].
7857           Added also silc_pkcs_[un]register[_default] functions.
7858           Removed the data_context from the PKCS API.
7859
7860         * Added silc_hmac_register_default function to register default
7861           hmacs.  Affected files lib/silccrypt/silchmac.[ch].  Added also
7862           SILC_ALL_HMACS macro that can be used with silc_hmac_unregister
7863           to unregister all hmacs at once.
7864
7865         * Register the default ciphers, hash functions, PKCSs and HMACs
7866           if client's configuration file does not exist.  The affected
7867           file silc/silc.c.
7868
7869         * The client did not load the hash functions from the SIM
7870           modules at all.  Added support for this.  Affected file is
7871           silc/clientconfig.c.
7872
7873         * When decoding public key with silc_pkcs_public_key_decode, check
7874           the supported algorithm only if PKCS are registered.  Affected
7875           file lib/silccrypt/silcpkcs.c.  The same was done with the
7876           silc_pkcs_private_key_decode.
7877
7878         * Fixed the SILC List routines to keep the list always in order.
7879           It used to change the list's order when traversing the list but
7880           not it preserves the order.  Affected file lib/trq/silclist.h.
7881
7882 Mon Apr 30 17:29:03 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7883
7884         * Added the client library to use the SilcSocketConnection's
7885           reference counter (by silc_socket_dup) to prevent the bug that
7886           the socket object may be freed underneath async operation.
7887
7888         * The name resolv library checking fixes in the configure.in.pre.
7889           The patch by salo.
7890
7891         * Created new version of the protocol drafts for future
7892           development. The -03 drafts are the ones that will be changed
7893           in the trunk now and the -02 will remain as they are.
7894
7895         * Send list of CUMODE notifys to the router when announcing
7896           the channel users to the router.  Affected file silcd/server.c.
7897           If the router receiving channel founder CUMODE for a channel
7898           that already has channel founder it will send CUMODE notify
7899           to the sender to remove the channel founder rights from the
7900           announced client.  Affected file silcd/packet_receive.c.
7901
7902         * The CUMODE notify may now use Server ID as well as the entity
7903           who changes the mode.  Updated protocool specs.
7904
7905         * Updated INSTALL and README files.
7906
7907 Sun Apr 29 23:17:50 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7908
7909         * New web pages in the http://silc.pspt.fi.  The pages was
7910           designed by salo.
7911
7912         * Updated CREDITS.
7913
7914 Sun Apr 29 13:33:41 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7915
7916         * Implemented the [DenyConnectin] config section in the server.
7917           Added silc_server_config_denied_conn to check whether incoming
7918           connection is denied.  Affected file silcd/serverconfig.[ch].
7919
7920         * Do not check the ports when checking the incoming configuration
7921           data if the port is 0, meaning any.  Affected file is
7922           silcd/serverconfig.c.
7923
7924 Fri Apr 20 18:58:43 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7925
7926         * Fixed buffer overflow in silc_string_compare in the file
7927           lib/silcutil/silcutil.c.
7928
7929         * Fixed double free in silc_server_command_leave in the file
7930           silcd/command.c.
7931
7932 Fri Apr 20 14:00:11 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7933
7934         * Fixed the version checking in the server.  Affected file is
7935           silcd/protocol.c.
7936
7937 Thu Apr 19 19:52:46 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7938
7939         * Fixed the configuration data fetching when accepting new
7940           connections in the server.  Affected file silcd/server.c.
7941
7942 Thu Apr 19 11:40:20 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7943
7944         * Added `sender_entry' argument to the function
7945           silc_server_packet_relay_to_channel so that we can check
7946           whether some destination actually belongs to the same route
7947           the sender belongs (ie, we must not resend the packet to the
7948           sender).  Affected file silcd/packet_send.[ch].
7949
7950         * Added `servername' field to the SilcClientEntry in the server
7951           to hold the name of the server where client is from.  Affected
7952           file is silcd/idlist.h.
7953
7954 Wed Apr 18 22:19:03 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7955
7956         * Moved the channel message encrypting in the router betwen
7957           router connections from silc_server_channel_message to the
7958           silc_server_packet_relay_to_channel since we want to check
7959           whether we have anybody channel before encrypting anything.
7960           Affected files silcd/packet_[receive/send].c.
7961
7962 Tue Apr 17 21:18:19 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7963
7964         * Fixed the [AdminConnection] server config section to support
7965           multiple entries.  Affected file silcd/serverconfig.c.
7966
7967         * Added support into the server to check the validity of the
7968           incoming connection before executing any KE or authentication
7969           protocols.
7970
7971         * The connection configuration is now saved to the KE and
7972           connection auth protocol contexts and not fetched anymore in
7973           the protocol.  Affected files silcd/server.c, silcd/protocol.[ch].
7974
7975         * The local hosts listenning address and port is also resolved
7976           now when starting the server.  We want to have the socket object
7977           to include the real address and port for the listener.  Added
7978           new function silc_net_check_local_by_sock into the files
7979           lib/silcutil/silcnet.[ch].
7980
7981         * Fixed a broadcast bug in server -> do not broadcast if we
7982           are standalone.
7983
7984         * Fixed a routing bug.  Do not route broadcast packets ever.
7985           Broadcast packets must be processed always and not routed since
7986           they may be destined to some other host than yourself and thus
7987           would get routed without no good reason.  Affected file is
7988           silcd/server.c.
7989
7990         * Added function silc_server_config_is_primary_route to check
7991           whether primary router connection has been configured (a router
7992           configuration that we are initiating).  If there is not, we
7993           will assume that there is only two routers in the SILC network
7994           and we will use the incoming router connection as our primary
7995           route.  Affected files silcd/serverconfig.[ch], silcd/server.c.
7996
7997         * Changed the order of the broadcasting.  Broadcast _after_ the
7998           packet has been processed not before.  Affected file is
7999           silcd/server.c.
8000
8001         * Fixed a [ClientConnection] parsing bug.  The port was never
8002           parsed correctly thus resulting to port 0.  Affected file
8003           silcd/serverconfig.c.
8004
8005         * Fixed silc_server_send_notify_args -> it ignored the `broadcast'
8006           argument and did not set the broadcast packet flag.  Affected
8007           file silcd/packet_send.c.  Fixed same bug in the function
8008           silc_server_send_notify as well.
8009
8010         * If we receive NEW_ID packet for our own ID in the server, ignore
8011           the packet.
8012
8013 Mon Apr 16 12:10:33 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8014
8015         * Updated TODO.
8016
8017         * Removed the nickname from the Private Message Payload.
8018           Updated the code and the protocol specs.
8019
8020         * Updated protocol specs for submitting to the IETF.
8021
8022         * Tweaked the Random Number Generator a bit.  Affected file
8023           lib/silccrypt/silcrng.c.  Exported a new function
8024           silc_rng_[global]_add_noise which can be used to add more
8025           noise to the RNG.
8026
8027 Sat Apr 14 16:21:32 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8028
8029         * Do not parse packets with different timeout when protocol
8030           is active -> may cause problem with rekey.  Affected file
8031           silcd/server.c.
8032
8033         * When server receives signoff notify it must not create
8034           new channel key if the client is on any channels since the
8035           sender of the signoff notify will create it.
8036
8037 Fri Apr 13 17:12:46 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8038
8039         * Added printing of error messages during SKE protocol from the
8040           failure packet sent by server during SKE.  Affected file
8041           silc/client_ops.c.
8042
8043         * Removed the client's failure_callback handling with timeout
8044           and handle it immediately when received.
8045
8046         * The SKE library returned wrong type in SUCCESS and FAILURE
8047           packets.  They must be 32 bit MSB not 16 bit MSB.
8048
8049 Fri Apr 13 00:09:08 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8050
8051         * Ok, rewrote the logic of the re-key and now it seems to work.
8052           I tested it on high traffic with frequent re-keys without
8053           problems.  Added hmac_receive (and renamed hmac to hmac_send)
8054           in SilcClientConnection in lib/silcclient/client.h and
8055           in SilcIDListData in silcd/idlist.h.  Also, removed the
8056           SilcPacketParserContext's cipher and hmac fields as they are
8057           not needed anymore and actually caused some problems when
8058           the ciphers and hmac's changed underneath the packet parser.
8059
8060 Thu Apr 12 14:42:51 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8061
8062         * If re-key protocol is active then process the incoming packets
8063           synchronously since we must assure that icoming packets encrypted
8064           with the old key is processed before the new keys is set to
8065           use.  This is true other packets than for REKEY packets.
8066           Affected file silcd/server.c.  The same was done to client library
8067           as well, affected file lib/silcclient/client.c.
8068
8069 Thu Apr 12 12:01:52 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8070
8071         * Fixed bug in client and server to accept the force send if
8072           the packet is send from silc_[server/client]_packet_process
8073           function.  Otherwise the packets are never delivered, oops.
8074
8075 Wed Apr 11 22:10:15 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8076
8077         * Disable force sending of packets when REKEY protocol is active.
8078           We must assure that no packet is sent directly when rekey is
8079           performed.  All packets must be sent through packet queue.
8080           Added macro SILC_SERVER_IS_REKEY to silcd/server.h and
8081           SILC_CLIENT_IS_REKEY to lib/silcclient/client.h.  Affected
8082           function is silc_[server/client]_packet_send_real to check
8083           the situation.
8084
8085         * Replaced the SIM paths from example config files to
8086           /usr/local/modules.  Also, make install creates now
8087           /usr/local/silc/logs directory to hold all the SILC server
8088           logs.
8089
8090 Wed Apr 11 16:59:59 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8091
8092         * Made the configure.in.pre work on Solaris.  Patch by salo.
8093
8094         * Made all ciphers compatible with non-x86 machines.  Defined
8095           CBC mode macros into lib/silccrypt/ciphers_def.h.
8096
8097 Tue Apr 10 20:32:44 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8098
8099         * Fixed the make install.
8100
8101 Tue Apr 10 16:20:34 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8102
8103         * When MAC computation fails the silc_packet_decrypt returned 0
8104           even though it was supposed to return -1.  Fixed this.  The
8105           affected file is lib/silccore/silcpacket.c.
8106
8107         * Do not replace the config files in /etc/silc (in make install)
8108           if they already exist.  Affected file ./Makefile.am.
8109
8110         * Do not send re-key packets immediately but through packet queue.
8111           Affected file silcd/protocol.c and lib/silcclient/protocol.c.
8112
8113         * Changed silc_net_check_host_by_sock to return FALSE if the
8114           IP/DNS could not be resolved.  Though, it returns the IP address
8115           now even if it could not resolve it (but returns also FALSE).
8116           Affected file lib/silcutil/silcnet.[ch].
8117
8118 Mon Apr  9 21:54:44 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8119
8120         * Added silc_pkcs_decode_identifier to decode the public key's
8121           identifier.  Affected file lib/silccrypt/silpkcs.[ch].
8122           Added also silc_pkcs_free_identifier.  Added also new context
8123           SilcPublicKeyIdentifier.
8124
8125         * Added -S option to the silc client.  It is used to dump the
8126           contents of the specified public key file.
8127
8128         * Changed the PKCS api to return the public key length when
8129           setting the public key.
8130
8131         * Fixed a fatal bug in the public and private key file loading.
8132           Affected file lib/silccrypt/silcpkcs.c.
8133
8134         * Execute the packet parsing for client with zero (0) timeout
8135           if the protocol is active.  Affected file silcd/server.c.
8136
8137 Sun Apr  8 19:30:56 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8138
8139         * Made the key generation options to the silcd program.  Added
8140           -C option, equivalent to client's option.
8141
8142         * Added new [ServerKeys] config section to the server.  It
8143           configures the server's public and private key.
8144
8145         * Defined generic Public Key Payload into the protocol
8146           specification to send specific type of public keys and
8147           certificates.
8148
8149         * Defined new command SILC_COMMAND_GETKEY to fetch a client's
8150           public key or certificate.
8151
8152         * Implemented the GETKEY command to the server and to the
8153           client library and on user interface.
8154
8155 Sun Apr  8 01:37:21 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8156
8157         * Made preliminary `make install' work.
8158
8159 Thu Apr  5 17:42:30 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8160
8161         * Added SilcServerRekey context into silcd/idlist.h.
8162
8163         * Added the PFS support as defined in the specification to the
8164           SKE protocol.  Affected files lib/silcske/*.c.
8165
8166         * Added `ske_group' field to the SilcServerRekey context to hold
8167           the number of the SKE group that is used with PFS in re-key.
8168           Affected file silcd/idlist.h.
8169
8170         * Added PFS re-key support to the server.  Affected file is
8171           silcd/protocol.c.
8172
8173         * Added silc_protocol_cancel to cancel execution of the next
8174           state of the protocol.  Affected file is
8175           lib/silccore/silcprotocol.[ch].
8176
8177         * Added the re-key support with and without PFS to the client
8178           library.  Re-key is performed once in an hour, by default.
8179
8180           Added new protocol type SILC_PROTOCOL_CLIENT_REKEY.
8181           Added silc_client_rekey_callback and silc_client_rekey_final.
8182           Affected files are lib/silcclient/protocol.[ch] and
8183           lib/silcclient/client.[ch].
8184
8185         * Removed the `hmac_key' and `hmac_key_len' fields from the
8186           SilcClientConnection structure; not needed.  Affected file is
8187           lib/silcclient/client.h.
8188
8189         * Updated TODO.
8190
8191 Wed Apr  4 16:32:31 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8192
8193         * Do not ask whether user wants to use the negotiated private key
8194           for private messages, just use it.  Affected file is
8195           silc/local_command.c.
8196
8197         * Added `send_enc_key' and `enc_key_len' fields to the
8198           SilcIDListData structure since they are needed in the re-key
8199           phase.  Affected file is silcd/idlist.[ch].
8200
8201         * Implemented the simple re-key protocol into the server.
8202           Affected files silcd/server.c and silcd/protocol.[ch].  The
8203           re-key will be performed once in an hour, by default.
8204
8205           Added new protocol type SILC_PROTOCOL_SERVER_REKEY.
8206           Added silc_server_rekey, silc_server_rekey_callback and
8207           silc_server_rekey_final.
8208
8209         * Removed Tunneled flag from the protocol.  Updated the code
8210           and the specifications.
8211
8212         * Adde `pfs' field to the SilcIDListData to indicate whether
8213           the PFS is to be performed in the re-key.  Affected file is
8214           silcd/idlist.h.
8215
8216 Tue Apr  3 21:52:42 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8217
8218         * Defined uint8, int8, uint16, int16, uint32, int32, uint64 and
8219           int64 of at least the xintXX size.  If void * is less that 4
8220           bytes uint32 * will be used.  Defined bool as boolean.
8221
8222         * Changed _ALL_ unsigned long and unsigned int to uint32,
8223           unsgined short to uint16 in the source tree.
8224
8225         * Fixed a fatal bug in silc_server_remove_clients_by_server.  Do
8226           not handle clients that has entry->data.registered == FALSE.
8227           They are not in the network anymore.  Affected file is
8228           silcd/server.c.
8229
8230 Tue Apr  3 16:39:19 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8231
8232         * Implemented the sending of the SERVER_SIGNOFF notify in the
8233           server.  Affected file is silcd/server.c.
8234
8235         * Added silc_server_send_notify_args into silcd/packet_send.[ch].
8236           Added also silc_notify_payload_encode_args into the
8237           lib/silccore/silcnotify.[ch].
8238
8239         * Implemented ther SERVER_SIGNOFF notify handling in the server.
8240           Affected file silcd/packet_receive.c.
8241
8242         * Implemented the SERVER_SIGNOFF notify handling in the client
8243           library.  Affected file lib/silcclient/client_notify.c.  Also,
8244           implemnted the printing of the SERVER_SIGNOFF info to the
8245           application.  Affected file silc/client_ops.c.
8246
8247         * The silc_idlist_del_server now returns TRUE or FALSE to indicate
8248           if the deleting was successful.  Affected file silcd/idlist.[ch].
8249
8250         * Added support for public key authentication in the connection
8251           authentication protocol in the client library.  Affected file
8252           lib/silcclient/protocol.c.
8253
8254         * Changed the server's silc_idlist_get_clients_by_* interface
8255           to support already allocated array so that new entries may be
8256           added to pre-allocated array.  Affected file silcd/idlist.[ch].
8257           This fixes some bugs with WHOIS, WHOWAS and IDENTIFY commands
8258           and command replies.
8259
8260         * All command reply functions in the server now calls the
8261           pending command callback even if error occured.  This way the
8262           error will be delivered to the client as well.  Affected files
8263           silcd/command.c and silcd/command_reply.c.
8264
8265         * Fixed INFO command to return local server's info if no server
8266           was provided.  Affected file lib/silcclient/command.c.
8267
8268         * Removed RESTART command for good.  Updated the code and the
8269           protocol specs.
8270
8271         * Rewrote parts of the task system.  It is a bit simpler now.
8272           Removed unsued task priorities. The affected files are
8273           lib/silcutil/silctask.[ch].
8274
8275 Mon Apr  2 20:02:33 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8276
8277         * Moved the USERS printing from the library to the application.
8278           Affected files lib/silcclient/command.c and silc/client_ops.c.
8279
8280 Mon Apr  2 13:13:23 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8281
8282         * Updated TODO.
8283
8284         * Added channel key re-key support.  The re-key is perfomed
8285           only by the router and is done once in an hour.  Added `rekey'
8286           field to the SilcChannelEntry in the server.  Affected files
8287           silcd/server.c and silcd/idlist.h.
8288
8289         * Added silc_task_unregister_by_context into the file
8290           lib/silcutil/silctask.[ch].
8291
8292 Sun Apr  1 19:49:34 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8293
8294         * Added SILC_UMODE_GONE mode to indicate when the client is not
8295           present in the SILC network.  Added also support to the local
8296           command AWAY that will set this mode.  Added support of showing
8297           "xxx is gone" in WHOIS command.  The USERS command shows the
8298           gone status as well.
8299
8300         * Fixed setting server and router operator privileges in the
8301           server's UMODE command.  Affected file silcd/command.c.
8302
8303         * Merged the SKE KE1 and KE2 payloads into one payload.  The
8304           new KE payload is equivalent to the old KE2 payload.
8305
8306           Cleaned up the SKE Start Payload parsing.  It now uses the
8307           simple buffer unformatting to do the parsing.  A lot faster
8308           now.
8309
8310           Added new Mutual Authentication flag (SILC_SKE_SP_FLAG_MUTUAL)
8311           to the SKE that is used to indicate whether both of the SKE
8312           parties should perform authentication.  By default only the
8313           responder performs authentication.  By setting this flag also
8314           the initiator must do authentication.  By default it is unset
8315           since in normal SKE case, client to server connection, only
8316           the responder should do authentication.  When doing SKE between
8317           two clients both should perform authentication.  Updated the
8318           code and the protocol specs.
8319
8320         * A little fix to IDENTIFY command in the server.  Search the
8321           client first by hash not nickname.  Affected file is
8322           silcd/command.c.
8323
8324         * Fixed the silc_client_close_connection to support closing
8325           the client to client connections wihtout deleting too much
8326           data.  Affected file lib/silcclient/client.c.
8327
8328         * Fixed a fatal bug in server and client; if KE1 or KE2 packets
8329           are received if protocol used to be active but is not anymore
8330           the application would crash due to NULL pointer dereference.
8331           Affected files silcd/server.c and lib/silcclient/client.c.
8332
8333         * Added `hash' field to the SilcClientConnection to include
8334           the hash function negotiated in the SKE protocol.
8335
8336         * Added new channel mode SILC_CMODE_FOUNDER_AUTH that is used
8337           to set the channel founder authentication data.  A client can
8338           claim the founder rights later by providing the authentication
8339           data to the CUMODE command using SILC_CUMODE_FOUNDER mode.
8340           This way the channel founder can regain the channel founder
8341           privileges even it is left the channel.  This works only on
8342           local server and the client must be connected to the same
8343           server to be able to regain the founder rights.  Updated the
8344           protocol specs accordingly.
8345
8346           Added support to the CMODE command in the client to set the
8347           founder auth data.  Read the README to see how to set it.
8348
8349           Added support to the CUMODE command to claim the founder
8350           rights.  Read the README to see how to do it.
8351
8352           Added support for the founder authentication to the Channel
8353           Entry in the server.  Affected file silcd/idlist.h.
8354
8355           Added support for the SILC_CMODE_FOUNDER_AUTH mode in the
8356           server's CMODE command.  Affected file silcd/command.c.
8357
8358         * Added the following new functions into lib/silccore/silcauth.[ch]:
8359           silc_auth_get_method and silc_auth_get_data.
8360
8361         * The server now saves the remote hosts public key to the
8362           SilcIDListData pointer.  Affected file silcd/protocol.c.
8363
8364         * The normal server now does not remove the channel entry from
8365           the cache if the founder authentication data is set.  It used
8366           to remove it if the founder was the last one on the channel on
8367           the server and left the channel.  The auth data is saved and
8368           if the channel is re-joined later the old entry is used with
8369           the old auth data.  Affected files silcd/command_reply.c and
8370           silcd/server.c.
8371
8372         * Removed the `pkcs' field from the SilcIDListData structure
8373           in the server; it is not used.  Affected file silcd/idlist.h.
8374
8375 Sat Mar 31 15:38:36 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8376
8377         * Fixed packet processing on slow links.  Partial packets were
8378           never re-processed because the incoming data buffer was cleared
8379           by the application.  Application must not directly clear the
8380           sock->inbuf, the packet processing routines handle it.  Fixed
8381           this in client library and in server.
8382
8383 Fri Mar 30 16:35:27 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8384
8385         * Fixed the WHOIS and IDENTIFY send reply function to really
8386           check whether to send list or just one entry.  Affected file
8387           silcd/command.c.
8388
8389         * Cleaned up the LEAVE command's channel key distribution.  The
8390           affected file silcd/command.c.
8391
8392         * Changed CMODE_CHANGE's <Client ID> to <ID Payload> as server
8393           can enforce the channel mode as well.  In that case the ID
8394           includes the ID of the server.  The code now enforces the
8395           mode change if the router have different mode than the server.
8396
8397         * The notify client operation with CMODE_CHANGE notify can now
8398           return NULL client_entry pointer if the CMODE was not changed
8399           by client.  Application must check for this.
8400
8401         * Added <Server ID> argument to INFO command to support server
8402           info fetching by Server ID.
8403
8404         * Added silc_server_announce_get_channel_users to get assembled
8405           packets of channel users of the specified channel.  Affected
8406           file silcd/server.[ch].
8407
8408         * Fixed bug in CHANNEL_CHANGE notify in the server.  The new ID
8409           was freed underneath the ID Cache.
8410
8411         * Re-announce clients when the server received CHANNEL_CHANGE
8412           notify from the router.  Affected file silcd/packet_send.c.
8413
8414 Thu Mar 29 19:10:28 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8415
8416         * Fixed a fatal bug when client does /join 1 2 3 4 5 6 the server
8417           crashed since it did not handle the fact that there is no cipher
8418           called "3" and didn't check the error condition.  Now fixed.
8419
8420         * Added SILC_MESSAGE_FLAG_REQUEST message flag as generic request
8421           flag.  It can be used to send message requests.
8422
8423 Thu Mar 29 12:26:25 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8424
8425         * Implemented the RESTART command in the client.
8426
8427         * Added SILC_MESSAGE_FLAG_NOTICE message flag for informational
8428           notice type messages.  Added notice printing to the user
8429           interface.
8430
8431         * The channel keys are not re-generated if the channel's mode
8432           is PRIVKEY, ie private key on the channel exists.  Affected
8433           files silcd/server.c and silcd/command.c.
8434
8435         * Fixed a little bug in channel message delivery when channel
8436           private keys are set in the server.  Affected file is
8437           silcd/packet_send.c.
8438
8439         * Changed the setting on channel->on_channel = TRUE from the
8440           silc_client_save_channel_key to the JOIN command reply.  The
8441           key payload is not received if the private channel key is set.
8442           Affected file lib/silcclient/command_reply.c and the
8443           lib/silcclient/client_channel.c.
8444
8445         * When the CMODE_CHANGE notify is sent and the channel private
8446           key mode is removed the channel key must be re-generated in
8447           other cells as well.  Added this support for the router in the
8448           silcd/packet_receive.c.
8449
8450         * Added new local command NOTICE to send notice message on
8451           channel.  Affected file silc/local_command.[ch].
8452
8453 Wed Mar 28 23:55:54 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8454
8455         * Added new local command ME to the client.  It is used to send
8456           message to a channel with SILC_MESSAGE_FLAG_ACTION to indicate
8457           some action.  Affected file silc/local_command.[ch].
8458
8459         * Changed channel_message and private_message client operations
8460           to deliver the message flags to the application.  Added also
8461           the `flags' arguments to the silc_client_send_channel_message
8462           and silc_client_send_private_message functions.  Affected file
8463           silcapi.h.
8464
8465 Wed Mar 28 20:50:47 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8466
8467         * Redefined the Private Message Payload to support private message
8468           keys and to support the new private message flags.  Updated
8469           the protocol specs.  Flags makes it possible to have for example
8470           CTCP style messages.
8471
8472         * Added new type SilcPrivateMessagePayload and defined an API
8473           for it in the lib/silcclient/silcprivate.[ch].
8474
8475         * Tested private message private keys successfully.  Tested the
8476           private message key set, unset and list commands with the new
8477           KEY command.
8478
8479         * Redefined the Channel Message Payload to include the channel
8480           message flags (equal with private message flags) to support
8481           for example CTCP style messages.
8482
8483         * Defined some of the message (for channel and private message)
8484           flags.  Updated the protocol specs and added the flags to the
8485           lib/silccore/silcchannel.h.  The type is SilcMessageFlags.
8486
8487 Wed Mar 28 15:52:36 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8488
8489         * Added SilcKeyAgreementStatus type to the key agreement routines
8490           to indicate the current status and error if one occured.
8491           The status types are defined in the lib/silcclient/silcapi.h.
8492
8493         * Added new local command KEY that is used to set and unset private
8494           keys for channels, set and unset private keys for private messages
8495           with remote clients and to send key agreement requests and
8496           negotiate the key agreement protocol with remote client.  The
8497           key agreement is supported only to negotiate private message keys,
8498           it currently cannot be used to negotiate private keys for channels,
8499           as it is not convenient for that purpose.
8500
8501         * Fixed a minor pending callback setting bug in the function
8502           silc_client_get_client_by_id_resolve, now the function works.
8503           Affected file lib/silcclient/idlist.c.
8504
8505         * Added function silc_net_get_local_port to get local bound
8506           port by socket.  Added to lib/silcutil/silcnet.[ch].
8507
8508         * Added `sockets' and `sockets_count' fields to the SilcClient
8509           object.  They hold the sockets of the listenning sockets in
8510           the client.  Listenning sockets may be for example the key
8511           agreement server.  Affected file lib/silcclient/client.[ch].
8512           Added functions the silc_client_add_socket and the
8513           silc_client_del_socket.  They are exported to the application
8514           as well.
8515
8516         * Added ~./silc/clientkeys to support other client's public keys.
8517
8518         * Renamed verify_server_key client operation to verify_public_key
8519           and added one argument to indicate the type of the connection
8520           (server, client etc.).
8521
8522 Tue Mar 27 22:22:38 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8523
8524         * Added silc_server_connection_auth_request to handle the
8525           incoming CONNECTION_AUTH_REQUEST packet.  Affected file is
8526           silcd/packet_receive.[ch].
8527
8528         * Added silc_server_send_connection_auth_request into the
8529           silcd/packet_send.c to send the connection auth request packet.
8530
8531         * Cleaned up the silcd/protocol.c a bit and fixed some memory
8532           leaks.
8533
8534         * Fixed the public key authentication in responder side in the
8535           server.  The `auth_data' pointer includes the SilcPublicKey
8536           not the path to the public key.  Affected file silcd/protocol.c.
8537
8538         * Implemented the public key authentication in the initiator side
8539           in the server.  Affected file silcd/protocol.c.
8540
8541         * Removed the [RedirectClient] config section from the server
8542           configuration.  Is not needed and I don't want to implement it.
8543
8544 Tue Mar 27 12:49:56 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8545
8546         * Cleaned up the CMODE command in the server.  It now works
8547           correctly and supports all the modes defined in the protocol.
8548           Affected file is silcd/command.c.
8549
8550         * Added `hmac_name' field to the SilcChannelEntry in the server
8551           to hold the default HMAC of the channel.  It can be set when
8552           creating the channel (with JOIN command).  Affected files
8553           silcd/idlist.[ch].
8554
8555         * Added <cipher> and <hmac> argument to the CMODE_CHANGE notify
8556           type to indicate the change of the current cipher and hmac
8557           on the channel.  Client can safely ignore the <cipher> argument
8558           (if it chooses to do so) since the CHANNEL_KEY packet will
8559           force the channel key change anyway.  The <hmac> argument is
8560           important since the client is responsible of setting the new
8561           HMAC and the hmac key into use.
8562
8563         * Fixed the CMODE command in the client library as well.
8564
8565         * Tested CMODE command in router environment successfully.
8566
8567 Mon Mar 26 14:39:48 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8568
8569         * Show the version of the remote client (or server) when connecting
8570           to the server.  It is logged to the log file.  Affected file
8571           is silcd/protocol.c.
8572
8573         * Fixed the KILLED notify handling in the client library.  The
8574           client must be removed from all channels when receiving the
8575           KILLED notify.
8576
8577           Also, do not remove the client entry when giving the KILL
8578           command but when the KILLED notify is received.
8579
8580         * Removed silc_idlist_find_client_by_nickname from the server.
8581           Not needed anymore.  Affected files silcd/idlist.[ch].
8582
8583         * Implemented the CHANNEL_CHANGE notify type handling to the
8584           server.  Affected file silcd/server.c.
8585
8586         * Updated TODO.
8587
8588 Mon Mar 26 12:11:14 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8589
8590         * Added silc_server_send_notify_invite to send the INVITE
8591           notify between routers.
8592
8593         * Implemented the INVITE command correctly to the server.
8594
8595         * Implemented the INVITE notify type handling in the server.
8596
8597         * Implemented the INVITE command to the client library and on the
8598           user interface.
8599
8600 Sun Mar 25 20:27:09 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8601
8602         * Added function silc_server_get_client_resolve to find the
8603           client entry by ID from all ID lists and then resolve it
8604           (using WHOIS) if it cannot be found.  Affected file is
8605           silcd/server.[ch].
8606
8607 Sun Mar 25 13:52:51 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8608
8609         * Implemented the BAN command to the client library.
8610
8611         * The JOIN command in the server now checks the invite list
8612           and the ban list.
8613
8614         * Changed the silc_command_reply_payload_encode_va and the
8615           silc_command_payload_encode_va to support that if argument is
8616           NULL it ignores and checks the next argument.  Affected file
8617           lib/silccore/silccommand.c.
8618
8619         * Added silc_server_send_notify_ban to send the BAN notify
8620           type between routers.
8621
8622         * Chaned the silc_notify_payload_encode to support that if
8623           argument is NULL it ignores and checks the next argument.
8624           Affected file lib/silccore/silcnotify.c.
8625
8626         * Tested ban lists in router environment successfully.
8627
8628 Sat Mar 24 14:47:25 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8629
8630         * Implemented BAN command to the server, in silcd/command.[ch].
8631
8632         * Removed the BAN and INVITE_LIST modes from the CMODE command
8633           in the server code.
8634
8635         * Added function silc_string_match to regex match two strings.
8636           Affected files lib/silcutil/silcutil.[ch].
8637
8638 Fri Mar 23 22:02:40 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8639
8640         * Redefined parts of the SilcChannelEntry in the server to support
8641           the new ban and invite lists.
8642
8643 Fri Mar 23 16:25:11 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8644
8645         * Redefined the INVITE command.  The same command can be used to
8646           invite individuals to the channel but also to manage the invite
8647           list of the channel (to add to and remove from the invite list).
8648           Updated the protocol specs.
8649
8650         * Added new command SILC_COMMAND_BAN that can be used to manage
8651           the ban list of the channel.  Updated the protocol specs.
8652
8653         * Removed the channel modes: the SILC_CMODE_BAN and the
8654           SILC_CMODE_INVITE_LIST as they were a bit kludge to be included
8655           in the CMODE command.  The equivalent features are now available
8656           using INVITE and BAN commands.  Updated the protocol specs.
8657
8658         * Added new SILC_NOTIFY_TYPE_BAN notify type to notify routers
8659           in the network about change in the current ban list.  The notify
8660           type is not used by the client.
8661
8662         * Redefined parts of the SILC_NOTIFY_TYPE_INVITE command to
8663           support the invite lists.
8664
8665 Thu Mar 22 22:52:23 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8666
8667         * Added new function silc_string_regexify that converts string
8668           including wildcard characters into regex string that can
8669           be used by the GNU regex library.  Added into the file
8670           lib/silcutil/silcutil.[ch].
8671
8672           Added silc_string_regex_combine to combine to regex strings
8673           into one so that they can be used as one regex string by
8674           the GNU regex library.  Added into the file
8675           lib/silcutil/silcutil.[ch].
8676
8677           Added silc_string_regex_match to match two strings.  It returns
8678           TRUE if the strings match.  Added into lib/silcutil/silcutil.[ch].
8679
8680 Thu Mar 22 15:29:42 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8681
8682         * Imported GNU regex to the soruce tree into lib/contrib.
8683           Fixed some compiler warning from the regex.c.
8684
8685 Wed Mar 21 15:27:58 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8686
8687         * Fixed MOTD command in the server to work in router environment.
8688
8689         * Fixed the MOTD command in the client library to support
8690           the server argument in the command.
8691
8692         * Added `nickname_len' argument to the silc_idlist_add_client
8693           in the server, as the `nickname' argument may be binary data
8694           (it may be hash).
8695
8696         * Added silc_idlist_get_channels to return all channels from
8697           the ID list.
8698
8699         * Implemented LIST command to the server.  Affected file is
8700           silcd/command.c.
8701
8702         * Implemented the LIST command to the client library and on the
8703           user interface.
8704
8705         * Added [<user count>] argument to the LIST command reply.
8706           With private channels the user count is not shown.
8707
8708         * Updated TODO and README.
8709
8710 Tue Mar 20 21:05:57 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8711
8712         * The client entry's data.registered must be TRUE even with
8713           global client entry on global client list.  The data.registered
8714           is used to check whether the client is anymore in the network,
8715           for example with WHOWAS command so it must be valid.
8716
8717         * Fixed the WHOWAS command in the server.  It now actually works
8718           in router environment.  Added function into silcd/command_reply.c
8719           silc_server_command_reply_whowas_save.
8720
8721         * Added silc_idlist_purge function to the silcd/idlist.c
8722           to periodically purge the ID Cache.
8723
8724         * Fixed INFO command in the server.  It works now in router
8725           environment.  Added <server name> argument to the INFO command
8726           reply.  Updated the protocol specs.
8727
8728         * Fixed minor bug in silc_idcache_purge to not purge if the
8729           expire value is zero.
8730
8731         * Fixed various bugs in WHOIS and IDENTIFY command handling as
8732           they were buggy because of the WHOWAS information.
8733
8734         * Fixed local command MSG to handle the async resolving of
8735           the remote client properly.  It used to fail the first MSG.
8736           Affected file silc/local_command.c.
8737
8738         * Added `data_len' field to SilcIDCache context.
8739
8740 Tue Mar 20 16:29:00 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8741
8742         * Update TODO.  Todo in commands in the server.
8743
8744 Tue Mar 20 15:45:14 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8745
8746         * Added new notify type SILC_NOTIFY_TYPE_UMODE_CHANGE that is
8747           used by routers as broadcast packet to inform other routers
8748           about the changed user mode.
8749
8750           Implemented the notify handling in the server.  Affected file is
8751           silcd/packet_receive.c.  Added the function
8752           silc_server_send_notify_umode to the silcd/packet_send.[ch].
8753
8754         * Added new generic Channel Payload and deprecated the New Channel
8755           Payload.  The New Channel Payload is now the generic Channel
8756           Payload.
8757
8758         * Added new argument `mode' to the silc_server_send_new_channel
8759           as it is required in the Channel Payload now.
8760
8761         * Renamed the SilcChannelPayload to SilcChannelMessagePayload
8762           and created a new and real SilChannelPayload to represent the
8763           new generic Channel Payload.  Implemented the encode/decode
8764           for Channel Payload.  Affected file lib/silccore/silcchannel.[ch].
8765
8766         * Added silc_server_get_client_channel_list to return the list
8767           of channels the client has joined for WHOIS command reply.
8768           Affected file silcd/server.[ch].
8769
8770         * Implemented the channel list sending in the WHOIS command reply
8771           in server and in the client.
8772
8773           Implemented the channel list displaying on the user interface
8774           as well.  Affected file silc/client_ops.c.
8775
8776         * Added silc_channel_payload_parse_list to parse list of Channel
8777           Payloads.  It returns SilcDList list of SilcChannelPayloads.
8778           Client for example can use this function to parse the list of
8779           channels it receives in the WHOIS command reply.  The caller
8780           must free the list by calling silc_channel_payload_list_free.
8781           Affected files lib/silccore/silcchannel.[ch].
8782
8783 Mon Mar 19 21:39:15 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8784
8785         * Added one new argument <user mode> to the WHOIS command reply
8786           to return the mode of the user in SILC.  Updated the protocol
8787           specs.
8788
8789           Implemented it to the server and client.
8790
8791 Mon Mar 19 18:43:06 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8792
8793         * Fixed the mode printing on the user interface on joining.
8794           Affected file silc/client_ops.c.
8795
8796         * Implemented the UMODE command and user modes in general to the
8797           client library and to the user interface.
8798
8799         * Implemented the UMODE command to the server.
8800
8801         * The server now sends UNKNOWN_COMMAND error status if client sends
8802           unknown command.  Affected file silcd/command.c.
8803
8804         * All server commands now handle the command identifier the right
8805           way when sending the command reply to the client.  The client can
8806           use to identify the command replies with the identifier.
8807
8808 Mon Mar 19 16:13:07 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8809
8810         * Added silc_server_get_client_route to resolve the route to
8811           the client indicated by the client ID.  Affected file is
8812           silcd/server.[ch].
8813
8814         * Added silc_server_relay_packet as general function to relay
8815           packet to arbitrary destination.  This deprecates functions
8816           like _send_private_message_key, _relay_notify etc.  Affected
8817           file is silcd/packet_send.[ch].
8818
8819           Removed silc_server_send_key_agreement,
8820           silc_server_send_private_message_key and
8821           silc_server_packet_relay_notify functions from the file
8822           silcd/packet_send.[ch].
8823
8824         * Updated TODO.
8825
8826         * Implemented the SILC_NOTIFY_TYPE_KILLED notify handling in the
8827           server.  Affected file silcd/packet_receive.[ch].
8828
8829         * Implemented the KILL command to the client.  Implemented the
8830           SILC_NOTIFY_TYPE_KILLED notify handling in the client library.
8831           Affected files lib/silcclient/command[_reply].c and
8832           lib/silcclient/client_notify.c.  Implemented the KILL notify
8833           printing in the user inteface.
8834
8835         * Fixed a lot silc_parse_nick memory leaks from the client
8836           library in the file lib/silcclient/command.c.
8837
8838         * Changed the silc_server_send_notify_on_channels's `sender'
8839           argument from SilcSocketConnection to SilcClientEntry to
8840           check the sender as entry and not as connection object and not
8841           to send to the client provided as argument.  The affected file
8842           is silcd/packet_send.[ch].
8843
8844         * The notify packets that are destined directly to the client used
8845           to not to be processed by the server.  Now changed that and the
8846           server processes all notify packets.  After relaying the packet
8847           to the client the notify packet is processed in the server.
8848
8849         * The silc_server_free_client_data now checks whether there is
8850           pending outgoing traffic for the client and purges the data to
8851           the network before removing the client entry.
8852
8853 Sun Mar 18 21:02:47 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8854
8855         * Added SILC_NOTIFY_TYPE_KILLED notify type.  It is sent when
8856           an client is killed from the SILC Network.  Updated the protocol
8857           specs accordingly.
8858
8859           Added new function silc_server_send_notify_killed to the
8860           silcd/packet_send.[ch].
8861
8862         * Added function silc_server_packet_relay_notify to relay notify
8863           packets that are destined directly to a client.  In this case
8864           the server does not process the notify packets but merely relays
8865           it to the client.  Affected file silcd/packet_send.[ch].
8866
8867           Added also silc_server_packet_process_relay_notify to check
8868           whereto relay the notify.  Affected file is
8869           silcd/packet_receive.[ch].
8870
8871         * Implemented the KILL command to the server.
8872
8873         * Updated TODO.
8874
8875         * Added the backup schema desgined last fall to the protocol
8876           specs for everyone to see.  The specification is in the
8877           *-spec-xx.txt draft and the packet type definitions for the
8878           backup routers is in *-pp-xx.txt draft.  Thusly, added also
8879           new packet type SILC_PACKET_CELL_ROUTERS.
8880
8881         * A big security problem in the implementation discovered.  The
8882           signoff of an client did not cause new channel key generation
8883           which it of course should've done.  The channel keys must be
8884           always re-generated when client leaves (or signoffs) the channel.
8885           The silc_server_remove_from_channels funtion now handles
8886           the channel key re-generation.
8887
8888         * Added `sender' argument to the silc_server_send_notify_on_channels
8889           to not to send the client provided as argument.  Affected file
8890           silcd/packet_send.[ch].
8891
8892 Fri Mar 16 15:52:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8893
8894         * Implemented OPER and SILCOPER commands into the server and
8895           the client library.
8896
8897         * Added silc_auth_verify and silc_auth_verify_data to verify
8898           the authentication directly from the authentication payload.
8899           It supports verifying both passphrase and public key based
8900           authentication.  Affected file lib/silccore/silcauth.[ch].
8901
8902         * Added `hash' field to the SilcIDListData structure.  It is the
8903           hash negotiated in the SKE protocol.  Affected file is
8904           silcd/idlist.[ch].
8905
8906         * Slight redesigning of the SilcAuthPayload handling routines.
8907           Do not send SilcPKCS but SilcPublicKey as argument.
8908
8909         * Implemented the public key authentication support to the
8910           serverconfig.  The public key is loaded from the provided path
8911           and saved as authentication data to void * pointer.  Thus,
8912           changed the unsigned char *auth_data to void *auth_data;
8913
8914         * Fixed SHUTDOWN command to send the reply before the server
8915           is shutdown. :)  Affected file silcd/command.c.
8916
8917         * Fixed fatal bug in CONNECT command.  The hostname was invalid
8918           memory and server crashed.  Affected file silcd/command.c.
8919
8920         * Fixed fatal bug in CLOSE command.  The server_entry became
8921           invalid but was referenced later in the command.  Affected file
8922           silcd/command.c.
8923
8924 Thu Mar 15 12:46:58 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8925
8926         * Fixed fatal bug in failure packet handling.  Server ignored
8927           the failure and thus crashed when it came.
8928
8929         * Updated TODO.
8930
8931 Wed Mar 14 20:37:35 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8932
8933         * Added new SILC_CF_LAG_STRICT command flag that strictly forces
8934           that the command may be executed only once in (about) 2 seconds.
8935           The old SILC_CF_LAG flag is same but allows command bursts up
8936           to five before limiting.
8937
8938           Added the support for CF_LAG and CF_LAG_STRICT flags to the
8939           server code.  Various commands now includes the CF_LAG_STRICT
8940           flag to disallow any kind of miss-use of the command.
8941
8942         * Fixed the silc_buffer_unformat to not to allocate any data
8943           if the length of the data is zero.  It used to allocate the
8944           length + 1.  Affected file lib/silcutil/silcbuffmt.c.
8945
8946 Wed Mar 14 16:10:30 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8947
8948         * Changed the format of AdminConnection configuration section
8949           in the server.  Added username of the admin to the format.
8950           Affected files silcd/serverconfig.[ch].
8951
8952           Added silc_server_config_find_admin into silcd/serverconfig.[ch]
8953           to return admin configuration data by host, username and/or
8954           nickname.
8955
8956 Wed Mar 14 13:18:16 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8957
8958         * Implemented WHOWAS command to the server.  Added the functions:
8959
8960           silc_server_command_whowas_parse,
8961           silc_server_command_whowas_send_reply,
8962           silc_server_command_whowas_from_client and
8963           silc_server_command_whowas_from_server
8964
8965         * Added <Client ID> argument to the WHOWAS command reply.  Updated
8966           the protocol specs accordingly.
8967
8968         * Implemented WHOWAS command and command_reply to the client
8969           library.
8970
8971           Implemented the WHOWAS printing on the user interface.
8972
8973 Tue Mar 13 22:17:34 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8974
8975         * Added new argument to the WHOWAS command reply, the real name.
8976           It is an optional argument.  Updated the protocol specs.
8977
8978         * Added SilcIDCacheDestructor callback that is registered when
8979           the SilcIDCache is allocated.  The callback is called when
8980           an cache entry in the ID Cache expires, or is purged from the
8981           cache.  Added into lib/silccore/idcache.[ch].
8982
8983           Added silc_idlist_client_destructor to the silcd/idlist.[ch]
8984           to destruct the client entries when the cache entry expires.
8985           Other ID Cache's in server and in the client library ignores
8986           the destructor.
8987
8988         * If the ID Cache entry's `expire' field is zero then the entry
8989           never expires.  Added boolean `expire' argument to the
8990           silc_idcache_add function in the lib/silccore/idcache.[ch].
8991           If it is TRUE the default expiry value is used.
8992
8993         * Added silc_server_free_client_data_timeout that is registered
8994           when client disconnects.  By default for 5 minutes we preserve
8995           the client entry for history - for WHOWAS command.
8996
8997 Tue Mar 13 13:26:18 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8998
8999         * Added support to the server to enforce that commands are not
9000           executed more than once in 2 seconds.  If server receives
9001           commands from client more frequently, timeout is registered
9002           to process the commands.  Affected file silcd/command.c.
9003           Added new function silc_server_command_process_timeout.
9004
9005         * Changed NICK_NOTIFY handling in client library to check that
9006           if the client's nickname was changed, so there is no need to
9007           resolve anything from the server.
9008
9009         * Removed error printing from the WHOIS and IDENTIFY commands.
9010           If error occurs then it is ignored silently in the client library.
9011           The application, however, may map the received error to
9012           human readable error string.  The application currently maps
9013           the NO_SUCH_NICKNAME error to string.
9014
9015         * Made the command status message public to the application.  Moved
9016           them from lib/silcclient/command_reply.c to
9017           lib/silcclient/command_reply.h.  The application can map the
9018           received command status to the string with the
9019           silc_client_command_status_message function.
9020
9021         * Added check to the server to check that client's ID is same
9022           as the Source ID in the packet the client sent.  They must
9023           match.
9024
9025 Tue Mar 13 12:49:21 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9026
9027         * Added dist-bzip hook to the Makefile.am to make bzip2
9028           compressed distributions.
9029
9030 Mon Mar 12 18:43:38 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9031
9032         * Server now enforces the maximum length for the nickname and
9033           the channel as protocol specification dictates.  128 bytes for
9034           nickname and 256 bytes for channel name.
9035
9036         * Moved the WHOIS printing to the application.  The client libary
9037           does not print out the WHOIS information anymore, the application
9038           must do it.  Renamed silc_client_command_reply_whois_print to
9039           the silc_client_command_reply_whois_save.
9040
9041           The client's idle time is also sent to the application now, and
9042           the idle is shown on screen.
9043
9044         * Added silc_client_command_reply_identify_save to save the
9045           received IDENTIFY entries.
9046
9047         * Do not check for channel private keys in message sending and
9048           reception if the channel does not have the PRIVKEY mode set.
9049           Affected file lib/silclient/client_channel.c.
9050
9051 Sun Mar 11 20:25:06 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9052
9053         * Fixed a minor bug if WHOIS and IDENTIFY command parsing that
9054           just surfaced after chaning the JOIN procedure.
9055
9056 Sun Mar 11 14:59:05 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9057
9058         * Added silc_client_get_clients_by_list to get client entries
9059           from Client ID list, that is returned for example by JOIN
9060           and USERS command replies.  The application should use this
9061           function for example when JOIN command reply is received to
9062           resolve the clients already on the channel (library does not
9063           do that anymore as USERS command reply is not used in the JOIN
9064           procedure anymore).  Affected files lib/silcclient/silcapi.h and
9065           lib/silcclient/idlist.c.
9066
9067         * JOIN command reply and USERS command reply returns now SilcBuffer
9068           pointers instead of unsigned char pointers when returning
9069           the client list and mode list.
9070
9071         * Added <Client ID> argument to the JOIN command reply, mainly
9072           for the server to identify for which client the command was
9073           originally sent.  Updated protocol specs accordingly.
9074
9075         * Added SilcDlist private_key pointer to the SilcChannelEntry
9076           in the client to support the channel private keys.  Affected
9077           file is lib/silcclient/idlist.h.
9078
9079         * Added SilcChannelPrivateKey argument to the function
9080           silc_client_send_channel_message so that application can choose
9081           to use specific private ke if it wants to.  If it is not provided,
9082           the normal channel key is used, unless private keys are set.
9083           In this case the first (key that was added first) is used
9084           as the encryption key.
9085
9086         * Implemented the support for channel private key handling.
9087           Implemented the following functions:
9088
9089           silc_client_add_channel_private_key,
9090           silc_client_del_channel_private_keys,
9091           silc_client_del_channel_private_key,
9092           silc_client_list_channel_private_keys and
9093           silc_client_free_channel_private_keys
9094
9095           Affected file lib/silcclient/client_channel.c.
9096
9097         * Added the support for the private keys in the channel message
9098           sending and encryption and in the message reception and
9099           decryption.  Affected funtions are
9100           silc_client_send_channel_message and silc_client_channel_message.
9101
9102 Sat Mar 10 21:36:22 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9103
9104         * Added SKE's key verify callback to the client library's
9105           KE protocol context. Affected files lib/silcclient/protocol.[ch].
9106
9107         * Removed the statement that server (or router) must send USERS
9108           command reply when joining to the channel so that the client
9109           knows who are on the channel.  Instead, the client list and
9110           client's mode list is now sent in the JOIN command reply to the
9111           client who joined channel.  This is better solution.
9112
9113         * Added function silc_server_get_users_on_channel and function
9114           silc_server_save_users_on_channel to the silcd/server.[ch].
9115
9116         * Removed function silc_server_command_send_users from the
9117           silcd/command.c.
9118
9119         * Do not show topic on the client library anymore.  The topic is
9120           sent in the command reply notify to the application and the
9121           application must show the topic now.
9122
9123 Sat Mar 10 00:07:37 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9124
9125         * Added client searching by nickname hash into the IDENTIFY and
9126           WHOIS commands in the server as they were clearly missing from
9127           them.  Affected file is silcd/command.c.
9128
9129         * Fixed a bug in private message receiving in the client library.
9130           The remote ID was freed and it wasn't supposed, now it is
9131           duplicated.
9132
9133 Fri Mar  9 12:40:42 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9134
9135         * Minor fix to the channel payload; allocate the data area, as it
9136           needs to be of specific length.
9137
9138         * If the key agreement port is zero then the operating
9139           system will define the bound port.  Affected files are
9140           lib/silcclient/silcapi.h and lib/silcclient/client_keyagr.c.
9141
9142         * Added new function silc_channel_payload_decrypt into the file
9143           lib/silccore/silcchannel.[ch].
9144
9145         * Moved the channel message etc, check from silc_packet_decrypt
9146           to applications.  The library calls now a generic
9147           SilcPacketCheckDecrypt callback which is to return TRUE or FALSE
9148           when the packet is either normal or special.  This was done to
9149           allow more wide range of checking that was not allowed when
9150           the code was in library.  Now applications can do virtually any
9151           checks to the packet and return to the library the decision how
9152           the packet should be processed.  Affected files are
9153           lib/silccore/silcpacket.[ch].
9154
9155           Added silc_server_packet_decrypt_check to the server and
9156           silc_client_packet_decrypt_check to the client library.
9157
9158         * Added silc_server_packet_send_srcdest into silcd/packet_send.[ch]
9159           to send with specified source and destination information.
9160
9161         * Channel message delivery between routers was broken after the
9162           channel key distribution was fixed earlier.  The channel key
9163           was used be to distributed to other routers as well which is not
9164           allowed by the protocol.  Now this is fixed and channel keys
9165           really are cell specific and the channel message delivery between
9166           routers comply with the protocol specification.
9167
9168         * Fixed various commands in server to check also the global list
9169           for the channel entry and not just the local list.  The affected
9170           file silcd/command.c.
9171
9172 Thu Mar  8 21:39:03 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9173
9174         * Added assert()s to buffer formatting and unformatting routines
9175           to assert (if --enable-debug) when error occurs.  Affected
9176           file: lib/silcutil/silcbuffmt.c.
9177
9178         * Changed to auto-reconnect to check whether the remote host is
9179           router and register the re-connect timeout if it is.  It used
9180           to check that whether we are normal server, but router must do
9181           auto-reconnect with another router as well.  Affected file
9182           silcd/server.c.
9183
9184         * Removed the [<key len>] option from CMODE command as the cipher
9185           name decides the key length, nowadays.  See the defined ciphers
9186           from the protocol specification.
9187
9188         * Added [<hmac>] option to the CMODE command to define the HMAC
9189           for the channel.  Added SILC_CMODE_HMAC channel mode.
9190
9191         * Added [<hmac>] option for the JOIN command so that user can
9192           select which HMAC is used to compute the MACs of the channel
9193           messages.
9194
9195         * Added Hmac field to the Channel Message Payload.  The integrity
9196           of plaintext channel messages are now protected by computing
9197           MAC of the message and attaching the MAC to the payload.  The
9198           MAC is encrypted.  Now, it is clear that this causes some
9199           overhead to the size of the packet but rationale for this is that
9200           now the receiver can verify whether the channel message decrypted
9201           correctly and also when private keys are set for the channel the
9202           receiver can decrypt the packet with several keys and check from
9203           the MAC which key decrypted the message correctly.
9204
9205         * Added silc_cipher_encrypt and silc_cipher_decrypt into the
9206           lib/silccrypt/silccipher.[ch].
9207
9208         * Added silc_hash_len to return the digest length into the
9209           lib/silcrypt/silchash.[ch].
9210
9211         * Rewrote parts of Silc Channel Payload interface in the
9212           lib/silccore/silcchannel.[ch].  The encode function now also
9213           encrypts the packet and parse function decrypts it.
9214
9215 Wed Mar  7 20:58:50 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9216
9217         * Fixed a minor formatting bug in the SKE's key material processing.
9218           It actually might have processed the keys wrong way resulting
9219           into wrong keys.
9220
9221         * Redefined the mandatory HMAC algorithms and added new algorithms.
9222           Added hmac-sha1-96 and hmac-md5-96 which are normal hmac-sha1
9223           and hmac-md5 truncated to 96 bits.  The mandatory is now
9224           hmac-sha1-96.  Rest are optional (including the one that used
9225           to be mandatory).  Rationale for this is that the truncated HMAC
9226           length is sufficient from security point of view and can actually
9227           make the attack against the HMAC harder.  Also, the truncated
9228           HMAC causes less overhead to the packets.  See the RFC2104 for
9229           more information.
9230
9231         * Added new [hmac] configuration section.  The SKE used to use
9232           the hash names (md5 and sha1) in the SKE proposal as HMCAS which
9233           is of course wrong.  The official names that must be proposed in
9234           the SKE are the ones defined in the protocol specification
9235           (hmac-sha1-96 for example).  The user can configure any hmac
9236           using any hash function configured in the [hash] section.  At
9237           least, the mandatory must be configured.
9238
9239           Rewrote the HMAC interface in lib/silccrypt/silchmac.[ch].
9240
9241         * Added HMAC list to the SKE proposal list.  It has now both
9242           hash algorithm list and HMAC list.  This makes the protocol
9243           incompatible with previous versions.  The SKE now seems to work
9244           the way it is supposed to work, for the first time actually.
9245
9246         * Defined plain Hash algorithms to the protocol specification.
9247           Added sha1 and md5.
9248
9249 Tue Mar  6 15:36:11 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9250
9251         * Implemented support for key agreement packets into the server.
9252           Added functions silc_server_key_agreement and
9253           silc_server_send_key_agreement.  Other than these functions,
9254           server has nothing to do with this packet.
9255
9256         * Added support for private message key packets into the server.
9257           Added functions silc_server_private_message_key and
9258           silc_server_send_private_message_key.
9259
9260         * Updated TODO.
9261
9262         * Changed the silc_[client|server]_protocol_ke_set_keys to be
9263           called in the protocol's final callback instead in the END
9264           protocol state.  This makes a little more sense and in the same
9265           time in client we can use the same protocol routines for normal
9266           key exchange and to key agreement packet handling as well.
9267
9268         * Added to both client's and server's KE protocol context the
9269           SilcSKEKeyMaterial pointer to save the key material.  We will
9270           bring the key material to the protocol's final callback by doing
9271           this.  The final callback must free the key material.
9272
9273         * Added SKE's packet_send callback into client's KE protocol
9274           context so that the caller can choose what packet sending function
9275           is used.  This way we can use different packet sending when
9276           doing normal SKE when doing key agreement packet handling (in
9277           the key agreement packet handling we do not want to encrypt
9278           the packets).
9279
9280         * Implemented the responder side of the key agreement routines
9281           in the client.  The client can now bind to specified port and
9282           accept incoming key negotiation.  The key material is passed
9283           to the application after the protocol is over.
9284
9285         * Implemented the processing of incoming Key Agreement packet
9286           in the client.  Added function silc_client_key_agreement to
9287           process the packet.
9288
9289         * Implemented the intiator side of the key agreement routines
9290           in the client.  The client can now initiate key agreement with
9291           another remote client.  The key material is passed to the
9292           application after the protocol is over.
9293
9294         * Created client_keyagr.c to include all the key agreement
9295           routines.
9296
9297         * Added macro SILC_TASK_CALLBACK_GLOBAL which is equal to the
9298           SILC_TASK_CALLBACK except that it is not static.
9299
9300         * Created client_notify.c and moved the Notify packet handling
9301           from the client.[ch] into that file.
9302
9303         * Created client_prvmsg.c and moved all private message and
9304           private message key routines from the client.[ch] into that file.
9305
9306         * Create client_channel.c and moved all channel message and
9307           channel private key routines from the client.[ch] into that file.
9308
9309         * Changed silc_client_get_client_by_id_resolve to resolve with
9310           WHOIS command instead of IDENTIFY command, in the file
9311           lib/silclient/idlist.c.
9312
9313 Mon Mar  5 18:39:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9314
9315         * Implemented the SKE's responder side to the Client library.
9316
9317         * When FAILURE is received to the protocol do not trust it
9318           blindly.  Register a timeout to wait whether the remote closes
9319           the connection as it should do it, only after that process the
9320           actual failure.  This was changed to both client and server.
9321
9322         * Added client_internal.h to include some of the structures
9323           there instead of client.h in lib/silcclient/.
9324
9325         * Added function silc_task_unregister_by_callback to unregister
9326           timeouts by the callback function.
9327
9328 Sat Mar  3 19:15:43 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9329
9330         * Some "Incomplete WHOIS info" errors has been appearing on the
9331           log files.  Took away the entry->userinfo check from WHOIS
9332           reply sending.  The entry->userinfo is now " " if client did not
9333           provide one.  I thought this was fixed earlier but something
9334           is wrong still.  Let's see if the error still appears.
9335
9336 Wed Feb 28 20:56:29 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9337
9338         * Fixed a minor bug in the login when the channel key is
9339           re-generated in the server.  It used to generate the key in
9340           wrong order and thus caused problems in the channel traffic.
9341
9342         * Fixed a minor bug in channel key distsribution after
9343           KICK command.  The key was not sent to the router even though
9344           it should've been.
9345
9346 Tue Feb 27 20:24:25 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9347
9348         * Added silc_ske_process_key_material_data as generic routine
9349           to process any key material as the SILC protocol dictates.  The
9350           function is used by the actual SKE library but can be used by
9351           applications as well.  This relates to the private message keys
9352           and the channel private keys since they must be processed the
9353           same way the normal SILC session keys.  The protocol dictates
9354           this.  Affected files: lib/silcske/silcske.[ch].
9355
9356           Added also silc_ske_free_key_material to free the
9357           SilcSKEKeyMaterial structure.
9358
9359         * Defined silc_cipher_set_key function to set the key for
9360           cipher without using the object's method function.  The affected
9361           files: lib/silccrypt/silccipher.[ch].
9362
9363         * Implemented silc silc_client_add_private_message_key,
9364           silc_client_add_private_message_key_ske,
9365           silc_client_del_private_message_key,
9366           silc_client_list_private_message_keys and
9367           silc_client_free_private_message_keys functions in the
9368           client library.
9369
9370           Added functions silc_client_send_private_message_key to send
9371           the Private Message Key payload and silc_client_private_message_key
9372           to handle incoming Private Message Key payload.
9373
9374         * Added Cipher field to the Private Message Key payload to set
9375           the cipher to be used.  If ignored, the default cipher defined
9376           in the SILC protocol (aes-256-cbc) is used.
9377
9378 Tue Feb 27 13:30:52 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9379
9380         * Removed lib/silcclient/ops.h file.
9381
9382           Redefined parts of the SILC Client Library API. Created new
9383           file silcapi.h that deprecates the ops.h file and defines the
9384           published Client Library API.  Defined also private message key
9385           API and channel private key API into the file.
9386
9387           This is the file that the application must include from the
9388           SILC Client Library.  Other files need not be included by
9389           the application anymore.
9390
9391         * Added new key_agreement client operation callback and also
9392           defined the Key Agreement library API for the application.
9393
9394 Tue Feb 27 11:28:31 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9395
9396         * Added new packet type: SILC_PACKET_KEY_AGREEMENT.  This packet
9397           is used by clients to request key negotiation  between another
9398           client in the SILC network.  If the negotiation is started it
9399           is performed using the SKE protocol.  The result of the
9400           negotiation, the secret key material, can be used for example
9401           as private message key.
9402
9403           Implemented the Key Agreement payload into the files
9404           lib/silccore/silauth.[ch].
9405
9406 Mon Feb 26 12:13:58 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9407
9408         * Redefined ciphers for the SILC protocol.  Added some new ciphers
9409           and defined the key lengths for the algorithms.  Changed the
9410           code accordingly.  The default key length is now 256 bits.
9411
9412         * Fixed SKE key distribution function silc_ske_process_key_material
9413           when the key length is more than 128 bits.  The default key
9414           length in SILC is now 256 bits.
9415
9416         * Added new command status type: SILC_STATUS_ERR_UNKOWN_ALGORITHM
9417           to indicate unsupported algorithm.
9418
9419         * Renamed rijndael.c to aes.c and all functions as well.
9420
9421         * Fixed a long standing channel key setting bug in client library.
9422           Weird that it has never surfaced before.
9423
9424         * Fixed bug in channel deletion.  If the entire channel is removed
9425           then it must also delete the references of the channel entry
9426           from the client's channel list as the client's channel entry and
9427           the channel's client entry share same memory.
9428
9429 Sun Feb 25 20:47:29 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9430
9431         * Implemented CONNECT and SHUTDOWN commands in the client.
9432
9433         * Implemented CLOSE command to the client.
9434
9435         * Added the function silc_idlist_find_server_by_name into the
9436           files silcd/idlist.[ch].
9437
9438           Added the function silc_idlist_find_server_by_conn into the
9439           files silcd/idlist.[ch].
9440
9441 Sat Feb 24 23:45:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9442
9443         * DIE command was renamed to SHUTDOWN.  Updated the both code
9444           and protocol specs.
9445
9446         * Defined SILC_UMODE_NONE, SILC_UMODE_SERVER_OPERATOR and
9447           SILC_UMODE_ROUTER_OPERATOR modes into lib/silccore/silcmode.h.
9448
9449         * Implemented CONNECT, CLOSE and SHUTDOWN commands to the server
9450           side.
9451
9452         * Added function silc_server_create_connection function to create
9453           connection to remote router.  My server implementation actually
9454           does not allow router to connect to normal server (it expects
9455           that normal server always initiates the connection to the router)
9456           so the CONNECT command is only good for connecting to another
9457           router.
9458
9459 Sat Feb 24 16:03:45 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9460
9461         * Added SILC_NOTIFY_TYPE_KICKED to indicate that the client
9462           or some other client was kicked from the channel.
9463
9464           Implemented the handling of the notify type to both client
9465           and server.
9466
9467           Implemented silc_server_send_notify_kicked to send the KICKED
9468           notify.  It is used to send it to the server's primary router.
9469
9470         * Implemented the KICK command into server and client.
9471
9472         * Added `query' argument to the silc_idlist_get_client function
9473           to indicate whether to query the client from server or not if
9474           it was not found.
9475
9476         * Added new command status type SILC_STATUS_ERR_NO_CHANNEL_FOPRIV
9477           to indicate that the client is not channel founder.
9478
9479         * Updated TODO.
9480
9481 Sat Feb 24 00:00:55 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9482
9483         * Removed the rng context from SilcPacketContext structure and
9484           changed that the packet routine uses the Global RNG API.
9485
9486 Fri Feb 23 11:22:57 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9487
9488         * Added support for quit message that client can "leave" on the
9489           channel when it quits the SILC.  It is ditributed inside the
9490           SILC_NOTIFY_TYPE_SIGNOFF notify type.
9491
9492           Added silc_server_free_client_data that will take the
9493           signoff message as argument.
9494
9495         * Changed SKE routines to use the silc_pkcs_sign/verify routines.
9496
9497 Thu Feb 22 23:05:36 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9498
9499         * Updated parts of the protocol specification to keep it up
9500           to date.
9501
9502 Thu Feb 22 15:08:20 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9503
9504         * Added List flag (SILC_PACKET_FLAG_LIST) to indicate list of
9505           payloads in one packet.
9506
9507         * Deprecated following packet types: NEW_ID_LIST, NEW_CHANNEL_LIST,
9508           NEW_CHANNEL_USER_LIST, SET_MODE and SET_MODE_LIST.  List packets
9509           use now the new List flag.
9510
9511         * Also deprecated the following packet types: REPLACE_ID,
9512           NEW_CHANNEL_USER and REMOVE_CHANNEL_USER packet types.
9513
9514         * Added list support for Notify packet in server.
9515
9516         * Added silc_server_send_notify_channel_change to send the
9517           CHANNEL_CHANGE notify type to replace channel ID's.  Deprecates
9518           the silc_server_send_replace_id.
9519
9520         * Added silc_server_send_notify_nick_change to send the
9521           NICK_CHANGE notify type.  Deprecates the function
9522           silc_server_send_replace_id.
9523
9524         * Added silc_server_send_notify_join to send the JOIN notify type.
9525           Deprecates the function silc_server_send_new_channel_user.
9526
9527         * Added silc_server_send_notify_leave to send LEAVE notify type.
9528           Deprecates the function silc_server_send_remove_channel_user.
9529
9530         * Added silc_server_send_notify_cmode and
9531           silc_server_send_notify_cumode to send CMODE and CUMODE notify
9532           types.  Deprecates the silc_server_send_set_mode function.
9533
9534         * Added SERVER_SIGNOFF notify type to indicate that server has
9535           quit.  This means that all clients on the channel from that
9536           server will drop.  This can be also used when netsplit happens.
9537
9538           Deprecated REMOVE_ID packet type since it is not needed anymore
9539           even from server.
9540
9541           Added silc_server_send_notify_server_signoff to send the
9542           SERVER_SIGNOFF notify type.  Deprecates the function
9543           silc_server_send_remove_id.
9544
9545           Added also silc_server_send_notify_signoff to send the
9546           SIGNOFF notify type.
9547
9548         * Employed the PKCS #1. It is the mandatory way to do RSA in the
9549           SILC protocol from this day on.  Changed the protocol
9550           specification as well.
9551
9552         * Added silc_server_send_notify_topic_set to send TOPIC_SET
9553           notify type.  It is used between routers to notify about
9554           topic changes on a channel.
9555
9556         * Added silc_id_dup into lib/silccore/id.[ch] to duplicate
9557           ID data.
9558
9559         * Partly updated the protocol specification to comply with the
9560           changes now made.  It is still though a bit outdated.
9561
9562         * The JOIN notify type now takes one extra argument <Channel ID>.
9563           The packet used to be destined to the channel but now the
9564           JOIN type may be sent as list thus it is impossible to
9565           destine it to any specific channel.  By adding this argument
9566           it is again possible.
9567
9568 Wed Feb 21 22:39:30 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9569
9570         * Added CREDITS file.  The CHANGES and CREDITS file will appear
9571           in the distribution as well.
9572
9573 Wed Feb 21 14:17:04 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9574
9575         * Implemented CMODE_CHANGE, CUMODE_CHANGE and TOPIC_SET notify
9576           types in the server's silcd/packet_receive.c.
9577
9578         * Implemented CMODE and CUMODE to work in router environment.
9579
9580         * Fixed minor encoding and decoding buglet from the
9581           lib/silccore/silcmode.c.
9582
9583         * Fixed buffer overflow from lib/silcclient/command.c in USERS
9584           command parsing.
9585
9586 Wed Feb 21 12:44:00 EET 2001  Mika Boström <bostik@lut.fi>
9587
9588         * Changed all SilcConfigServer* and silc_config_server* to
9589           SilcServerConfig* and silc_server_config*, respectively.
9590           Patch by Bostik.
9591
9592 Wed Feb 21 00:10:00 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9593
9594         * Associated the ID (client or server ID) to the Authentication
9595           Payload to avoid any possibility of forging.  Updated the
9596           protocol specification and the code accordingly.
9597
9598 Tue Feb 20 14:14:14 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9599
9600         * The RSA key length is now save to the RsaKey context in the
9601           key generation process in lib/silccrypt/rsa.c.  The key length
9602           is now used to figure out the maximum size of the block allowed
9603           to be encrypted/signed.
9604
9605         * Added silc_mp_mp2bin_noalloc into lib/silcmath/mpbin.[ch].  It
9606           is equivalent to the silc_mp_mp2bin but does not allocate any
9607           memory.
9608
9609         * Changed silc_mp_mp2bin API to take length argument.  If it is
9610           non-zero then the buffer is allocated that large.  If zero, then
9611           the size is approximated using silc_mp_sizeinbase, which however
9612           is not relieable.
9613
9614         * Created Global RNG API which is global RNG that application can
9615           initialize.  After initializing, any routine anywhere in the
9616           code (including library) can use RNG without allocating a new
9617           RNG object.  This was done to allow this sort of use of the
9618           RNG in code that has no chance to allocate RNG object.  All
9619           applications currently allocate this and many routines in the
9620           library use this.  Affected file lib/silccrypt/silcrng.[ch].
9621
9622         * Removed the RNG kludge from lib/silcmath/primegen.c and changed
9623           it to use the Global RNG API.
9624
9625         * Defined Authentication Payload into protocol specification that
9626           is used during SILC session to authenticate entities.  It is
9627           used for example by client to authenticate itself to the server
9628           to obtain server operator privileges.
9629
9630           Implemented this payload into the lib/silccore/silcauth.[ch].
9631           Implemented also routines for public key based authentication
9632           as the new protocol specification dictates.
9633
9634           Moved definitions of different authentication methods from
9635           lib/silccore/silcprotocol.h into lib/silccore/silcauth.h.
9636
9637         * Added silc_pkcs_encrypt, silc_pkcs_decrypt, silc_pkcs_sign,
9638           silc_pkcs_verify and silc_pkcs_sign_with_hash and
9639           silc_pkcs_verify_with_hash functions into the file
9640           lib/silccrypt/silcpkcs.[ch].
9641
9642 Mon Feb 19 19:59:28 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9643
9644         * The client entry's userinfo pointer must be always valid.
9645           Otherwise the [<unknown>] bug will surface beacuse the WHOIS
9646           will fail since it requires the userinfo.  Now, the userinfo
9647           is allocated as "" if actual userinfo does not exist.  Actually,
9648           it must exist and it is totally Ok to drop client connections
9649           that does not announce the userinfo.  However, we will make
9650           this workaround for now.
9651
9652         * Added silc_net_get_remote_port into lib/silcutil/silcnet.[ch]
9653           to return the remote port by socket.
9654
9655 Mon Feb 19 14:26:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9656
9657         * Changed SILC_SERVER_COMMAND_EXEC_PENDING macro to the name
9658           SILC_SERVER_PENDING_EXEC and added an new macro
9659           SILC_SERVER_PENDING_DESTRUCTOR which is called to free the
9660           data or when error occurs while processing the pending command.
9661
9662           Added new argument `destructor' into silc_server_command_pending
9663           and to the SilcServerCommandPending object.  This destructor is
9664           now called after calling the pending callback or if error occurs
9665           immediately.  If error occurs the actual pending callback won't
9666           be called at all - only the destructor.  The destructor may be
9667           NULL if destructor is not needed.
9668
9669           All this applies for client library code as well.  Similar
9670           changes were made there as well for the pending commands.
9671
9672           In the client, the application must now allocate the
9673           SilcClientCommandContext with the silc_client_command_alloc
9674           function.
9675
9676         * Added reference counter to the SilcServerCommandContext.  Added
9677           function silc_server_command_alloc and silc_server_command_dup
9678           functions.
9679
9680           Same type of functions added to the client library for the same
9681           purpose as well.
9682
9683         * Removed the cmd_ident from IDListData away since it is now
9684           global for all connections.  It is the command identifier used
9685           in command sending and with pending commands.  The affected file
9686           is silcd/idlist.h.
9687
9688         * Added reference counter to the SilcSocketConnection objecet to
9689           indicate the usage count of the object.  The object won't be
9690           freed untill the reference counter hits zero.  Currently only
9691           server uses this, and client ignores it.  The client must be
9692           set to use this too later.  The affected files are
9693           lib/silccore/silcsockconn.[ch].  Added also the function
9694           silc_socket_dup to increase the reference counter.
9695
9696           This was mainly added because it is possible that the socket
9697           is removed underneath of pending command or other async
9698           operation.  Now it won't be free'd and proper DISCONNECTING
9699           flags, etc. can be set to avoid sending data to connection that
9700           is not valid anymore.
9701
9702         * Added SILC_SET_DISCONNECTING to server.c when EOF is read from
9703           the connection.  After that it sets SILC_SET_DISCONNECTED.
9704           It is, however, possible that the socket data is not still freed.
9705           The silc_server_packet_process now checks that data is not
9706           read or written to connection that is DISCONNECTED.  The socket
9707           get's freed when the reference counter hits zero.
9708
9709 Mon Feb 19 00:50:57 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9710
9711         * Changed the client operation API: channel_message operation's
9712           `sender' is now the client entry of the sender, not the nickname
9713           and the `channel' is the channel entry, not the channel name.
9714
9715           In the private_message operation the `sender' is now also the
9716           client entry of the sender not the nickname.
9717
9718           Affected file is lib/silcclient/ops.h and all applications
9719           using the client operations.
9720
9721 Sat Feb 17 22:11:50 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9722
9723         * Moved the calling of ops->connect() from connect_to_server_final
9724           into receive_new_id functin since that is the point when the
9725           client is actually allowed to send traffic to network.  The
9726           affected file is lib/silcclient/client.c.
9727
9728 Sat Feb 17 13:15:35 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9729
9730         * When receiving NEW_CHANNEL_LIST, NEW_CHANNEL_USER_LIST,
9731           NEW_ID_LIST and SET_MODE_LIST packets, broadcast the list packet
9732           (if needs broadcasting) instead of broadcasting the packets one
9733           by one which would make a burst in the network traffic.
9734
9735         * Added `broadcast' argument to the functions in silcd/server.[ch]
9736           silc_server_create_new_channel[_with_id] to indicate whether
9737           to send New Channel packet to primary router.
9738
9739 Sat Feb 17 01:06:44 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9740
9741         * Added new function into the silcd/server.[ch] files:
9742           silc_server_create_new_channel_with_id to create new channel with
9743           already existing Channel ID.
9744
9745         * Added new packet type SILC_PACKET_SET_MODE_LIST into the file
9746           lib/silccore/silcpacket.h.  This packet is used t send list of
9747           Set Mode payloads inside one packet.  Server uses this to set
9748           the modes for the channels and clients on those channels, that it
9749           announced to the router when it connected to it.  The protocol
9750           specification has been updated accordingly.
9751
9752         * The silc_server_new_channel did not handle the packet coming
9753           from normal server as it normally does not send that.  However,
9754           when it announces its channels it does send it.  Implemented
9755           the support for that.
9756
9757         * Added SILC_ID_CHANNEL_COMPARE macro to compare to Channel ID's
9758           into the file lib/silccore/id.h.
9759
9760 Fri Feb 16 23:57:29 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9761
9762         * Fixed memory leaks in the functions silc_idlist_del_client,
9763           silc_idlist_del_channel and silc_idlist_del_server in the file
9764           silcd/idlist.c.  All of those leaked like a sieve.
9765
9766         * Fixed some small memory leaks in the client's function
9767           silc_client_notify_by_server.
9768
9769         * Added functions into silcd/server.c: silc_server_announce_clients,
9770           silc_server_announce_channels and silc_server_announce_server.
9771           These functions are used by normal and router server to announce
9772           to its primary router about clients, channels and servers (when
9773           router) that we own.  This is done after we've connected to the
9774           router.
9775
9776           These functions effectively implements the following packet types:
9777           SILC_PACKET_NEW_CHANNEL_LIST, SILC_PACKET_NEW_CHANNEL_USER_LIST
9778           and SILC_PACKET_NEW_ID_LIST.
9779
9780         * Added new functions into the silcd/packet_receive.[ch]:
9781           silc_server_new_id_list, silc_server_new_channel_list and
9782           silc_server_new_channel_user_list to handle the incoming
9783           NEW_ID_LIST, NEW_CHANNEL_LIST and NEW_CHANNEL_USER_LIST packets.
9784
9785         * Added support of changing Channel ID in the function
9786           silc_server_replace_id.  If the server that announces a channel
9787           to the router already exists in the router (with same name but
9788           with different Channel ID), router is responsible to send
9789           Replace ID packet to the server and force the server to change
9790           the Channel ID to the one router has.
9791
9792         * Added new notify type SILC_NOTIFY_TYPE_CHANNEL_CHANGE to notify
9793           client that the Channel ID has been changed by the router.  The
9794           normal server sends this to the client.  Client must start using
9795           the new Channel ID as the channel's ID.
9796
9797           Implemented handling of this new type into lib/silcclient/client.c
9798           into the function silc_client_notify_by_server.
9799
9800         * Added new function silc_idlist_replace_channel_id into the files
9801           silcd/idlist.[ch] to replace the Channel ID.
9802
9803 Fri Feb 16 14:14:00 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9804
9805         * Call silc_server_command_identify_check always when processing
9806           the IDENTIFY command in silcd/command.c
9807
9808 Thu Feb 15 20:07:37 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9809
9810         * Added new packet type SILC_PACKET_HEARTBEAT that is used to
9811           send keepalive packets.  The packet can be sent by clients,
9812           servers and routers.
9813
9814           Added function silc_socket_set_heartbeat into the file
9815           lib/silccore/silcsockconn.[ch] to set the heartbeat timeout.
9816           If not set, the heartbeat is not performed.  The actual
9817           heartbeat is implemented in the low level socket connection
9818           library.  However, application is responsible of actually
9819           sending the packet.
9820
9821           Added silc_server_send_heartbeat to send the actual heartbeat
9822           packet into silcd/packet_send.[ch].  Server now performs
9823           keepalive with all connections.
9824
9825         * Added silc_task_get_first function into lib/silcutil/silctask.c
9826           to return the timeout task with shortest timeout.  There was a bug
9827           in task unregistration that caused problems.  TODO has been
9828           updated to include that task system must be rewritten.
9829
9830         * The client library will now resolve the client information when
9831           receiving JOIN notify from server for client that we know but
9832           have incomplete information.
9833
9834         * Rewrote parts of silc_server_remove_from_channels and
9835           silc_server_remove_from_one_channel as they did not remove the
9836           channel in some circumstances even though they should've.
9837
9838         * Encryption problem encountered in server:
9839
9840           The LEAVE command used to send the Channel Key packet to the
9841           router immediately after generating it.  However, the code
9842           had earlier sent Remove Channel user packet but not immediately,
9843           ie. it was put to queue.  The order of packets in the router
9844           was that Channel Key packet was first and Remove Channel User
9845           packet was second, even though they were encrypted in the
9846           reverse order.  For this reason, MAC check failed.  Now, this
9847           is fixed by not sending the Channel Key packet immediately but
9848           putting it to queue.  However, this is more fundamental problem:
9849           packets that are in queue should actually not be encrypted
9850           because packets that are sent immediately gets encrypted
9851           actually with wrong IV (and thus MAC check fails).  So, packets
9852           that are in queue should be encrypted when they are sent to
9853           the wire and not when they put to the queue.
9854
9855           However, the problem is that the current system has not been
9856           designed to work that way.  Instead, the packet is encrypted
9857           as soon as possible and left to the queue.  The queue is then
9858           just purged into wire.  There won't be any fixes for this
9859           any time soon.  So, the current semantic for packet sending
9860           is as follows:
9861
9862           o If you send packet to remote host and do not force the send
9863           (the packet will be in queue) then all subsequent packets to the
9864           same remote host must also be put to the queue.  Only after the
9865           queue has been purged is it safe again to force the packet
9866           send immediately.
9867
9868           o If you send all packets immediately then it safe to send
9869           any of subsequent packets through the queue, however, after
9870           the first packet is put to queue then any subsequent packets
9871           must also be put to the queue.
9872
9873           Follow these rules and everything works fine.
9874
9875 Thu Feb 15 14:24:32 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9876
9877         * Added new function silc_server_remove_clients_by_server to
9878           remove all client entries from ID list when the server connection
9879           is lost.  In this case it is also important to invalidate all
9880           client entires as they hold the invalid server entry.  This
9881           fixes fatal bug when server has lost connection and will reconnect
9882           again.
9883
9884 Wed Feb 14 16:03:25 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9885
9886         * Made some sanity checks to silc_server_daemonise like to check
9887           whether the requested user and group actually exists.
9888
9889         * Added sanity check to SKE's silc_ske_responder_finish to check
9890           that the public and private key actually is valid.
9891
9892         * Invalidate the client's nickname when receiving Replace ID
9893           packet and the Client ID is being replaced.  This means that the
9894           server will query the nickname if someone needs it (client)
9895           a bit later.
9896
9897         * Sort the ID Cache in client library when the ID Cache data
9898           has changed (needs sorting).
9899
9900         * Do not allow for SILC client to create several connections to
9901           several servers.  The client does not support windows right now
9902           and generating multiple connections causes weird behaviour.
9903
9904           Irssi-silc client does support windows and can handle several
9905           connections without problems, see: www.irssi.org and SILC plugin.
9906
9907         * Fixed some places where client was added to the IDList.  The
9908           rule of thumb is following (in order to get everything right):
9909           If the client is directly connected local client then the
9910           `connection' argument must be set and `router' argument must be
9911           NULL to silc_idlist_add_client function.  If the client is not
9912           directly connected client then the `router' argument must
9913           bet set and the `connection' argument must be NULL to the
9914           silc_idlist_add_client function.
9915
9916         * The funtion silc_server_packet_send_local_channel actually did
9917           not check whether the client was locally connected or not.  It
9918           does that now.  Fixed a bug related to LEAVE command.
9919
9920         * Fixed Remove Channel User payload parsing bug in server's
9921           silcd/packet_receive.c.  Fixed a bug related to LEAVE command.
9922
9923         * The server's silc_server_save_channel_key now checks also the
9924           global ID list for the channel as it might not be in the local
9925           list.  Fixed a bug related to LEAVE command.
9926
9927         * Is this the end of the [<unknown>] buglet that has been lurking
9928           around for a long time?  A little for loop fix in server's
9929           silc_server_command_whois_parse that is used by both IDENTIFY
9930           and WHOIS command.  At least, this was a clear bug and a cause
9931           of one type of [<unknown>] buglet.
9932
9933         * WHOIS and IDENTIFY commands call the function
9934           silc_server_command_[whois/identify]_check function even if
9935           we are not router server.
9936
9937 Tue Feb 13 19:55:59 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9938
9939         * Added --with-gmp configuration option.  If set the GMP
9940           is always compiled in the SILC source tree.  If not set then
9941           it is checked whether the system has the GMP3 installed.  If
9942           it has then the GMP won't be compiled (the system's headers
9943           and library is used), if it doesn't have it then the GMP is
9944           compiled in the SILC source tree.
9945
9946 Mon Feb 12 11:20:32 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9947
9948         * Changed RSA private exponent generation to what PKCS #1
9949           suggests.  We try to find the smallest possible d by doing
9950           modinv(e, lcm(phi)) instead of modinv(e, phi).  Note: this is
9951           not security fix but optimization.
9952
9953 Sun Feb 11 18:19:51 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9954
9955         * Added new config entry [Identity] to fork the server and run
9956           it as specific user and group.  A patch from Bostik.
9957
9958         * Imported Dotconf configuration library into lib/dotconf.
9959           This will be used to create the SILC configuration files later.
9960           It will appear in the distsribution after this commit.
9961
9962 Sat Feb 10 21:13:45 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9963
9964         * A big code auditing weekend happening.  Auditing code for
9965           obvious mistakes, bugs and errors.  Also, removing any code
9966           that is obsolete.
9967
9968           Removed files for being obsolete:
9969
9970           o lib/silcutil/silcbuffer.c (the buffer interface is entirely in
9971           inline in the file lib/silcutil/silcbuffer.h)
9972
9973           o lib/silcutil/silcbufutil.c (the header has inline versions)
9974
9975           Changed code to fix possible error conditions:
9976
9977           o The buffer formatting routines now check that the destination
9978           buffer really has enough space to add the data.  This applies for
9979           both buffer formatting and unformatting
9980           (lib/silcutil/silcbuffmt.[ch]).  Also, the entire buffer
9981           unformatting was changed to accomodate following rules:
9982           XXX_*STRING_ALLOC will allocate space for the data into the pointer
9983           sent to the function while XXX_*STRING will not allocate or copy
9984           the data into the buffer.  Instead it sets the pointer from the
9985           buffer into the pointer sent as argument (XXX_*STRING used to
9986           require that the pointer must be allocated already).  This change
9987           makes this whole thing a bit more consistent and more optimized
9988           (note that the data returned in the unformatting with XXX_*STRING
9989           must not be freed now).  The routines return now -1 on error.
9990
9991           o Tried to find all code that use buffer_format and buffer_unformat
9992           and added return value checking to prevent formatting and
9993           especially unformatting errors and possible subsequent fatal
9994           errors.
9995
9996           o Changed ske->x and ske->KEY to mallocated pointers in
9997           lib/silcske/silcske.h.  Fixed possible data and memory leak.
9998
9999           o Added return value checking to all *_parse* functions.  Fixed
10000           many memory leaks as well.
10001
10002           o Added length argument to silc_id_str2id in lib/silccore/id.[ch]
10003           so that buffer overflows would not happen.  All code now also
10004           checks the return value as it can fail.
10005
10006 Mon Feb  5 20:08:30 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10007
10008         * Added reconnection support to server if the normal server looses
10009           its connection to the router (for example if router is rebooted).
10010           The server performs normal reconnection strategy implemented
10011           to the server.  Affected file silcd/server.c.
10012
10013 Sun Feb  4 13:18:32 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10014
10015         * Added new packet type SILC_PACKET_SET_MODE that is used to
10016           distribute the information about changed modes (for clients,
10017           channels and clients channel modes) to all routers in the
10018           network.  Updated the protocol specification accordingly.
10019
10020           Added functions into silcd/packet_send.c and
10021           silcd/packet_receive.c: silc_server_send_set_mode,
10022           silc_server_set_mode.
10023
10024           Added new files silcmode.[ch] into lib/silccore that implements
10025           the encoding and decoding of Set Mode Payload.  Added new type
10026           SilcSetModePayload.  Moved the definitions of different modes
10027           from lib/silccore/silcchannel.h into lib/silccore/silcmode.h.
10028
10029 Sat Feb  3 15:44:54 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10030
10031         * Oops, a little mistake in server's connection authentication
10032           protocol.  The protocol is not ended with FAILURE but with
10033           SUCCESS if the authentication is Ok. :)  Affected file is
10034           silcd/protocol.c.
10035
10036         * Implemented NICK_CHANGE notify handling in server in the file
10037           silcd/packet_receive.c  The NICK_CHANGE notify is distributed to
10038           the local clients on the channel.  After the changing nickname
10039           in router environment snhould work and the [<unknown>] nickname
10040           should appear no more.
10041
10042           The silc_server_replace_id function that receives the Replace ID
10043           payload now sends the NICK_CHANGE notify type also in the file
10044           silcd/packet_receive.c
10045
10046         * Changed WHOIS and IDENTIFY command to support the maximum amount
10047           of arguments defined in protocol specs (3328 arguments).  This
10048           fixed a bug that caused problems when there were more than three
10049           users on a channel.
10050
10051 Fri Feb  2 11:42:56 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10052
10053         * Added extra parameter, command identifier, to the
10054           silc_client_send_command so that explicit command identifier
10055           can be defined.
10056
10057           Changed that ID list routines uses specific command identifier
10058           when sending WHOIS/IDENTIFY requests to the server so that they
10059           can be identified when the reply comes back.
10060
10061           Affected files lib/silcclient/command.[ch],
10062           lib/silcclient/client.c and lib/silcclient/idlist.[ch].
10063
10064         * Added `sender' argument to silc_server_packet_send_to_channel
10065           to indicaet the sender who originally sent the packet to us
10066           that we are now re-sending.  Ignored if NULL.  Affected file
10067           silcd/packet_send.[ch].
10068
10069         * Added some server statistics support in silcd/server_internal.h
10070           SilcServerStatistics structure and around the server code.  Also
10071           send some nice statistics information when client is connecting
10072           to the client.
10073
10074 Thu Feb  1 23:31:21 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10075
10076         * Fixed channel ID decoding in server's JOIN command reply in
10077           silcd/command_reply.c
10078
10079         * Fixed braodcasting of replace ID payload to not to send it if
10080           we are standalone server in silcd/packet_receive.c.
10081
10082         * Fixed all channel message sending routines to not to send
10083           packets to clients that has router set, since they are routed
10084           separately in the same function earlier.  Affects file
10085           silcd/packet_send.c and all channel packet sending functions.
10086
10087         * In USERS reply, res_argv[i] are not allocated, the table
10088           is allocated.  Thus changed that free the table, not its
10089           internals.
10090
10091         * In server's whois_check and identify_check if the client is
10092           locally connected do not send any WHOIS commands - they are not
10093           needed.
10094
10095 Thu Feb  1 21:32:27 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10096
10097         * Fixed some minor bugs in client when sending WHOIS command.  The
10098           arguments was in wrong order.
10099
10100         * Removed statis function add_to_channel from server in
10101           silcd/command.c that was previously used with the joining but
10102           is obsolete now.
10103
10104         * Tested USERS command in router environment successfully with two
10105           routers, two servers and two clients.
10106
10107 Thu Feb  1 00:54:26 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10108
10109         * Reorganized the USERS command and command reply in client library
10110           in lib/silcclient/command.c and lib/silcclient/command_reply.c.
10111           When the command is given by user we register a pending command
10112           callback that will reprocess the command after the reply has been
10113           received from the server.  When reprocessing the packet we then
10114           display the information.  Thus, the USERS information is displayed
10115           now in the command callback instead of in the command reply
10116           callback.  The processing of the command is same as previously
10117           when server has sent the command reply in the JOINing process.
10118
10119         * Added to USERS command in silcd/command_reply.c to join the client,
10120           we didn't use to know about, to the channel after we've created
10121           a client entry for it.  Also, for clienet we did know already still
10122           check whether it is on the channel or not and add it if not.
10123
10124         * Removed silc_server_command_join_notify as the function and its
10125           use was obsolete.
10126
10127 Tue Jan 30 22:39:15 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10128
10129         * Changed the client's pending command handling to the same as the
10130           server's pending command handling.  It is also now possible to
10131           execute command reply functions from other command reply
10132           function as the function callbacks for commands and command
10133           replies are one and same.  The pending commands are not static
10134           list anymore, it is mallocated SilcDList in lib/silcclient/client.h
10135           in client connection context.  Thus, pending commands are server
10136           connection specific as it is convenient.
10137
10138           Changed the function silc_client_command_pending and
10139           silc_client_command_pending_del and added new function
10140           silc_client_command_pending_check.  Removed the
10141           SILC_CLIENT_CMD_REPLY_EXEC, and SILC_CLIENT_PENDING_COMMAND_CHECK
10142           macros.
10143
10144         * Added cmd_ident, current command identifier, to the client
10145           connection context in lib/silcclient/client.h to keep track on
10146           command identifiers used in command sending.  Client's command reply
10147           function handling now supports the mandatory command identifiers.
10148
10149         * Added SILC_CLIENT_COMMAND_EXEC_PENDING macros to all command reply
10150           funtions in client to fully support pending command callbacks.
10151
10152         * NOTE: the name_list in USERS (old NAMES) command is NOT sent anymore
10153           as one of the arguments to the application in the command reply
10154           client operation.
10155
10156         * NOTE: The FORWARDED flag is depracated.  It used to be depracated
10157           before first releasing SILC but came back.  Now it is removed again
10158           and should come back nomore.  The FORWARDED flag was used only
10159           by the JOINing procedure by forwarding the command packet to router.
10160           Now, the JOINing procedure has been changed to more generic (due
10161           to various router environment issues) and FORWARDED is not needed
10162           anymore for anything.  The protocol specification is yet to be
10163           updated.
10164
10165           Now, removed silc_server_packet_forward from server and the flag
10166           SILC_PACKET_FORWARDED from lib/silccore/silcpacket.h.
10167
10168 Tue Jan 30 00:05:05 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10169
10170         * Renamed NAMES command to USERS command.  The NAMES was named that
10171           due to historical reasons.  Now it is renamed.  Also, rewrote
10172           parts of the USERS command.  The nickname list is not sent anymore
10173           by the server.  Only Client ID and mode lists are sent in the USERS
10174           command.  Changed this also to the protocol specification.
10175
10176           The client now resolves the names and stuff after it receives
10177           the USERS list from the server when joining to the channel.
10178
10179         * WHOIS and IDENTIFY commands has been changed to support multiple
10180           Client ID's per command.  One can now search for multiple users
10181           in the network by sending only one WHOIS or IDENTIFY command.
10182           Changed the code and the protocol specifications.
10183
10184         * Removed silc_server_command_identify_parse and changed that IDENTIFY
10185           uses silc_server_command_whois_parse to parse the request. */
10186
10187         * If normal server, do not parse the WHOIS and IDENTIFY requests
10188           before sending it to the router.  Saves some time.
10189
10190 Sun Jan 28 16:19:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10191
10192         * Fixed JOIN command on client library.  Wrong number of arguments
10193           used to crash the client.
10194
10195         * Added silc_server_channel_has_global function to check whether
10196           channel has global users or not.
10197
10198         * Added silc_server_channel_has_local function to check whether channel
10199           has locally connected clients on the channel.
10200
10201         * The silc_server_remove_from_one_channel now checks whether the
10202           channel has global users or not after given client was removed from
10203           the channel.  It also checks whether the channel has local clients
10204           on the channel anymore.  If it does not have then the channel entry
10205           is removed as it is not needed anymore.
10206
10207         * The silc_server_notify now checks on JOIN notify whether the joining
10208           client is one of locally connected or global.  If it is global then
10209           the channel has now global users on the channel and that is marked
10210           to the channel entry.  Also, it now saves the global client to
10211           global list who is joining and JOINs it to the channel.  This is
10212           for normal server, that is.
10213
10214           Changed silc_server_send_notify_on_channel,
10215           silc_server_packet_relay_to_channel and
10216           silc_server_packet_send_to_channel check if we are normal server
10217           and client has router set (ie. global client) do not send the
10218           message to that client, as it is already routed to our router.
10219
10220         * Implemented LEAVE notify type handling in silc_server_notify
10221           function.
10222
10223         * Tested LEAVE command in router environment successfully.  Tested
10224           with two routers, two servers and two clients.
10225
10226         * Updated TODO.
10227
10228         * idlist_find_xxx_by_id routines now dumps the ID on the debug mode.
10229
10230         * Implemented SIGNOFF notify type handling in silc_server_notify
10231           function.
10232
10233         * silc_server_remove_id now removes the client entry from all channels
10234           it has joined and thusly sends SIGNOFF notify type.
10235
10236         * Rewrote the NAMES list generation in server by removing two excess
10237           loops.  The lists are created now inside one loop.
10238
10239 Sat Jan 27 22:34:56 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10240
10241         * silc_server_remove_channel_user checks now also global list
10242           for channel and client.
10243
10244         * silc_server_new_channel_user checks now both local and global
10245           list for channel and client.  Fixed a bug in client id decoding.
10246           Used to decode wrong buffer.
10247
10248         * silc_server_channel_message checks now both local and global
10249           list for channel entry.
10250
10251         * Tested channel joining (hence JOIN) in router environment
10252           successfully.  Tested with two routers, two servers and two
10253           clients.
10254
10255         * Tested channel message sending in router environment successfully.
10256
10257 Thu Jan 11 03:22:57 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10258
10259         * Added silc_server_save_channel_key into server.[ch] to save the
10260           received channel key in Channel Key payload processing. It is
10261           also used in JOIN command reply handling.
10262
10263           Equivalent function silc_client_save_channel_key added into
10264           client.[ch] into client library.
10265
10266         * Changed JOIN command reply to send information whether the channel
10267           was created or not (is existing already) and the channel key
10268           payload.  Changed protocol specs accordingly.
10269
10270         * Fixed bugs in WHOIS and IDENTIFY command reply sending when
10271           the request was sent by ID and not by nickname.  Crashed on
10272           NULL dereference.
10273
10274 Sat Dec 23 21:55:07 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10275
10276         * Fixed a bug in Client library.  IDENTIFY and WHOIS reply functions
10277           now correctly save the received data.
10278
10279         * silc_server_free_sock_user_data now notifies routers in the
10280           network about entities leaving the network.
10281
10282           At the same time implemented functions silc_server_remove_id
10283           and silc_server_send_remove_id to receive and send REMOVE_ID
10284           packets.  The packet is used to notify routers in the network
10285           about leaving entities.  The ID removed will become invalid in
10286           the network.
10287
10288         * Added function silc_idlist_del_server into server. Removes and
10289           free's server entry from ID list.
10290
10291         * silc_server_private_message function now checks, if we are router,
10292           that the destination ID really is valid ID, naturally.
10293
10294         * In router when NEW_ID packet is received (for new client) the
10295           hash of the Client ID is saved in the ID Cache but the
10296           client->nickname is set to NULL, instead of putting the hash
10297           to it as well.
10298
10299           IDENTIFY command now also checks that client->nickname must be
10300           valid. If it is not if will request the data from the server who
10301           owns the client.  Added new function
10302           silc_server_command_identify_check.
10303
10304         * Added silc_command_set_command into lib/silccore/silcommand.[ch]
10305           to set the command to already allocated Command Payload.
10306
10307         * Tested private message sending in router environment with two
10308           routers, two servers and two clients.  Fixed minor bugs and now
10309           it works fine.
10310
10311         * Fixed segfault from client's NAMES command. Used to crash if
10312           not on any channel.
10313
10314         * Forwarded packets must not be routed even if it is not destined
10315           to the receiver.  Changed server code comply with this.
10316
10317 Sun Dec 17 14:40:08 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10318
10319         * Added `require_reverse_mapping' boolean value to ServerParams
10320           structure. If TRUE (not default) the server will require that
10321           the connecting host has fully qualified domain name.
10322
10323           If the reverse mapping is not required and hostname could not be
10324           found the IP address is used as hostname.
10325
10326 Sat Dec 16 17:39:54 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10327
10328         * Implemented version string checking to both client and server.
10329           The check is incomplete currently due to the abnormal version
10330           strings used in development version of SILC.
10331
10332         * Changed all command functions in server to use the new
10333           CHECK_ARGS macro.
10334
10335 Fri Dec 15 15:55:12 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10336
10337         * Changed char *data to unsigned char *data in ID Cache system to
10338           support binary data as ID Cache data. Changed code to support
10339           binary data in lib/silccore/idcache.c.
10340
10341         * Renamed silc_server_packet_relay_command_reply to
10342           silc_server_command_reply as it is normal packet receiving
10343           function. Rewrote the function to accept command replys for
10344           servers and not only for clients.
10345
10346         * Mark remote router always as registered server if we are connecting
10347           to it.  Otherwise, commands sent by the router to us are ignored.
10348
10349         * All ID List find routines now returns the ID Cache Entry pointer
10350           as well if requested.
10351
10352         * WHOIS command works now in router environment, tested with two
10353           routers, two servers and two clients.
10354
10355         * Cleaned up and rewrote IDENTIFY command. IDENTIFY should work now
10356           in router environment (as it is almost equivalent to WHOIS) but
10357           hasn't been tested thoroughly.  Added new functions:
10358
10359           silc_server_command_identify_parse
10360           silc_server_command_identify_send_reply
10361           silc_server_command_identify_from_client
10362           silc_server_command_identify_from_server
10363
10364         * Disabled route cache adding because adding two different ID's with
10365           same IP replaces the old cache entry thus giving wrong route.
10366           The entry->router->connection is always the fastest route anyway
10367           so route cache may not be needed.  Of course, new routes maybe
10368           established after receiving the ID when the entry->router->connection
10369           might not be anymore the most optimal.
10370
10371 Thu Dec 14 15:55:35 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10372
10373         * Add route cache for received ID for fast routing.
10374
10375         * Added silc_server_packet_route to route received packet on router
10376           that is not destined to us.
10377
10378         * Renamed silc_server_get_route to silc_server_route_get.
10379
10380         * Added id_string and id_string_len fields into SilcServer to
10381           include encoded ServerID for fast comparing without excess
10382           encoding of the ID's.
10383
10384         * Cleaned up WHOIS command on server side. Added following static
10385           functions:
10386
10387           silc_server_command_whois_parse
10388           silc_server_command_whois_check
10389           silc_server_command_whois_send_reply
10390           silc_server_command_whois_from_client
10391           silc_server_command_whois_from_server
10392
10393         * Added macro SILC_SERVER_COMMAND_CHECK_ARGC to check mandatory
10394           arguments in command replies. All command functions should be
10395           updated to use this macro.
10396
10397 Sun Dec 10 23:52:00 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10398
10399         * Minor typo fixes on command reply handling on server.
10400
10401 Tue Nov 28 11:05:39 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10402
10403         * Added silc_server_command_add_to_channel internal routine to add
10404           the client to the channel after router has created the channel and
10405           sent command reply to the server.
10406
10407         * Added generic silc_server_send_command to send any command from
10408           server.
10409
10410         * Use static buffer with ID rendering instead of duplicating data.
10411
10412 Mon Nov 27 21:39:40 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10413
10414         * Fixed a channel user mode bug when joining to a channel server gave
10415           everybody channel founder rights, oops.
10416
10417         * We mark ourselves as the router of the incoming server connection
10418           if we are router ourselves.  This way we can check in some packet
10419           sending functions whether it is locally connected server.  For
10420           incoming router connections we put NULL.
10421
10422         * For router sending packets locally means now always sending the
10423           packet cell wide; to local clients and local servers.  For normal
10424           server sending packet locally means sending it to only local
10425           clients.
10426
10427         * Fixed the JOIN command to really work in router environment.  If the
10428           channel is created it is always created by the router.  Router is
10429           also responsible of making the initial joining to the channel,
10430           sending JOIN notify to the sending server and distributing
10431           NEW_CHANNEL and NEW_CHANNEL_USER packets.  Hence, if the channel
10432           does not exist server doesn't do anything else but forward the
10433           command to the router which performs everything.
10434
10435         * Added silc_server_send_channel_key function to send the Channel Key
10436           payload.
10437
10438         * Added silc_server_create_channel_key to create new channel key.  The
10439           channel key is now re-generated everytime someone joins or leaves
10440           a channel, as protocol dictates.  Note: channel->key_len is the
10441           key length in bits.
10442
10443 Wed Nov 22 22:14:19 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10444
10445         * Splitted server.[ch] finally.  Created now packet_send.[ch] and
10446           packet_receive.[ch] to separate packet sending and receiving
10447           routines.  The server.[ch] now includes everything else including
10448           actual packet processing (writing and reading data) and other
10449           server issues.
10450
10451           Renamed silc_server_private_message_send_internal to
10452           silc_server_send_private_message.  The routine is still though
10453           used only to relay private messages as server does not send
10454           private messages itself.
10455
10456           Renamed silc_server_new_channel to silc_server_create_new_channel
10457           and added new function sicl_server_new_channel that handles the
10458           incoming New Channel packet.  Added also new sending function
10459           silc_server_send_new_channel to send New Channel Payload.
10460
10461         * Added new function silc_server_notify to process incoming notify
10462           packet to the server/router. Server may then relay the notify
10463           to clients if needed.
10464
10465         * Added new function silc_server_new_channel_user to process incoming
10466           New Channel User packet.  Router will redistribute the packet and
10467           send JOIN notify to its local clients and locally connected servers
10468           if needed.  Normal server will send JOIN notify to its local client
10469           on same channel when received this packet.  Added also corresponding
10470           sending function silc_server_send_new_channel_user to sent the
10471           payload.
10472
10473         * Added boolean route argument to send_notif_to_channel and
10474           packet_send_to_channel functions to attempt to route the packet
10475           if it is TRUE and send only locally if it is FALSE.
10476
10477 Tue Nov 21 19:49:31 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10478
10479         * silc_server_replace_id now broadcasts the received replace ID
10480           packet if it is not broadcast packet already. The router must
10481           broadcast to inform other routers about changed ID.
10482
10483         * Added backpointer to server's router into SilcServer context in
10484           silcd/server_internal.h.
10485
10486         * Fixed silc_server_packet_broadcast to send correct broadcast
10487           packets.
10488
10489         * The channel key is now distributed to the local client as soon
10490           as it is received from the router (in router environment) so that
10491           no other packet may be sent for the channel until client has
10492           received the key.
10493
10494         * silc_server_remove_channel_user now broadcasts the received
10495           Remove Channel User packet if it is not broadcast packet already.
10496           The router must broadcast to inform other routers about removed
10497           channel user.
10498
10499         * Added users field into SilcPacketContext that is a reference count
10500           of the context.  One can increase the reference count by calling
10501           silc_packet_context_dup which is now changed to just increase the
10502           reference count instead of duplicating the data.  The reference
10503           count is decresed by calling silc_packet_context_free that will
10504           free the data after the reference count hits zero.
10505
10506           For now on the packet context and everything allocated into it
10507           (including the raw packet from network) must be freed by calling
10508           the new silc_packet_context_free function.  Added also new function
10509           silc_packet_context_alloc that must be used now to allocate the
10510           context.  This also means that if a routine is asynchronous from
10511           silc_[client/server]_packet_parse_type the packet context must
10512           be duplicated by calling silc_packet_context_dup.  Otherwise it
10513           gets free'd after silc_[client/server]_packet_parse_type returns.
10514           Also, one must remember that if packet is duplicated then its
10515           reference count must be decresed by calling the free function as
10516           many times as it was duplicated.
10517
10518         * Changed SilcBuffer field from protocol contexts to SilcPacketContext
10519           from both client and server.
10520
10521 Mon Nov 20 23:47:03 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10522
10523         * Made joining to a channel working in router environment.
10524
10525         * Cleaned up JOIN command on server side and create function
10526           silc_server_command_join_channel internal routine to make the
10527           joining happen.
10528
10529 Thu Nov  9 21:12:39 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10530
10531         * Changed silc_command_pending list to SilcDList.  Also, added
10532           `ident' field to SilcServerCommandPending structure to identify
10533           the reply and to call correct callback.
10534
10535           Added silc_server_command_pending_check function to replace the
10536           corresnponding macro.  The silc_command_pending list is not
10537           extern anymore.
10538
10539         * Added silc_command_set_ident into lib/silccore/silccommand.[ch]
10540           to set identifier to previously allocated Command Payload.  It
10541           is used to set identifier for command when resending Command
10542           Payload.
10543
10544         * Added silc_command_payload_encode_payload to encode Command
10545           Payload buffer from SilcCommandPayload structure.
10546
10547         * Added silc_argument_payload_encode_payload to encode Argument
10548           payload buffer from SilcArgumentPayload structure.
10549
10550 Wed Nov  8 21:03:28 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10551
10552         * Changed WHOIS command to support router connection on server side.
10553           The whois request is always sent to router unless the server is
10554           standalone server.  After server has received the reply from the
10555           router will it send the reply to the client.
10556
10557         * Added silc_server_packet_broadcast into silcd/server.[ch] to
10558           broadcast received broadcast packet.  The function is used only
10559           by router.  The broadcast packet is always sent to the router's
10560           primary route.
10561
10562         * Added silc_id_render function in lib/silcutil/silcutil.[ch] to
10563           render given ID to printable string, for log files for example.
10564
10565 Tue Nov  7 22:14:19 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10566
10567         * Made basic router to router connections working.  At least they
10568           can now connect to each other but nothing really works the way
10569           they are supposed - yet.
10570
10571         * Added new initiator token to RouterConnection configuration
10572           file in silcd/serverconfig.[ch].  It is used to tell whether we
10573           are the initiator to the remote router or whether we'll expect
10574           the other end to connect.
10575
10576         * Moved registering of listener task to silc_server_init, hence
10577           the server starts listenning as soon as it is run, even if it
10578           does not have connections to other routers.  Let's see how well
10579           this will work.
10580
10581         * Changed default connection retry timeouts for more suitable in
10582           silcd/server.h.
10583
10584         * Removed cipher and such arguments from silc_idlist_add_client
10585           and silc_idlist_add_server prototypes from silcd/idlist.[ch].
10586           Added new function silc_idlist_add_data to add the keys and stuff
10587           to any ID entry.
10588
10589         * Added SilcIDListData structure and added it to SilcClientEntry
10590           and SilcServerEntry as their first field in the structure.  This
10591           way we can explicitly cast the ID entries to the SilcIDListData
10592           structure and get common data for the entries.  In past, we had
10593           to first check what type of connection it is and then cast it to
10594           correct ID entry type.  Now, we can directly cast the opaque
10595           pointer to the SilcIDListData (no matter what ID entry it actually
10596           is) and get the data needed.
10597
10598 Mon Nov  6 21:56:12 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10599
10600         * Wow, found a bug in scheduler.  The scheduler uninitialized itself
10601           in some circumstances even if threre were timeout tasks, though not
10602           IO tasks, but tasks anyway.  Now fixed.
10603
10604         * Defined SilcServerConnection structure to hold connection specific
10605           stuff about directly connected servers and routers.  The definition
10606           is currently in silcd/server_internal.h.  I thought about having
10607           a bit more important role fro this struct but for now it is used
10608           only when connecting to other server (or router actually).
10609
10610         * Added connecting retry support in server when connecting to
10611           router(s).  The retry feature implement exponential backoff
10612           algorithm.  Also, added SilcServerParams structure to hold default
10613           parameters for server.  For now, it include these retry settings
10614           and are hard coded.  After server is moded to be as Silc Server
10615           Library this structure will be more important.
10616
10617 Sun Nov  5 22:28:44 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10618
10619         * Changed client librarys channel->clients table to SilcList and
10620           changed code accordingly.
10621
10622 Thu Nov  2 16:28:01 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10623
10624         * Changed client's channel table to SilcList and changed code
10625           accordingly.  Also changed SilcChannelClientEntry to include back-
10626           pointer to the channel so that client entry can use that structure
10627           as list as well and we have fast cross-reference to the channel.
10628           This change dramatically decreased the complexity of channel
10629           handling with client entry and vice versa (removed one extra
10630           loop when searching for channel entry from many functions).
10631
10632         * Changed server->sim from table to SilcDList and changed code
10633           accordingly.
10634
10635         * NAMES command can now be used from user interface.  It will show
10636           the user list on the channel, neatly.
10637
10638         * Added realname pointer to SilcClientEntry in lib/silcclient/idlist.h.
10639           Code now saves realname of the user if it becomes available.
10640
10641         * Renamed configure.in to configure.in.pre and made ./prepare
10642           script to automatically add correct version string to
10643           configure.in which it creates from configure.in.pre.
10644
10645 Wed Nov  1 17:21:26 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10646
10647         * NAMES command reply now shows users mode with the nickname when
10648           joining to channel.
10649
10650         * Moved silc_client_ch[u]mode[_char] functions from
10651           silc/clientutil.[ch] to lib/silcclient/client.[ch].  Though, that
10652           place sucks, they are utility functions and should be in some
10653           other file.
10654
10655         * Fixed some unsigned int's to unsigned short's.  Patch by cras.
10656
10657         * Fixed contrib/getopt*.[ch] to not require config.h.  Patch by
10658           cras.
10659
10660 Tue Oct 31 20:10:37 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10661
10662         * Updated README.
10663
10664         * Added TRQ (efficient deque and list library) into lib/trq.  This is
10665           a very good list library that is currently used in the SILC.  Defined
10666           SilcList API over the library because I didn't like the API very
10667           much.  See lib/trq/silclist.h for the API and examples of how to
10668           use the API.  Fixed various places in the code to use the new
10669           SilcList API. The SilcList is meant for lists that has a structure
10670           already defined as a list.  It is not suitable to add just some
10671           context to the list (in TRQ, the context is the list actually).
10672
10673           So, I defined SilcDList that can be used for the purpose where
10674           predefined list structure does not exit.  This can be used as
10675           such list.  Now some context just can be added to the SilcDList.
10676           Currently this list is not used in the SILC just yet, though there
10677           are a lot places where this can replace dynamically allocated
10678           tables and I will fix these places, later, to use SilcDList.
10679           See lib/trq/silcdlist.h for SilcDList (they are all inline functions,
10680           and use TRQ internally).
10681
10682           Also fixed some annoying warning messages that the original TRQ
10683           code generated.  Also minor changes to TRQ's Makefile.in.
10684
10685         * Added support for querying by Client ID to both WHOIS and
10686           IDENTIFY commands into server, as required by the protocol.
10687
10688         * Removed method function pointers from SilcBuffer structure. They
10689           weren't used to anything and just increased the context size for
10690           no good reason.  This change also made silc_buffer_alloc and
10691           silc_buffer_free functions inline functions.
10692
10693         * Disabled command flooding detection support until it's fixed so
10694           that it accepts commands in but does not execute them more than once
10695           in two seconds.
10696
10697         * Added silc_net_localhost(), to return local hostname, into
10698           lib/silcutil/silcnet.[ch].  Also added client->hostname pointer
10699           that must be initialized before calling silc_client_init.
10700
10701         * Added new function: silc_server_send_notify_on_channels to send
10702           notify messages to all channels client has joined.  It is assured
10703           that the message is sent only once per client.
10704
10705         * Moved silc_log_format (from lib/silcutil/silclog.[ch] into
10706           lib/silcutil/silcutil.[ch] as silc_format function.  The new
10707           function is generic and is used by server as well, not only by
10708           the logging routines.
10709
10710         * Added new SKE status type: SILC_SKE_STATUS_BAD_VERSION to indicate
10711           the provided version string was not acceptable.  Added new function:
10712           silc_ske_check_version into lib/silcske/silcske.h.  The function
10713           must be implemented by the application (client or server) and it
10714           does not reside in the SKE library.  The function checks the version
10715           string remote end sent.
10716
10717         * Added back pointers (to opaque context and to SilcSocketConnection)
10718           into SilcPacketContext structure into lib/silccore/silcpacket.h.
10719
10720         * Added silc_packet_context_dup into lib/silccore/silcpacket.[ch] to
10721           duplicate packet context structure.
10722
10723         * Changed `notify' client operation to send same arguments as client
10724           receives from server except for ID's.  ID's are mapped to correct
10725           ID entry and that is returned.  Also, if channel entry is not sent
10726           by server but the notify is for channel the channel entry is sent
10727           to application (otherwise application doesn't know that it is for
10728           channel (library gets it from packet's Destination ID)).
10729
10730         * Added silc_client_remove_from_channels into client library to
10731           remove a client from all channels it has joined to.  Used when
10732           received SIGNOFF notify from server.  Added also new function
10733           silc_client_replace_from_channels to replace old ID entry with
10734           new ID entry on all channels.  Used when received NICK_CHANGE
10735           notify from server.
10736
10737         * Fixed ID Cache list handling in silc_idlist_get_client in
10738           lib/silcclient/idlist.c.  Also, added silc_idlist_get_client_by_id
10739           to get (or query) client by ID.
10740
10741         * Updated TODO list.
10742
10743         * Added connection authentication status message defined by the
10744           protocol: SILC_CONN_AUTH_OK and SILC_CONN_AUTH_FAILED and added the
10745           support for these into the code in client and server side.
10746
10747         * Added generic function silc_client_send_command to send any command
10748           with variable argument list.  Application should use this function
10749           to send commands if the command functions provided by the library
10750           does not suite for the application's user interface needs.
10751
10752         * Added new `failure' client operation.  Application is notified about
10753           received failure packet if client is executing a protocol.  In this
10754           case the protocol's execution has failed.
10755
10756         * Added SKE's end notify to send the SKE_SUCCESS notify message that
10757           is required by the protocol.
10758
10759         * Added SILC_PROTOCOL_STATE_FAILURE to indicate received failure
10760           packet from remote.  SILC_PROTOCOL_STATE_ERROR indicates local
10761           error at our end.
10762
10763         * Added status flag to SilcSKE object to indicate realtime status
10764           of the SKE protocol.
10765
10766         * Application receives now exactly same command reply arguments as
10767           the library receives from server.  However, if ID is received the
10768           corresponding ID entry is returned to the application (eg. Client
10769           ID is mapped to correct SilcClientEntry entry and that is returned).
10770           Changed command_reply client operation due to this change.
10771
10772         * Changed all ID's in commands and in command replys as ID Payloads.
10773           Change affected both client and server side codes.
10774
10775           All ID's sent in SILC network (with execption of ID's in SILC
10776           Packet header) are sent in ID Payload to support variable length
10777           ID's.
10778
10779         * Server now notifies nick changes and notifies all clients on
10780           the channels about the new nickname (about the new Client ID,
10781           actually).
10782
10783         * Implemented CMODE command to change channel modes. Supports all
10784           channel modes defined by the protocol specs except ban and invite
10785           lists. (Also, private channel key mode is supported but support for
10786           setting private channel key in client is missing, thus, this mode
10787           has no effect on client side (except that server requires that the
10788           client uses private channel key and normal channel traffic does not
10789           work anymore)).
10790
10791           Also, invite mode works per se, but INVITE command does not work
10792           yet correctly, so you can set channel as invite only channel but
10793           inviting clients to the channel does not work (it is yet to be
10794           thought what's the best way to do it).
10795
10796         * Added new command SILC_COMMAND_CUMODE to change user mode on the
10797           channel.  Defined user modes: CHANNEL_FOUNDER and CHANNEL_OPERATOR.
10798           Implemented CUMODE command to change user's mode on the channel.
10799           Supports all modes defined by the protocol specs.
10800
10801         * Added NAMES command reply to return users modes on the channel.
10802
10803         * Removed unnecessary and slow ciphers from lib/silccrypt.
10804
10805         * Set SO_KEEPALIVE option to connection sockets by default.
10806
10807         * Added new command reply status: SILC_STATUS_USER_NOT_ON_CHANNEL.
10808
10809         * Added notify types: MOTD, CMODE_CHANGE and CUMODE_CHANGE.  Also,
10810           redefined the Notify Payload into protocol specs.
10811
10812         * Added silc_id_payload_parse_id to get ID directly from raw
10813           ID payload data.
10814
10815 Mon Oct  9 20:57:02 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10816
10817         * Changed SILC_COMMAND_IDENTIFY in protocol specification to
10818           accept searching by Client ID as well.
10819
10820         * Added support for LEAVE and SIGNOFF notify types in client library.
10821
10822         * Added silc_id_payload_parse_data into lib/silccore/silcpayload.[ch]
10823           to parse ID Payload from raw data.
10824
10825 Sun Oct  8 19:33:08 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10826
10827         * Added flags parameter into silc_ske_assemble_security_properties
10828           function in lib/silcske/silcske.[ch].
10829
10830         * Changed notify client operation to fit better for notify messages
10831           sent by server.  The notify payload received from server is now
10832           passed to the application (after parsing it to SilcNotifyPayload).
10833           It is application's responsibility to retrieve the arguments
10834           from the payload and show the message the way it wants.  The message
10835           sent by server is implementation specific.
10836
10837         * Changed public keys to comply with the protocol specification.
10838           Old public keys are not supported anymore and are not compatible.
10839
10840         * Removed nickname from Channel Payload as the latest draft removed
10841           it.  The client must resolve the nickname from the NAMES command
10842           reply received when it joined the channel.
10843
10844           Also, changed all channel_xxxx_payload to channel_payload_xxxx.
10845
10846 Sat Oct  7 21:55:01 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10847
10848         * Fixed some errors in protocol specification drafts.
10849
10850         * Created lib/silccore/silcnotify.c to implement Notify Payload
10851           encoding and decoding, lib/silccore/silcpayload.[ch] to implement
10852           generic payloads described by protocol specifications.  The file
10853           includes implementations for ID Payload and Argument Payload.
10854
10855         * Changed Command Payload implementation to use the new Argument
10856           Payload.  Changed command_xxxx_payload to command_payload_xxxx
10857           to comply with SILC coding conventions.
10858
10859         * Added suppport for Argument Payload handling in Notify Payload
10860           implementation as protocol requires it.  Added the new support
10861           into server and client lib as well.
10862
10863 Thu Oct  5 21:16:28 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10864
10865         * Added support for multiple nicknames on same channel.  [n] is
10866           added locally to the nickname if there are more than one same
10867           nicknames on the channel.
10868
10869         * Server now sends all nicknames that matched WHOIS request.
10870           Client also shows the list received from server.
10871
10872         * Added TOPIC command to client side.  User can now set and show
10873           current topic on channel.
10874
10875         * Added MOTD command to client and server.  Also, server sends the
10876           motd when client connects to the server.
10877
10878         * Changed version strings to comply ISO 8601.
10879
10880 Wed Oct  4 23:29:06 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10881
10882         * Fixed protocol error handling in client library.  It should now
10883           cope even if the SKE fails for some reason.
10884
10885         * Made new protocol specification drafts for submitting to IETF.
10886
10887         * Implemented TOPIC command to server in silcd/command.c.
10888
10889         * Added two new notify types into lib/silccore/silcnotify.h:
10890           SILC_NOTIFY_TYPE_NICK_CHANGE and SILC_NOTIFY_TYPE_TOPIC_SET to
10891           notify nickname change and topic setting/change on a channel.
10892
10893         * API change of command_reply operation in client library.  The
10894           application gets now the status type received from server as well.
10895
10896 Sat Sep 30 16:57:42 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10897
10898         * Removed the function just added to lib/silcutil/silcschedule.[ch].
10899
10900         * Cras fixed and optimized the packet handling even further and
10901           it should work now.  Minor change to the prototype of function
10902           silc_packet_receive_process in lib/silccore/silcpacket.[ch].
10903
10904 Sat Sep 30 08:48:47 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10905
10906         * Added new function into lib/silcutil/silcschedule.[ch]:
10907           silc_schedule_with_fd to select() a specified fd.  The function
10908           returns after timeout expires or data arrives or goes.  The
10909           function is used by packet routines to wait that all data is
10910           received from network.
10911
10912         * Fixed data reading from network in lib/silccore/silcpacket.c.
10913           The code now assures that all data is read from the fd and then
10914           continues packet processing.  This was a bug fix since the code
10915           used to drop some data in some circumstances.
10916
10917         * Added new function into lib/silcclient/client.[ch]:
10918           silc_client_start_key_exchange to start key exchange after
10919           connection has been established to server.  The code internally
10920           now uses this funtion but its main purpose was to provide it
10921           for applications that perform their own connecting.  After
10922           application has created a connection it merely calls this
10923           function to start the key exchange between client and server.
10924           The library takes care of everything else after that.
10925
10926           Updated also lib/silcclient/README to explain the usage of
10927           this new function.
10928
10929         * Do not send to application information that connection has
10930           been established.  Application gets notified it by connect
10931           operation anyway.
10932
10933 Thu Sep 28 23:40:19 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10934
10935         * Applied cras's patch to add silc_schedule_one function.  The
10936           function runs scheduler once and returns.
10937
10938         * Fixed the scheduler after cras messed it up.  The timeout
10939           handling works now as it's supposed to work.
10940
10941         * Added into lib/silccore/ silcnotify.h to include notify
10942           message types support.  Changed silc_server_send_notify*
10943           functions, in server.[ch], to support those new notify types.
10944           Added the support for the notify types into client library,
10945           as well.  Added new notify client operation into ops.h in
10946           lib/silcclient/.
10947
10948         * Changed silc_server_packet_send_to_channel to send normal
10949           packets instead of just channel message packets.  The function
10950           is now used to send the notify packets to channels.  It is not
10951           used to send channel message packets anymore, as server never
10952           sends them anymore.
10953
10954         * Added explicit casting into lib/silcutil/silcbuffmt.c to few
10955           va_arg()s as it seems to require it nowadays.  I guess, if SILC
10956           is compiled with older va_arg() the new code should work anyway.
10957
10958 Wed Sep 13 18:10:14 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10959
10960         * Splitted core library.  Core library (lib/silccore) includes
10961           now only SILC protocol specific core (and common) components.
10962           Created new utility library (lib/silcutil) that includes more
10963           generic purpose stuff.  The stuff for util library was taken
10964           from the old core library.  This was minor and easy split.
10965
10966         * Created SILC Client Library (lib/silcclient) that includes
10967           implementation of the SILC client without user interface.  This
10968           was major move from silc/ directory.  The code has been changed
10969           so that it is transparent towards the user interface.  The
10970           silc/ directory includes now the same user interface as before
10971           and it uses the new client library.  Read lib/silcclient/README.
10972           Basicly, the client library performs everything else related
10973           to SILC except user interface handling.  Also, configuration
10974           files are considered to be part of user interface and library
10975           does not handle them.
10976
10977           This change also changed a lot of structures, function naming etc.
10978           Most important change was that SilcClientWindow object was
10979           renamed to SilcClientConnection in the client library.  Created
10980           also new file lib/silcclient/ops.h.  Also added new files
10981           silc/local_command.[ch] and silc/client_ops.[ch].
10982
10983           All these changes were made to make it easier for user interface
10984           designers to create what ever user interface for the SILC client
10985           they want.
10986
10987           It is also expected that the server will be moved to lib
10988           directory as well and SILC Server Library will be created;
10989           sometimes in the future.
10990
10991         * Removed Local commands from lib/silccore/silccommand.h as
10992           they are application specific and new client library does not
10993           handle any of those anymore.
10994
10995         * Several functions moved to lib/silcutil/silcutilc.[ch] from
10996           old client implementation in silc/.
10997
10998         * Added support for callback functions in SILC_LOG_* macros.
10999           Application can now set its own callbacks that will be called
11000           instead of using the default functions that will always print
11001           the debug messages to stderr (or stdout).  Also, debugging can
11002           now be disabled by setting silc_debug to FALSE and re-enabled by
11003           setting it to TRUE.  Note, that logging will still work even
11004           if debugging is disabled.
11005
11006           New functions in lib/silcutil/silclog.[ch]: silc_log_set_callbacks,
11007           silc_log_reset_callbacks, silc_log_set_debug_callbacks and
11008           silc_log_reset_debug_callbacks.
11009
11010         * To enable debugging in silc client one must give now -d
11011           option on command line.
11012
11013         * Changed silc_schedule_init to automatically allocate task queues
11014           if they are not allocated before calling it.
11015
11016 Thu Sep  7 10:49:33 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11017
11018         * Added GMP 3.1 into math library.
11019
11020 Sun Aug 20 21:27:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11021
11022         * Added SILC_PACKET_REMOVE_CHANNEL_USER to remove a client from
11023           a channel in SILC network.  The packet is used by servers and
11024           routers to notify other routers that user has left a channel.
11025           This little feature was missing until now.  Added the feature
11026           to protocol specification as well.
11027
11028           Added functions: silc_server_send_remove_channel_user and
11029           silc_server_remove_channel_user into server.[ch].
11030
11031         * Added SILC_PACKET_REKEY and SILC_PACKET_REKEY_DONE into
11032           lib/silccore/silcpacket.h.  However, they are not implemented
11033           yet.
11034
11035 Sat Aug 19 23:04:16 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11036
11037         * Fixed joining to a channel and sending channel messages
11038           between server and router.  The channel message sending should
11039           now work inside a cell.
11040
11041 Tue Jul 25 20:46:13 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11042
11043         * Fixed the private message sending between server and router.
11044           The private message sending should now work inside a cell.
11045
11046         * Added silc_server_replace_id into server.[ch] to replace
11047           existing ID in the SILC network.
11048
11049         * Added silc_idlist_find_server_by, silc_idlist_replace_client_id
11050           and silc_idlist_replace_server_id into idlist.[ch] in server.
11051
11052 Mon Jul 24 18:33:31 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11053
11054         * Fixed the server to server connections.  Server can again now
11055           connect to router.  Router to router connections probably does
11056           not work just yet.
11057
11058 Thu Jul 20 13:15:01 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11059
11060         * Added dynamic protocol registering support.  Now protocols can
11061           registered and unregistered on the fly.  Patch by cras.
11062
11063 Wed Jul 19 19:08:46 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11064
11065         * Added lib/contrib directory to hold routines that some platforms
11066           don't have but are needed by SILC.
11067
11068         * Added getopt.c, getopt1.c and getopt.h from GNU C library
11069           into lin/contrib to provide getopt() and getopt_long() for
11070           those who don't have it.
11071
11072 Tue Jul 18 20:41:20 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11073
11074         * Added AWAY command to client.  When away message is set and
11075           client receives a private message packet the client automatically
11076           replies to the sender with the away message.
11077
11078         * Fixed a bug in lib/silcmath/mpbin.c: silc_mp_mp2bin.  This
11079           bug seemed to be the cause of recent problems when compiling
11080           with gcc-2.95.
11081
11082         * Added version detection support to SKE protocol specification
11083           and added the new changes to the SKE implementation as well.
11084           There were other minor changes in the SKE protocol as well.
11085
11086           Many changes in lib/silcske/silcske.[ch] and in
11087           lib/silcske/payload.[ch].
11088
11089         * Added ^U functionality, clear input line.  Patch from cras.
11090
11091 Mon Jul 17 23:33:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11092
11093         * Mainly small bugfixes on core library.  Fixed some debugging
11094           logging and buffer overflow in silclog.c.
11095
11096         * Updated config.sub and config.guess on the distribution tree.
11097
11098 Sat Jul 15 15:33:48 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11099
11100         * Added command lagging support in server. Client may execute
11101           commands now only once in two seconds.
11102
11103 Thu Jul 13 22:10:21 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11104
11105         * Optimized packet reception. MAC computation and checking is now
11106           also more optimized.  A lot previously duplicated code is now
11107           used as generic by both client and server.
11108
11109         * Fixed key pair generation in clientutil.c
11110
11111 Wed Jul 12 18:28:07 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11112
11113         * Added into lib/silccore/silcbufutil.[ch] new function;
11114           silc_buffer_realloc.
11115
11116         * Moved generic packet sending/encryption functions to
11117           lib/silccore/silcpacket.[ch] from client and server.  Some
11118           rewriting of the functions.
11119
11120         * Moved all generic packet reception/decryption functions to
11121           lib/silccore/silcpacket.[ch] from client and server.  The
11122           packet processing is now much cleaner in both client and server.
11123           These were major changes in both client and server.
11124
11125         * Created many common functions in server to do packet sending.
11126           Previously code were duplicated a lot, this has been removed
11127           with these changes.
11128
11129 Tue Jul 11 20:27:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11130
11131         * Rewrote major parts of the ID cache system.  Don't know
11132           whether it is better now or not but at least the API is more
11133           cleaner now.
11134
11135         * Major rewrite on ID cache stuff on client because of the ID
11136           cache API changes.  Added idlist.c to client.
11137
11138         * Also major rewrite on ID cache stuff on server as well.
11139           Major rewrite of idlist.[ch]. SilcXXXList's are now named
11140           SilcXXXEntry's.  We won't keep anymore idlist specific pointers
11141           in hand, instead they are all put into the ID cache system now.
11142           All server_idlist_* routines uses ID cache now instead of
11143           traversing its own lists (those lists does not exist anymore).
11144           SilcIDList though still exists.  Also, SilcXXXEntry's are
11145           now pointers.
11146
11147 Sun Jul  9 15:19:24 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11148
11149         * Finally made the SKE implementation compliant to the protocol
11150           specification.  All mp integers are now binary encoded as
11151           opposed being HEX encoded.
11152
11153         * Added lib/silcmath/mpbin.[ch].  Encoding mp intergers to and
11154           from binary data.
11155
11156         * Added into lib/silccore/silcutil.[ch] PEM encoding/decoding
11157           functions: silc_[encode/decode]_pem.  Also added function
11158           silc_encode_pem_file to PEM encode with newlines ('\n') for
11159           saving into a file.
11160
11161         * SILC public keys are now encoded either PEM or binary.  Same
11162           option is for private keys as well.  By default private keys
11163           are binary encoded and public keys PEM encoded.  Silly HEX
11164           encoding were removed.
11165
11166         * Added into lib/silccrypt/silchash.[ch] silc_hash_fingerprint
11167           function to create fingerprints.
11168
11169         * Fixed a bug in SHA1; does not change the original data anymore.
11170
11171         * Partly implemented INFO command on client and server side.
11172           Fixed CLEAR command.  Changes to SERVER command; show current
11173           server(s) when giving command without arguments.  Added
11174           VERSION command to client.
11175
11176         * Added check to server that unregistered connections cannot
11177           execute commands (unless it is specificly allowed).
11178
11179 Thu Jul  6 18:12:24 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11180
11181         * Fixed screen refresh.
11182
11183         * Fixed channel joining bug from client.  On some circumstances
11184           client tried to join to a channel it had already joined.
11185
11186         * Added public key verification process into client's protocol.c.
11187           The client now verifies the public key from user and saves
11188           it into ~./silc/serverkeys/ directory.
11189
11190           Added into: clientutil.[ch]: silc_client_verify_server_key.
11191
11192         * Changed SKE protocol's silc_ske_initiator_finish function
11193           to accept callback function that verifies the received public
11194           key.  Removed old silc_ske_verify_public_key function.
11195
11196 Wed Jul  5 19:19:02 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11197
11198         * Added into silcpkcs[ch]: silc_pkcs_public_key[_data]_set and
11199           silc_pkcs_private_key[_data]_set.
11200
11201         * Made the password and public authentication more cleaner in
11202           server's protocol.c.
11203
11204         * Removed historic and obsolete protocol `channel_auth' from
11205           both client and server.
11206
11207         * Removed wrong way of sending command status messages from
11208           server to client in server's command.c.  The old way violated
11209           protocol specification.
11210
11211           Changes to silccore/silccommand.[ch]: removed
11212           silc_command_encode_status_payload -> not needed anymore,
11213           changed silc_command_encode_payload_va to accept extra
11214           argument on variable argument list.  The argument type must
11215           now be provided to the function.  Also, added new function:
11216           silc_command_encode_reply_payload_va which is same as
11217           normal command_encode_payload_va except command status type
11218           is provided as extra argument.
11219
11220 Tue Jul  4 18:26:39 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11221
11222         * Added ~./silc directory handling.  The directory includes the
11223           public and private keys for the client.
11224
11225           Added silc_client_check_silc_dir, silc_client_create_identifier
11226           and silc_client_load_keys.
11227
11228         * Implemented SILC protocol compliant public key.  Added public
11229           and private key saving to and loading from files.
11230
11231           Added into silcpkcs.[ch]: silc_pkcs_encode_identifier,
11232           silc_pkcs_public_key_encode[_data], silc_pkcs_public_key_decode,
11233           silc_pkcs_private_key_encode[_data], silc_pkcs_private_key_decode,
11234           silc_pkcs_public_key_alloc, silc_pkcs_public_key_free,
11235           silc_pkcs_private_key_alloc and silc_pkcs_private_key_free.
11236
11237           Implemented: silc_pkcs_save_[public/private]_key[_data] and
11238           silc_pkcs_load_[public/private]_key.
11239
11240 Mon Jul  3 18:51:27 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11241
11242         * Added silc_server_get_route (route.[ch]) to get connection
11243           data for the fastest route for given ID.
11244
11245         * Implemented INVITE command on client and server.  The command
11246           were re-defined in the SILC Protocol Specification and the
11247           implementation now complies with the specification.
11248
11249         * Implemented PING command on client and server.
11250
11251         * Implemented NAMES command on client and server.  The server side
11252           supports currently only normal server not router server yet.
11253           Some changes to NAMES definition in SILC protocol specification.
11254
11255 Sun Jul  2 18:23:01 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11256
11257         * Implemented LEAVE command on client and server.
11258
11259         * Previously deprecated SILC_PACKET_FORWARDED flag is now in use
11260           again.  This change was made to the protocol as well.  Server
11261           should not violate the protocol specification anymore.
11262
11263 Fri Jun 30 14:03:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11264
11265         * Added SOCKS4 and SOCKS5 support to SILC client.  SOCKS5
11266           was tested.  SOCKS4 was not but should work anyway.