Imported new UTF-8 routines from my 1.1 tree.
[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 Wed Mar 23 11:20:33 CET 2005  Jochen Eisinger <jochen@penguin-breeder.org>
17
18         * If the passphrases entered do not match while generating a new key,
19           completly start over instead of going into an infinite loop asking
20           the user to re-enter the passphrase correctly.  Affected file
21           lib/silcutil/silcapputil.c
22
23 Sun Jan  9 14:28:51 CET 2005  Pekka Riikonen <priikone@silcnet.org>
24
25         * Make sure server is removed from backup list when it is
26           deleted.  Affected files silcd/command.c, server.c,
27           server_util.c.
28
29         * Close socket when connecting to router fails.  Affected
30           file silcd/server.c.
31
32 Tue Jan  4 13:06:26 CET 2005  Jochen Eisinger <jochen@penguin-breeder.org>
33
34         * Adopt configuration toolchain to current auto-tools.
35           Affected files prepare, irssi/configure.in
36         * Revert most of the UTF-8 fixes to SILC Client 1.0.1.  Will
37           redo that.  Affected files irssi/src/silc/core/client_ops.c,
38           irssi/src/fe-common/silc/fe-silc-channels.c
39         * Take over command line options into silcclient data structure.
40           Affected file irssi/src/silc/core/silc-core.c
41
42 Wed Dec  8 16:15:11 CET 2004  Pekka Riikonen <priikone@silcnet.org>
43
44         * Do not try to initiate backup resuming protocol forever.
45           Affected file silcd/server_backup.c.
46
47 Wed Nov 24 18:24:05 CET 2004  Pekka Riikonen <priikone@silcnet.org>
48
49         * ID change in resuming has to be done before changing
50           detached client's modes, since the ID change may fail and
51           leave ghosts on the network.  Affected file is
52           silcd/packet_receive.c.
53
54 Tue Nov 23 16:54:35 CET 2004  Pekka Riikonen <priikone@silcnet.org>
55
56         * Fixed Win32 scheduler to not stuck anymore.  A patch from
57           Juha Räsänen.  Affected file is
58           lib/silcutil/win32/silcwin32schedule.c.
59
60         * Fixed QoS parsing for connection blocks in server.  Affected
61           file is silcd/serverconfig.c.
62
63         * Fixed server statistics increasing in server.  Affected file
64           is silcd/server.c.
65
66         * The CLOSE command now marks backup router as self disconnected
67           to avoid resuming problems.  Affected file silcd/command.c.
68
69 Wed Sep 22 19:46:32 CEST 2004  Patrik Weiskircher <pat@icore.at>
70
71         * When using silc_net_create_connection[_async], and your system can
72           create IPv6 sockets, it will try to connect to the IPv6 host. 
73           Now it tries to connect to an IPv4 host if IPv6 fails. Affected 
74           file lib/silcutil/unix/silcunixnet.c
75
76 Fri Jun 18 19:26:58 CEST 2004  Pekka Riikonen <priikone@silcnet.org>
77
78         * Check for valid route when receiving packet from router and
79           when routing it to local server in the cell.  A patch from
80           Matt Miller.  Affected files silcd/router.c and server.c.
81
82 Sat May  1 13:55:54 CEST 2004  Patrik Weiskircher <pat@icore.at>
83
84         * Couldn't detach and reattach twice, because of the previous
85           commit. Affected file silcd/packet_receive.c
86
87 Fri Apr 30 19:40:28 CEST 2004  Patrik Weiskircher <pat@icore.at>
88
89         * Added check to ignore Port value if Initiator is FALSE. 
90           Remote router coudln't connect if Port was set. Affected file
91           silcd/serverconfig.c
92
93         * If some client tries to resume more than once at the same time,
94           server crashed. Router didn't crash, but showed odd behaviour
95           (didn't allow clients to join anymore, ..). Affected files
96           silcd/packet_receive.c silcd/idlist.h
97
98 Mon Mar 15 21:10:08 EET 2004  Pekka Riikonen <priikone@silcnet.org>
99
100         * Destroy the file transfer session in silc_client_file_close
101           with timeout.  Affected file lib/silcclient/client_ftp.c.
102
103         * Call SFTP server monitor in READ and WRITE after the actual
104           operations.  Affected file lib/silcsftp/sftp_server.c.
105
106 Wed Mar 10 21:30:02 EET 2004  Pekka Riikonen <priikone@silcnet.org>
107
108         * Create one configure script from configure fragments
109           (configure.ad).  This is a first step towards new distribution
110           system.  Affected files prepare, configure.in.pre,
111           lib/silcmath/mpi/configure.ad.
112
113 Wed Mar 10 18:35:24 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
114
115         * Removed expiring of client key pair.  Affected file is
116           irssi/src/silc/core/clientutil.c
117
118 Tue Mar  9 17:11:58 EET 2004  Pekka Riikonen <priikone@silcnet.org>
119
120         * Check the number of connections from real number of
121           connections instead of socket number, when deciding if
122           server is full.  Affected files are silcd/server.c,
123           server_internal.h and silcd.c.
124
125         * Clarified the connections_max meaning in General section
126           in doc/example_silcd.conf.in.
127
128         * The reconnect_keep_trying default value set to TRUE
129           if it is not defined in the config file.  Affected file
130           silcd/serverconfig.c.
131
132 Wed Mar  3 15:13:49 CET 2004  Pekka Riikonen <priikone@silcnet.org>
133
134         * Fixed crashbug in connection closing, after a protocol
135           completion callback, which might have closed it already.
136           Affected file silcd/server.c.
137
138         * Fixed rekey with PFS in backup router.  It did not allow
139           rekeys with PFS, and when the rekey protocol timedout
140           it crashed the backup router without the above fix.  Affected
141           file silcd/packet_send.c and server.c.
142
143 Sat Feb 28 16:25:09 EET 2004  Pekka Riikonen <priikone@silcnet.org>
144
145         * The silc_client_add_channel_private_key now returns the
146           private key context if pointer is given as argument.
147           Affected files are lib/silcclient/silcclient.h and
148           client_channel.c.
149
150         * Added support for using channel private keys in SILC
151           Client Library even if the private key mode is not set
152           on the channel.  Affected file lib/silcclient/client_channel.c.
153
154         * The channel private key used to decrypt message is now
155           delivered to the application in the 'channel_messageÃ' client
156           operation.  Affected files are lib/silcclient/silcclient.h
157           and client_channel.c.
158
159         * Fixed wrong arg type for user limit in CMODE command reply.
160           Affected file silcd/command.c.
161
162         * The user limit is now taken and saved to SilcClientEntry in
163           JOIN and CMODE command replies and in CMODE_CHANGE notify.
164           Affected files lib/silcclient/silcclient.h, command_reply.c
165           and client_notify.c.
166
167         * Added support to the new private message key indicator
168           packet.  Added a new function to the client library:
169           silc_client_send_private_message_key_request.  The sender
170           indicates to be initiator, and receiver is responder.
171           Added the indicator to the SilcClientEntry as 'prv_resp'
172           boolean.  Affected files are lib/silcclient/silcclient.h
173           client.[ch], and client_prvmsg.c.
174
175 Fri Feb 27 11:25:26 CET 2004  Pekka Riikonen <priikone@silcnet.org>
176
177         * Fixed the JOIN command calling when called with both
178          -auth and -founder.  Affected file is lib/silcclien/command.c.
179
180 Wed Feb 25 23:12:11 EET 2004  Pekka Riikonen <priikone@silcnet.org>
181
182         * Check watcher list for resumed clients as well.  Affected
183           file is silcd/packet_receive.c.
184
185 Tue Feb 24 16:49:10 EET 2004  Pekka Riikonen <priikone@silcnet.org>
186
187         * Implemented the user limit to the CMODE_CHANGE notify,
188           CMODE command reply and JOIN command reply in server.
189           Affected files are silcd/server.c, command.c, command_reply.c,
190           packet_send.c and packet_receive.c.
191
192 Mon Feb 23 23:31:15 EET 2004  Pekka Riikonen <priikone@silcnet.org>
193
194         * Defined SILC_STRFMT_END that must be used now with
195           silc_buffer_strformat, instead of SILC_STR_END.  Fixes
196           crashes on AMD64.  Affected files are lib/silcutil/silcbuffmt.h,
197           lib/silcclient/silcvcard.c, silcd/server_util.c.
198
199         * Fixed the adding of public key to the WATCH list in server.
200           Fixed the WATCH notify sending to client.  Affected files
201           are silcd/packet_send.[ch], command.c, server_util.c.
202
203         * Implemented the watching by public key in the SILC Client
204           Library and SILC Client.  Affected files are
205           lib/silcclient/command.c and client_notify.c.
206
207 Mon Feb 23 09:30:30 CET 2004  Pekka Riikonen <priikone@silcnet.org>
208
209         * Added support for public key watching in server.  Affected
210           files are silcd/server.c, server_internal.h, command.c,
211           server_util.c.
212
213 Sun Feb 22 19:03:59 EET 2004  Pekka Riikonen <priikone@silcnet.org>
214
215         * Added public key to the SIlcClientEntry.  Affected files
216           are lib/silcclient/silcclient.h, command_reply.c, idlist.c
217
218         * Fixed the get_clients_whois reply processing to return
219           exactly same entries server returned.  Makes it possible
220           to search using attributes.  Affected file is
221           lib/silcclient/idlist.c.
222
223 Sat Feb 21 19:21:57 EET 2004  Pekka Riikonen <priikone@silcnet.org>
224
225         * Save founder key to SilcChannelEntry.  Affected files are
226           lib/silcclient/silcclient.h, command_reply.c, idlist.c.
227
228 Fri Feb 20 20:37:38 EET 2004  Pekka Riikonen <priikone@silcnet.org>
229
230         * Call the monitor callback with _CLOSED status from the
231           silc_client_file_close.  Affected files are
232           lib/silcclient/client_fpt.c, silcclient.h
233
234         * Added silc_client_get_clients_whois which resolves using
235           WHOIS, and supports requested attributes as well.
236           Affected files are lib/silcclient/silcclient.h, idlist.c.
237
238 Fri Feb 19 21:09:22 EET 2004  Pekka Riikonen <priikone@silcnet.org>
239
240         * Added support for asking the destination filename where
241           the downloaded file is saved in the file transfer.  Affected
242           files are lib/silccilent/silcclient.h, client_ftp.c.
243
244 Wed Feb 18 02:46:17 EET 2004  Pekka Riikonen <priikone@silcnet.org>
245
246         * Fixed error handling in resuming data processing.  Affected
247           files are lib/silcclient/client_resume.c and client.c.
248
249 Tue Feb 17 19:34:30 EET 2004  Pekka Riikonen <priikone@silcnet.org>
250
251         * Fixed silc_client_send_private_message to return TRUE correctly.
252           Affected file lib/silcclient/client_prvmsg.c.
253
254         * Added topic to the SilcChannelEntry.  Affected files are
255           lib/silcclient/silcclient.h, command_reply.c, client_notify.c.
256
257 Fri Feb 13 14:19:14 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
258
259         * Use conn->cmd_ident for all silc_client_command_call()s.  Affected
260           file lib/silcclient/command.c
261
262 Fri Feb 13 13:53:45 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
263
264         * Convert all commands to UTF-8 before passing them to the
265           client library.  Still need to convert replies from UTF-8 to
266           the locale encoding.  Affected file
267           irssi/src/silc/core/silc-cmdqueue.c
268
269 Fri Feb 13 13:13:07 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
270
271         * redirect all silc_client_command_calls through a queueing framework.
272           This fixes /CYCLE and the annoying "nick change after auto-joining
273           a channel".  Furthermore it defines one central point where
274           command parameters can be UTF-8-ified.  Affected files
275           irssi/src/silc/core/Makefile, client_ops.c, silc-channels.c,
276           silc-servers.[ch], silc-core.c, silc-cmdqueue.[ch], silc-lag.c
277
278 Fri Feb 13 12:04:41 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
279
280         * use asynchronous connect() to establish router connections.
281           Fixes problem when the primary router goes down.  Affected files
282           silcd/server.c, silcd/server_backup.c
283
284 Thu Feb 12 20:09:59 EET 2004  Pekka Riikonen <priikone@silcnet.org>
285
286         * Added SILC_[32|64]_TO_PTR and SILC_PTR_TO_[32|64] macros.
287           Fixed various compilation warnings when type casting ints
288           to pointers or vice versa, of different size.  Updates around
289           the source free.
290
291 Tue Feb  3 23:25:17 EET 2004  Pekka Riikonen <priikone@silcnet.org>
292
293         * Surrogates not allowed in UTF-8 strings, updated decoder.
294           Affected file lib/silcutil/silcstrutil.c.  Added UTF-8
295           testers in lib/silcutil/tests/ directory.
296
297 Wed Jan 14 18:42:44 EET 2004  Pekka Riikonen <priikone@silcnet.org>
298
299         * Added SILC_CLIENT_CONN_ERROR_KE, ERROR_AUTH, ERROR_RESUME and
300           ERROR_TIMEOUT SilcClientConnectionStatus errors.  Affected
301           files are lib/silcclient/silcclient.h, client.c.
302
303 Mon Jan 12 13:01:10 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
304
305         * When resuming a session fails, notify the user that the session
306           file needs to be removed eventually.  Affected files
307           irssi/src/fe-common/silc/module-formats.[ch],
308           irssi/src/silc/core/client_ops.c.
309
310 Tue Jan 04 12:16:04 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
311
312         * Added DIST_SUBDIRS symbols to include all subdirs in distributions.
313           Affected files lib/silcutil/Makefile.am, lib/silcmath/Makefile.am
314
315         * Typofix in Irssi::Silc module.  Affected file
316           irssi/src/perl/silc/Silc.xs.
317
318 Tue Jan 04 02:43:44 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
319
320         * Changed the way NOTICE flagged messages are treated. Added support
321           for notices in queries and signing notices.  Affected files
322           irssi/default.theme; irssi/docs/help/in/notice.in;
323           irssi/src/fe-common/silc/module-formats.[ch], fe-silc-messages.c;
324           irssi/src/silc/core/client_ops.c, silc-channels.c, silc-servers.c
325
326         * Fixed typo in /ACTION help.  Affected file
327           irssi/docs/help/in/action.in
328
329 Mon Jan 03 23:26:38 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
330
331         * Fixed typo in perl module.  Affected file
332           irssi/src/perl/silc/Server.xs
333
334         * Changed the way ACTION flagged messages are treated. Added support
335           for actions in queries and signing actions.  Affected files
336           irssi/default.theme; irssi/docs/help/in/action.in;
337           irssi/src/fe-common/silc/module-formats.[ch], fe-silc-messages.c,
338           fe-silc-queries.c; irssi/src/silc/core/client_ops.c, silc-channels.c,
339           silc-servers.[ch]
340
341 Mon Jan 03 16:04:29 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
342
343         * Incorrectly reported error when client had to be resolved from
344           server in /SMSG.  Affected file irssi/src/silc/core/silc-servers.c
345
346 Sat Jan  3 16:37:15 EET 2004  Pekka Riikonen <priikone@silcnet.org>
347
348         * Fixed whois public key hash table deleting and adding in
349           detached client case.  Affected file silcd/packet_receive.c.
350
351 Sat Jan 03 12:15:38 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
352
353         * Changed filenames of silc/fe module not to collide with filenames
354           from core/fe.  Also seperated public messages printing from
355           query messages printing.  Affected files are all in
356           irssi/src/fe-common/silc.
357
358 Sat Jan  3 12:18:07 EET 2004  Pekka Riikonen <priikone@silcnet.org>
359
360         * Fixed the invite process handling during joining to use
361           correct server name for the client that is matched against
362           the invite string for the channel.  Wrong server name caused
363           inability to join the channel.  Affected file is
364           silcd/command.c.
365
366 Fri Jan  2 23:34:17 EET 2004  Pekka Riikonen <priikone@silcnet.org>
367
368         * Fixed the CUMODE channel founder authentication on normal
369           server to not remove the founder rights on existing founder
370           before checking that router accepts the mode change.  Affected
371           files are silcd/command.c and silcd/packet_receive.c.
372
373         * Remove the server entry correctly when rekey timeouts and
374           remote router connection on normal server is closed.  Fixes
375           a crash where server uses the freed server entry.  Affected
376           file silcd/server.c.
377
378 Fri Jan 02 10:28:15 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
379
380         * Add /SILCNET [ADD|REMOVE|LIST] command to manage different SILC
381           networks.  This is the first step in solving the bug about
382           /SERVER ADD -silcnet <silcnet>.  Affected files
383           irssi/docs/in/silcnet.in; irssi/src/fe-common/silc/Makefile.am,
384           fe-silcnet.c, fe-common-silc.c, module-formats.[ch];
385           irssi/src/silc/core/silc-chatnets.[ch], silc-core.c, Makefile.am
386
387 Thu Jan 01 20:11:32 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
388
389         * /SMSG and /MMSG now correctly create new queries. Affected files
390           irssi/src/fe-common/silc/fe-messages.c, irssi/scripts/silc-mime.pl
391
392         * Add basic support for SILC protocol specific variables in perl.
393           Affected files irssi/src/perl/silc/*, irssi/configure.in,
394           irssi/src/perl/Makefile.am
395
396 Wed Dec 31 17:06:55 CET 2003  Jochen Eisinger <jochen@penguin-breeder.org>
397
398         * Don't use silc_get_input, it's obviously not reliable.  Fixes
399           issue when the current key expires.  Affect file
400           irssi/src/silc/core/clientutils.c
401
402         * Make the session data filename configurable.  This makes it
403           possible to have different session files for different
404           SILC networks.  Affected files irssi/src/silc/core/silc-core.c,
405           client_ops.[ch], silc-servers.c,
406           irssi/src/silc/fe-common/silc/module-formats.[ch]
407
408         * Use the same set of libtool files for the MPI lib as for the
409           rest of the toolkit.  Affected files lib/silcmath/mpi/config.guess,
410           config.sub, configure.in, install-sh, missing, mkinstalldirs
411
412 Sun Dec 28 21:57:39 EET 2003  Pekka Riikonen <priikone@silcnet.org>
413
414         * Fixed server statistics decrementing error to not go to
415           negative.  Affected file silcd/packet_receive.c.
416
417 Sat Dec 20 14:42:36 EET 2003  Pekka Riikonen <priikone@silcnet.org>
418
419         * Use silc_server_query_add_error to add error in public key
420           search error.  Added support in send_reply to send errors
421           without specific argument.  Affected file silcd/server_query.c.
422
423         * Fixed the WHOIS, IDENTIFY and WHOWAS error handling in SILC
424           Client for NO_SUCH_NICK.  It was against the protocol specs.
425           Affected file irssi/src/silc/core/client_ops.c.
426
427         * Added backwards support for the wrong NO_SUCH_NICK error sending
428           in server.  To be removed in SILC Server 1.0.  Both old clients
429           and clients with fixed error handling now works.  Affected file
430           silcd/server_query.c.
431
432 Sat Dec 20 00:44:47 CET 2003  Patrik Weiskircher <pat@icore.at>
433
434         * fixed a bug in the whois using attributes function where no
435           error was sent if no nickname and client id but the attributes were
436           given to whois. Affected file silcd/server_query.c
437
438 Tue Dec 16 21:34:59 CET 2003  Patrik Weiskircher <pat@icore.at>
439
440         * remove public key from public key hashtable on detach. Affected
441           file silcd/packet_receive.c
442
443         * free public key hashtable before removing clients on server
444           shutdown. Affected file silcd/server.c
445
446         * remove public key prior deleting client-data on killing a client.
447           Affected file silcd/server_util.c
448
449 Sat Dec 06 21:35:14 CET 2003  Patrik Weiskircher <pat@icore.at>
450
451         * Getting the MOTD from other servers works now. Affected
452           files are silcd/command.c and silcd/command_reply.c
453
454 Thu Dec 04 11:33:46 CET 2003  Jochen Eisinger <jochen@penguin-breeder.org>
455
456         * Initialize the variable idletag, since it is tested in
457           silc_core_deinit for its default value.  Affected file
458           irssi/src/silc/core/silc-core.c
459
460 Sun Nov 30 19:47:02 CET 2003  Patrik Weiskircher <pat@icore.at>
461
462         * Fixed signed channel messages across cells. Affected file
463           silcd/packet_send.c
464
465 Fri Nov 28 19:13:21 EET 2003  Pekka Riikonen <priikone@silcnet.org>
466
467         * Changed the SILC_LOG_* macros to not be empty if SILC_DEBUG
468           is not defined.  They can now be safely used in if-statements
469           without braces.  Affected file lib/silcutil/silclog.h.
470
471         * Added the checks for backup closing connection due to error
472           (local or remote) and thus not allow the resuming to occur
473           in reconnect.  Affected files are silcd/packet_send.c
474           and server.c.
475
476 Tue Nov 25 15:20:59 EET 2003  Pekka Riikonen <priikone@silcnet.org>
477
478         * Help file updates.  Affected files in irssi/src/docs/help/in/.
479
480 Wed Nov 23 20:51:21 CET 2003  Patrik Weiskircher <pat@icore.at>
481
482         * Fixed channel messages across cells. Affected file
483           silcd/packet_send.c
484
485 Wed Nov 12 11:34:56 EET 2003  Pekka Riikonen <priikone@silcnet.org>
486
487         * Fixed file transmission accepting in client library to not
488           start the negotiation if user hasn't accepted the transfer,
489           instead create new session for resent transfer.  Affected
490           file lib/silcclient/client_ftp.c.
491
492         * Show the session ID in the file transmision list.  Remove
493           session from list that failed to transfer.  Switch the current
494           session automatically after transmission, and in errors, to new
495           session if other sessions exists in the transfer list.  Affected
496           files are irssi/src/silc/core/silc-servers.c,
497           irssi/src/fe-common/silc/modfule-formats.c.
498
499 Mon Nov 10 14:41:40 CET 2003  Jochen Eisinger <jochen@penguin-breeder.org>
500
501         * Fixed MIME header parsing for the hopefully last time.  Affected
502           file lib/silcutil/silcstrutil.c
503
504 Mon Nov 10 13:03:46 EET 2003  Pekka Riikonen <priikone@silcnet.org>
505
506         * Rewrote the PKCS#1 routines.  Added lib/silccrypt/silcpkcs1.[ch].
507
508         * The SILC RNG is now gauranteed to return non-zero random
509           values.  Affected files are lib/silccrypt/silcrng.[ch].
510
511 Sun Nov  9 20:44:56 EET 2003  Pekka Riikonen <priikone@silcnet.org>
512
513         * Fixed nickname formatting when changing only case of the
514           nickname.  Affected file lib/silcclient/idlist.c.
515
516 Sun Nov  9 19:33:59 CET 2003  Jochen Eisinger <jochen@penguin-breeder.org>
517
518         * Fixed a memory leak and incorrect printing of the "appears as"
519           message.  Affected file irssi/src/silc/core/client_ops.c
520
521 Sun Nov  9 17:45:11 EET 2003  Pekka Riikonen <priikone@silcnet.org>
522
523         * Added CRT (Chinese Remainder Theorem) supported RSA
524           private keys and private key operations.  This significantly
525           increases private key operation efficiency.  No compatibility
526           issues with new or old private keys.  Affected files are
527           lib/silccrypt/rsa.[ch], rsa_internal.h and pkcs1.c.
528
529 Sat Nov  8 13:08:53 EET 2003  Pekka Riikonen <priikone@silcnet.org>
530
531         * Fixed GCC-3.3.2 related compilation warnings from the
532           source tree.
533
534 Fri Nov  7 23:01:47 EET 2003  Pekka Riikonen <priikone@silcnet.org>
535
536         * Removed RC6 from distributions.
537
538 Fri Nov  7 19:38:42 EET 2003  Pekka Riikonen <priikone@silcnet.org>
539
540         * Added some better comments to lib/silccrypt/silcpkcs.h,
541           optimized some routines in lib/silccrypt/silcpkcs.c.
542           Added test_silcpkcs into lib/silccrypt/tests/.
543
544         * Fixed silc_rng_global_init to actually init the global RNG
545           if RNG wasn't provided for it.  Affected file is
546           lib/silccrypt/silrng.c.
547
548 Thu Nov  6 21:08:28 EET 2003  Pekka Riikonen <priikone@silcnet.org>
549
550         * Added silc_hash_table_find_by_context_ext.  Affected files
551           lib/silcutil/silchashtable.[ch].
552
553         * Save the public key on normal server in WHOIS command reply
554           from attributes, if present, and add it to public key hash
555           table.  Fixes WHOIS resolving by public key on normal server.
556
557           Optimized the attributes resolving on normal server to not
558           resolve if we resolved them already from router.
559
560           Affected files are silcd/server_query.c, command_reply.c.
561
562 Wed Nov  5 19:36:30 CET 2003 Patrik Weiskircher <pat@icore.at>
563
564         * Added support for whois using attributes.
565           Affected files silcd/command_reply.c, silcd/packet_receive.c,
566           silcd/server.c, silcd/server_internal.h, silcd/server_query.c,
567           silcd/server_util.c
568
569         * Added support for whois using public key attribute to /WHOIS i
570           client command. Affected files irssi/docs/help/in/whois.in,
571           irssi/src/silc/core/silc-servers.c, lib/silcclient/command.c
572
573 Wed Nov  5 23:37:36 EET 2003 Pekka Riikonen <priikone@silcnet.org>
574
575         * Fixed UMODE setting in server when the client has anonymous
576           mode set.  The mode setting was not working.  Affected file
577           silcd/command.c.
578
579 Mon Nov  2 11:36:08 CET 2003 Jochen Eisinger <jochen@penguin-breeder.org>
580
581         * Fixed some bugs and typos related to sending split messages.
582           Print notification when sending messages with /MMSG.  Affected
583           files irssi/scripts/silc-mime.pl, irssi/src/silc/core/client_ops.c
584
585 Fri Oct 31 12:33:59 EET 2003 Pekka Riikonen <priikone@silcnet.org>
586
587         * Optimized the socket referencing in packet routines, client
588           library and server.  Affected files are lib/silccore/silcpacket.c,
589           lib/silcclient/client.c and silcd/server.c.
590
591         * If silc_socket_set_qos is given with NULL arguments the QoS is
592           reset from the socket.  Affected files are
593           lib/silcutil/silcsockconn.[ch].
594
595 Thu Oct 30 21:23:24 CET 2003 Jochen Eisinger <jochen@penguin-breeder.org>
596
597         * Add a /LISTKEYS command which lists the locally cached
598           client and server keys.  Affected files
599           irssi/src/fe-common/module-formats.[ch],
600           irssi/src/silc/core/silc-{channels,servers}.c
601           irssi/docs/help/in/listkeys.in
602
603 Thu Oct 30 20:23:40 EET 2003 Pekka Riikonen <priikone@silcnet.org>
604
605         * Check that packet queue purging was successful.  Affected
606           files lib/silcclient/client.c and silcd/packet_send.c.  Related
607           to MAC failed errors.
608
609         * Do not clear the inbuf even if it is empty if QoS was applied
610           to it.  Otherwise the QoS data is cleared and MAC failed error
611           will occur.  Affected file lib/silccore/silcpacket.c.
612
613         * Use the rekey period time as rekey protocol timeout value.
614           If the rekey does not succeed during the rekey period there's
615           something very wrong, and we most likely end up with wrong keys,
616           do graceful reconnect then.   Affected file silcd/server.c.
617
618         * Take reference of the socket in the parser context, as it's
619           possible to have the parsers in queue after the socket is
620           disconnected and this may cause crash.  Affected files are
621           lib/silccore/silcpacket.c, lib/silcclient/client.c and
622           silcd/server.c.
623
624 Thu Oct 30 17:01:01 EET 2003 Pekka Riikonen <priikone@silcnet.org>
625
626         * Fixed KICK command reply sending, it sent to replies.
627           Affected file silcd/command.c.
628
629 Wed Oct 30 14:06:52 CET 2003 Jochen Eisinger <jochen@penguin-breeder.org>
630
631         * Finish the silc-mime.pl script. It now supports MIME type
632           guessing using magic files, signing data messages, executing
633           MIME handlers in background. Affected files
634           irssi/scripts/silc-mime.pl and irssi/docs/help/in/mmsg.in
635
636         * Changed MIME signal handler to make things easier for the perl
637           script. Affected files irssi/src/silc/core/client_ops.c,
638           silc-servers.c, and irssi/docs/signals.txt
639
640         * Cleaned up the silc_mime_parse function and fixed detection
641           of wrapped header lines. Affected file lib/silcutil/silcstrutil.c
642
643 Sun Oct 26 21:19:02 EET 2003 Pekka Riikonen <priikone@silcnet.org>
644
645         * Resolve the IP for file transfer listener from the connection
646           socket.  Affected file lib/silcclient/client_ftp.c.
647
648         * Accept NULL hostname parameter in the functions
649           silc_net_check_[local|remote]_by_socket.  Do not reverse lookup
650           if hostname is not wanted.
651
652 Fri Oct 24 21:24:12 CEST 2003  Jochen Eisinger <jochen@penguin-breeder.org>
653
654         * Fixed race condition between silc_client_init and
655           my_silc_scheduler. Affected file irssi/src/silc/core/silc-core.c
656
657 Fri Oct 24 16:43:40 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
658
659         * Fixed file transfer connection closing when SIGNOFF for
660           the client is received from server.  Affected file is
661           lib/silcclient/client_ftp.c.
662
663 Tue Oct 21 13:35:57 CEST 2003  Pekka Riikonen <priikone@silcnet.org>
664
665         * Check for disconnected socket in QUIT callback.  Affected
666           file silcd/command.c.
667
668 Thu Oct 21 09:43:17 CEST 2003  Jochen Eisinger <jochen@penguin-breeder.org>
669
670         * Modified the MIME parsing to allow \n and \r\n as delimiters.
671           Affected files lib/silcutil/silcstrutil.c
672
673         * Cleaned up the escape/unescape functions for correctness and
674           speed. Affected file irssi/src/silc/core/client_ops.c
675
676         * Removed handling for data messages with Content-Type: text/*,
677           moved parsing of MIME headers to the signal handler, added
678           support for signing and verifying data messages. Affected
679           files are irssi/docs/signals.txt, irssi/src/silc/core/client_ops.c,
680           irssi/src/silc/core/silc-{servers,channels}.c
681
682         * Added a perl script for handling data messages based on
683           information read from Mailcap files. New file
684           irssi/scripts/silc-mime.pl
685
686 Mon Oct 20 16:08:22 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
687
688         * Added new SILC_MESSAGE_FLAG_ACK that can  be used to
689           acknowledge recepetion of a message to the sender.  Updated
690           protocol specs.
691
692 Sat Oct 18 11:55:33 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
693
694         * Unregister channel key saving callback when deleting channel.
695           Affected file lib/silcclient/idlist.c.
696
697         * Do not remove the client from channels in NOTIFY_TYPE_SIGNOFF
698           before calling notify client operation.  Affected file is
699           lib/silcclient/client_notify.c.
700
701         * Unregister QoS tasks when deleting the socket connection.
702           Affected files lib/silcutil/silcsockconn.[ch],
703           unix/silcunixsockconn.c.
704
705         * Implemented latest presence-attrs draft changes.  Affected
706           files lib/silccore/silcattrs.h and
707           irssi/src/silc/core/silc-queries.c.
708
709 Tue Oct 14 18:24:53 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
710
711         * Save old channel keys in list to allow more rapid change
712           of channel keys if server for some reason does that.  This
713           avoids loosing so many channel messages due to not having
714           key to decrypt.  Affected file lib/silcclient/silcclient.h,
715           idlist.c and client_channel.c.
716
717 Mon Oct 13 21:37:47 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
718
719         * Continued backup router tests and fixes.  Affected files
720           silcd/server_backup, server_util.c, server.c.  See TODO.
721
722 Sun Oct 12 19:58:18 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
723
724         * Fixed SERVER_SIGNOFF handling in servers.  The client
725           was removed from wrong list thus not removing the client
726           at all.  Affected file silcd/packet_receive.c.
727
728         * Do not execute rekey protocol for disabled connections as
729           it would never go through.  Affected file silcd/server.c.
730
731         * Added timeout for rekey protocol to catch if the protocol
732           never executes successfully.  Affected files silcd/server.c
733           and protocol.h.
734
735 Sat Oct 11 15:39:22 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
736
737         * Abandon packet processing for disconnected sockets.  Check
738           this always after calling packet processing callback.
739           Affected file lib/silccore/silcpacket.c.
740
741         * Fixed double registration disconnection code in server.
742           Closed wrong connection.  Affected file silcd/packet_receive.c.
743
744 Fri Oct 10 16:27:12 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
745
746         * On normal server reconnect to primary during resuming 4
747           times, then give up.  Affected file silcd/server_backup.c.
748
749         * If during reconnecting to routers we notice we have router
750           connection but no primary router set, the server is in desync.
751           Reconnect to primary to restore network.  Affected file
752           silcd/server.c.
753
754         * Assure that only one protocol is exeucting at the same time.
755           Added checks for all protocols.  Affected files are
756           silcd/server.c and server_backup.c.
757
758 Thu Oct  9 20:24:09 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
759
760         * Check that a string is not already part on invite/ban
761           string when processing it.  Affected file silcd/server_util.c.
762
763 Thu Oct  9 12:06:40 CEST 2003  Pekka Riikonen <priikone@silcnet.org>
764
765         * Fixed the CUMODE_CHANGE for founder mode changes to comply
766           with 1.2 version of the protocol.  Affected file is
767           silcd/packet_receive.c.
768
769 Wed Oct  8 19:41:15 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
770
771         * ERR_BAD_PASSWORD now returns the Channel ID of the channel
772           where the passphrase was given.  Affected file is
773           silcd/command.c.
774
775 Wed Oct  8 09:32:12 CEST 2003  Pekka Riikonen <priikone@silcnet.org>
776
777         * INVITE and BAN notifys are now delivered from routers to
778           servers (but not clients) on the channel.  Updated specs and
779           code.  Affected files silcd/packet_[send|receive].[ch],
780           command.c, server.c and server_util.c.
781
782         * Implemented INVITE and BAN announcing.  Affected files are
783           silcd/server.[ch], server_util.c.
784
785         * Implemented SilcStatus error type argument returning in
786           command reply error in server.  Affected file silcd/command.c.
787
788         * Implemented SilcStatus argument returning in comand reply
789           in client library.  The command_reply client operation now
790           returns error specific arguments as well.  Affected files
791           are lib/silcclient/command_reply.[ch], client_resume.c,
792           lib/silccore/silcstatus.[ch].
793
794 Sun Oct  5 20:22:08 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
795
796         * Backup router protocol version 1.2 implemented.  Testing still
797           required.  Affected files in silcd/server_backup.[ch], server.c,
798           packet_receive.c and server_internal.h.
799
800 Sun Oct  5 12:36:37 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
801
802         * silc_client_send_[channel|private]_message now return TRUE
803           or FALSE.  Affected file lib/silcclien/client_channel.c and
804           client_prvmsg.c.
805
806 Thu Oct  2 17:03:09 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
807
808         * Check for explicit nickname in INVITE and BAN processing
809           during join as well (and don't expect only wildcards in
810           invite/ban strings).  Affected file silcd/command.c.
811
812         * Fixed the INVITE and BAN by public key.  The public key saved
813           is the PK payload (as specified) not the raw data.  Affected
814           file silcd/server_util.c.
815
816 Wed Oct  1 20:29:06 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
817
818         * UTF-8 text message support for actions and notices in SILC
819           Client.  Affected file irssi/src/silc/core/client_ops.c.
820
821         * silc_get_username and silc_get_real_name now returns sensible
822           data on Win32.  Patch by Toni Willberg.  Affected file is
823           lib/silcutil/win32/silcwin32util.c.
824
825 Sun Aug 24 23:35:19 CEST 2003  Jochen Eisinger <c0ffee@penguin-breeder.org>
826
827         * Provide a signal handler to send MIME encoded messages and emit
828           a signal when a MIME encoded message is received. Also document
829           the signals for usage with the perl interface.
830
831           A sample perl script will be supplied at a later point.
832
833           Affected files are irssi/docs/signals.txt,
834           irssi/src/silc/core/client_ops.[ch],
835           irssi/src/silc/core/silc-{channels,servers}.c
836
837 Sun Aug 24 12:58:30 CEST 2003  Jochen Eisinger <c0ffee@penguin-breeder.org>
838
839         * Use SILC_COMMAND_PING to estimate the round-trip time to the
840           server. Use this time to display a lag and disconnect when it
841           exceeds a specified limit.
842
843           Affected files are irssi/src/silc/core/silc-{lag,core}.c.
844
845 Mon Aug 11 17:14:17 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
846
847         * Remove the channel auth list in normal server if router
848           encofrces its list during connecting.  Send notify to channel
849           to remove the mode to remove the list.  Affected files are
850           silcd/server_util.c and silcd/packet_receive.c.
851
852 Wed Aug  6 14:52:04 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
853
854         * Added support for channel public keys.  Updated protocol specs
855           and implemented it.  Affected files are
856           silcd/command.c, command_reply.c, lib/silcclient/command.c,
857           lib/silcclient/command_reply.c.
858
859 Wed Jul 23 12:17:01 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
860
861         * Ignore SIGXFSZ and SIGXCPU signals in server.  They can
862           terminate the process on Linux.  Affected file silcd/silcd.c.
863
864 Mon Jun  2 19:13:27 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
865
866         * Check for NULL buffer in silc_buffer_clear.  Affected file
867           is lib/silcutil/silcbuffer.h.
868
869         * Simplified the backup router protocol by removing the _GLOBAL
870           types.  Updated protocol specs and the code.  Affected files
871           are silcd/server_backup.[ch].
872
873 Thu Apr 24 19:50:25 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
874
875         * Deny '@' and '!' from nicknames since they are reserved
876           by the SILC_COMMAND_INVITE and SILC_COMMAND_BAN commands.
877           Updated protocol specs and the code.
878
879           Affected files are silcd/server_util.[ch].
880
881 Wed Apr  9 18:51:59 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
882
883         * Fixed stack overflow in Irssi SILC client.  Affected
884           file irssi/src/silc/core/client_ops.c.
885
886         * Check that Host is set in ServerConnection and RouterConnection
887           in silcd.conf.  Affected file silcd/serverconfig.c.
888
889         * Fixed crash in server with protocol completion callbacks,
890           namely rekey and backup resuming protocols.  Affected files
891           are silcd/server_backup.c and silcd/server.c.
892
893         * Fixed rekey protocol to not restart if it is started already.
894           Affected files are lib/silcclient/client.c and
895           silcd/server.c.c
896
897 Mon Mar 17 18:35:24 EET 2003  Pekka Riikonen <priikone@silcnet.org>
898
899         * Rewrote SilcList, affected file lib/silcutil/silc*list.h.
900
901         * Fixed EOF handling in SILC Config, affected file
902           lib/silcutil/silcconfig.c.
903
904         * Fixed buffer overflows in lib/silcutil/silcstrutil.c.
905
906         * Fixed RESOLVING flag handling in JOIN notify and other
907           notifys to handle the resolvings correctly in client library.
908           Affected file lib/silcclient/client_notify.c.
909
910         * Do not send full INVITE and BAN lists in INVITE and BAN
911           notifys, only the changed information.  Affected file
912           silcd/command.c.
913
914         * Fixed INVITE notify sending in INVITE command, send it
915           only when needed.  Affected file silcd/command.c.
916
917         * Handle the founder key change properly in CMODE_CHANGE
918           notify.  Bug #122.  Affected file silcd/packet_receive.c.
919
920 Sun Mar  9 16:29:20 EET 2003  Pekka Riikonen <priikone@silcnet.org>
921
922         * Remove the mark for output (mark it only for input) after
923           purging outgoing queue.  Prevents the "Error in select()"
924           floods.  Affected file silcd/packet_send.c.
925
926         * Fixed incorrect connection deletion from client library
927           after calling "connect" client operation.  Could cause
928           crashes for example during reconnect timeouts.  Affected
929           files are lib/silcclient/client.c and
930           irssi/src/silc/core/client_ops.c.
931
932         * Check server private key file permissions before starting
933           the server.  Affected file silcd/serverconfig.c.
934
935 Tue Feb  4 22:53:26 EET 2003  Pekka Riikonen <priikone@silcnet.org>
936
937         * NULL terminate allocated string in silc_buffer_strformat.
938           Affected file lib/silcutil/silcbuffmt.c.
939
940         * Rewrote the invite/ban list string handling in server to
941           use SilcBuffer instead.  Affected files are silcd/command.c
942           and silcd/server_util.c.
943
944 Mon Feb  3 14:43:52 CET 2003  Pekka Riikonen <priikone@silcnet.org>
945
946         * Fixed double free in CMODE command when setting new HMAC
947           for channel.  Affected file silcd/command.c.
948
949         * Added couple of missing memset's to zero sensitive memory.
950           Affected files silcd/command.c, lib/silcclient/command.c.
951
952 Sun Jan 26 12:20:30 EET 2003  Pekka Riikonen <priikone@silcnet.org>
953
954         * Fixed a double free in INVITE command error handling in
955           server.  Affected file silcd/command.c.
956
957         * Added macros SILC_SWAB_[16|32] to swab byte order of
958           16-bit and 32-bit unsigned integers.  Affected file
959           lib/silcutil/silctypes.h.
960
961         * Use the SILC_SWAB_16 instead of htons() in server when
962           handling ports since the ports in structures are always
963           in little-endian order (regardless of platform).  Affected
964           file silcd/serverid.c and silcd/server_backup.c.
965
966 Tue Jan 21 17:18:04 EET 2003  Pekka Riikonen <priikone@silcnet.org>
967
968         * Send DISCONNECT in close admin command in server.  Affected
969           file silcd/command.c.
970
971         * Check whether we are already connecting to a remote router
972           (in addition of checking whether we are already connected)
973           before creating new connection.  Affected file silcd/server.c.
974
975 Thu Jan 16 18:47:00 EET 2003  Pekka Riikonen <priikone@silcnet.org>
976
977         * Added better compiler and compiler flags checking in
978           configure.
979
980         * Check that socket is valid after QoS is applied to data.
981           Affected file lib/silcutil/unix/silcunixsockconn.c.
982
983         * Make sure the socket connecetion is not closed to early
984           when closing connection in server.  Also make sure the
985           connection is always closed after error in a protocol.
986           Affected file silcd/server.c.
987
988 Wed Jan 15 11:03:36 CET 2003  Pekka Riikonen <priikone@silcnet.org>
989
990         * Removed --session and --dummy options from Irssi SILC Client.
991           -d option is available only if --enable-debug was given.
992           Affected files are irssi/src/silc/core/silc-core,
993           irssi/src/core/session.c and irssi/src/fe-text/silc.c.
994
995 Tue Jan 14 12:25:09 CET 2003  Pekka Riikonen <priikone@silcnet.org>
996
997         * Added silc_buffer_steal to steal the data from the buffer.
998           Affected file lib/silcutil/silcbuffer.h.
999
1000 Sat Jan 11 18:16:29 CET 2003  Giovanni Giacobbi <giovanni@giacobbi.net>
1001
1002         * Fixed server crash with double Primary block in config file.
1003
1004           Fixed also various memory leaks around the config file
1005           parser.  Affected files lib/silcutil/silcconfig.c,
1006           silcd/serverconfig.c.
1007
1008         * Changed my nickname (Johnny Mnemonic) to my real name, this
1009           means that bugs introduced by him were actually introduced
1010           by me!
1011
1012 Tue Jan  7 21:58:53 CET 2003  Jochen Eisinger <c0ffee@penguin-breeder.org>
1013
1014         * Don't display "foo appears as foo\nYou're now known as foo"
1015           messages.  Affected file irssi/src/silc/core/client_ops.c
1016
1017 Tue Jan  7 20:08:15 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1018
1019         * Fixed error handling of invalid client entry when calling
1020           commands in server.  Fixes a crash.  Affected file
1021           silcd/command.c.
1022
1023 Thu Dec 26 14:19:29 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1024
1025         * Added some sanity checks in server for correctness of the
1026           server configuration.  Affected file silcd/serverconfig.c.
1027
1028 Fri Dec 20 10:47:59 CET 2002  Pekka Riikonen <priikone@silcnet.org>
1029
1030         * Prevent endless resolving of user informations in USERS
1031           command by checking the command reply status correctly.
1032           Affected file lib/silcclient/command_reply.c.
1033
1034 Tue Dec 17 10:05:00 CET 2002  Pekka Riikonen <priikone@silcnet.org>
1035
1036         * Fixed file writing on WIN32 to use O_BINARY flag.  Affected
1037           file is lib/silcutil/silcfileutil.c.  A patch by Matthew
1038           Aldous <Matthew@Aldous.com>.
1039
1040         * Added better implementation using CriticalSection of
1041           SilcMutex on WIN32.  A patch by Mikko Lähteenmäki
1042           <mikko.lahteenmaki@pikabaana.net>.
1043
1044         * Added some Winsock WIN32 compatiblity defines into
1045           includes/silcwin32.h.
1046
1047 Mon Dec 16 19:33:05 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1048
1049         * Fixed double free in async host lookup code.  Affected file
1050           lib/silcutil/silcsockconn.c.
1051
1052         * On backup router handle now the SERVER_SIGNOFF from router
1053           for local connected servers too, and close the connections.
1054
1055           Do not process them as normally signing off servers when they
1056           really signoff by sending EOF fe, but always assume that
1057           router sends the SERVER_SIGNOFF.
1058
1059           Affected files silcd/server.c and silcd/packet_receive.c.
1060
1061         * Fixed socket unsetting when closing connections.  Affected
1062           files silcd/server.c and silcd/packet_send.c.
1063
1064         * Do not print the nickname in SERVER_SIGNOFF if we do not
1065           have it.  Prevents asserts in Irssi core.  It is possible we
1066           don't have the nick if it was just being resolved when server
1067           signoff.  Affected file irssi/src/silc/core/client_ops.c.
1068
1069 Thu Dec 12 23:22:50 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1070
1071         * Fixed autonick crashbug in client library.  Affected file
1072           lib/silcclient/client.c.
1073
1074         * Fixed Unix implementation of SilcMutex to really assert if
1075           the mutex is locked/unlcoked already.  Affected file
1076           lib/silcutil/unix/silcunixmutex.c.
1077
1078         * Fixed locking in silc_schedule_uninit.  It didn't lock
1079           when dispatching timeout tasks.  Affected file is
1080           lib/silcutil/silcschedule.c.
1081
1082         * Changed Win32 implementation of SilcThread to use modern
1083           Win32 interface.  Affected file is
1084           lib/silcutil/win32/silcwin32thread.c  A patch by Mikko L.
1085
1086 Thu Dec 12 12:06:59 CET 2002 Jochen Eisinger <c0ffee@penguin-breeder.org>
1087
1088         * Don't print signed messages when sending failed.  Affected files
1089           irssi/src/silc/core/silc-[servers.c/commands.h]
1090
1091         * Send adquate signal when founding a channel by joing it.  Affect
1092           file irssi/src/silc/core/client_ops.c
1093
1094 Wed Dec 11 21:46:19 CET 2002 Jochen Eisinger <c0ffee@penguin-breeder.org>
1095
1096         * Fix theme abstracts parsing.  Affected files irssi/default.theme,
1097           irssi/src/fe-common/core/themes.c
1098
1099 Wed Dec 11 20:20:07 EET 2002 Pekka Riikonen <priikone@silcnet.org>
1100
1101         * Fixed close command to use the port correctly when closing
1102           server connections.  Affected file silcd/idlist.c.
1103
1104         * Check for NULL outbuf in silc_socket_write.  It is possible
1105           that it is NULL is some odd case.  Affected files are
1106           lib/silcutil/[unix/win32]/silc[unix/win32]sockconn.c.
1107
1108         * Do not call final protocol callback for backup router
1109           resuming protocol when closing connection.  It is closed
1110           by timeout in case of error.  Affected file silcd/server.c.
1111
1112         * Backup reconnect to router if backup resuming protocol
1113           failed.  Affected file silcd/server_backup.c.
1114
1115 Wed Dec 11 10:01:26 CET 2002 Pekka Riikonen <priikone@silcnet.org>
1116
1117         * Fixed double free in SKE library error hadling when signature
1118           error occurred.  Affected file lib/silcske/silcske.c.
1119
1120         * Save the fingerprint to new SilcClientEntry after changing
1121           nickname.  Affected file lib/silcclient/client_notify.c.
1122
1123         * Print SIGNOFF in Irssi SILC client only if the nickname is
1124           known.  Prevents asserts in Irssi core.  It is possible we
1125           don't have the nick if it was just being resolved when it
1126           quit.  Affected file irssi/src/silc/core/client_ops.c.
1127
1128 Tue Dec 10 21:47:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1129
1130         * Fixed double free in invite list adding code when adding
1131           invite strings.  Affected file silcd/server_util.c.
1132
1133 Fri Dec  6 17:40:24 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1134
1135         * More log printing during backup router protocol.  Affected
1136           file silcd/server_backup.c.
1137
1138         * Removed backwards support for old private key file format.
1139           Affected file lib/silccrypt/silcpkcs.c.
1140
1141         * Removed backwards support for not-so-strict decryption length
1142           check, it's strict now.  Affected lib/silccrypt/silccipher.c.
1143
1144         * GETKEY to update the client entrys fingerprint too.
1145           Affected file lib/silcclient/command_reply.c.
1146
1147         * Added --without-libtoolfix for package builders using weird
1148           wrappers around libtool (BSD at least).
1149
1150 Thu Dec  5 22:29:46 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1151
1152         * Fixed backup router bugs:  When backup resumes router and
1153           receives a CHANNEL_MESSAGE packet the backup must not act
1154           as router since the packet header decryption would be
1155           different.  Also, when relaying packets to channel, do
1156           not re-encrypt packets on backup that came from the primary
1157           since the connection isn't really router-router connection.
1158           Affected files silcd/server.c, silcd/packet_send.c.
1159
1160         * Added checks in encryption/decryption that encryption/decryption
1161           length sent as argument really is multiple by block size.  Helps
1162           catching really weird bugs like the above backup router bugs
1163           when packets are being decrypted in wrong way.  Affected files
1164           lib/silccore/silcpacket.c, and lib/silccrypt/silccipher.c.
1165
1166         * Fixed padding generation in private key file encryption.
1167           Affected file lib/silccrypt/silcpkcs.c.
1168
1169 Thu Dec  5 16:35:23 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1170
1171         * Added ignore_message_signatures setting which can be used
1172           to ignore signatures in messages.  Affected files are
1173           irssi/src/silc/core/client_ops.c, silc-core.c.
1174
1175         * Fixed the libtoolfix to use command line options instead of
1176           environment variables.  They didn't work as expected.  Now,
1177           the libtool is fully run-time configurable.
1178
1179 Wed Dec  4 21:08:52 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
1180
1181         * Verify signature payload for signed messages. Affected files
1182           irssi/src/silc/core/client_ops.h, irssi/src/silc/core/silc-servers.c,
1183           irssi/src/silc/core/silc-core.h
1184
1185         * Display signature verification result in public and private
1186           messages using theme abstracts. See irssi/default.theme for
1187           examples on their usage. Affected files
1188           irssi/default.theme, irssi/src/fe-common/silc/fe-messages.h,
1189           irssi/src/fe-common/silc/module-formats.[ch],
1190           irssi/src/fe-common/silc/fe-common-silc.c,
1191           irssi/src/fe-common/silc/Makefile.am
1192           irssi/src/fe-common/core/fe-messages.[ch]
1193
1194         * Fixed bugs in Irssi's theme parsing. Affected files
1195           irssi/src/fe-common/core/themes.c
1196
1197 Wed Dec  4 18:29:13 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1198
1199         * Calculate the correct length for signed messages before
1200           encrypting, it must be multiple by block size.  Affected
1201           file lib/silccore/silcmessage.c.
1202
1203         * silc_message_signed_get_public_key returns now both
1204           decoded and encoded public key.  Affected files are
1205           lib/silccore/silcmessage.[ch].
1206
1207         * Added libtoolfix script that makes the libtool more generic
1208           and configurable in run-time.  Now we can specify in run-time
1209           if what kind of libraries we want to create, regardless of
1210           configuration.  SIMs are now creates even if --disable-shared
1211           was explicitly given.
1212
1213 Tue Dec  3 23:26:55 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1214
1215         * Fixed founder key sending in CMODE command in client.
1216           Affected file lib/silcclient/command.c.
1217
1218         * Fixed CUMODE founder authentication in server to not check
1219           for client's public key since it's not supposed to do that.
1220           Affected file silcd/command.c.
1221
1222 Tue Dec  3 12:02:41 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
1223
1224         * Set realname and hostname in NICK_REC records. Affected file
1225           irssi/src/silc/core/silc-nicklist.c
1226
1227 Mon Dec  2 20:50:20 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1228
1229         * Remove 1.0 protocol backwards compat code from client
1230           library.
1231
1232         * Added more reliable check for whether nickname did change
1233           or not, or whether only Client ID changed in NICK_CHANGE
1234           notify.  Affected file lib/silcclient/client_notify.c.
1235           Fixes bug in '@' character handling in a nickname.
1236
1237         * Added support for automatically parsing signature from
1238           the message payload.  Added new function
1239           silc_message_get_signature to return the payload to
1240           application.  Affected files lib/silccore/silcmessage.[ch].
1241
1242         * Changed the private_message and channel_message client
1243           operations to deliver the SilcMessagePayload to the
1244           application too.  Application can use it fe. to get the
1245           signature from the message for verification.  Affected
1246           file lib/silcclient/silcclient.h, client_channel.c and
1247           client_prvmsg.c.
1248
1249         * Redefined the signed payload for message payloads.
1250           Updated protocol specs and implemented.
1251
1252 Mon Dec  2 16:28:29 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1253
1254         * Fixed wrong invite and ban list handling in server command
1255           reply.  Affected files are silcd/command_reply.c,
1256           silcd/server_util.[ch].
1257
1258 Sun Dec  1 20:48:17 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1259
1260         * Fixed CMODE setting in server when founder mode was set.
1261           Affected file silcd/command.c.  Bug #95.
1262
1263         * Added support to setting specific public key in CMODE in
1264           Irssi SILC client.  Affected file lib/silcclient/command.c.
1265
1266         * Added support to use specific public key in CUMODE in
1267           Irssi SILC Client.  Affected file lib/silcclient/command.c.
1268
1269         * Added support for inviting and banning by public key in
1270           Irssi SILC client.  Affected file lib/silcclient/command.c.
1271
1272         * Fixed fingerprint/babbleprint showing in invite and ban
1273           list command replys.  Affected file is
1274           irssi/src/silc/core/client_ops.c.
1275
1276 Sun Dec  1 16:32:03 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
1277
1278         * Format CMODE +c and +h to display both the mode and the argument
1279
1280 Sun Dec  1 18:17:22 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1281
1282         * Added test vectors and test programs for SHA-1, MD5,
1283           HMAC-SHA1 and HMAC-MD5.  New tests are located in
1284           lib/silccrypt/tests/.  Fixed also argument decoding bug in
1285           MD5 implementation.  Affected file lib/silccrypt/md5.c.
1286
1287         * Changed the channel private key and private message key
1288           generation (with static keys) to use SHA1 instead of MD5,
1289           as SHA1 is the mandatory hash function in SILC.  Affected
1290           file lib/silcclient/client_[channel/prvmsg].c.
1291
1292         * Changed the private key file encryption to use SHA1 instead
1293           of MD5.  Added support for the old generation and added
1294           automatic change of the key (to be removed later).  Affected
1295           files lib/silccrypt/silcpkcs.c.
1296
1297 Sat Nov 30 19:07:52 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1298
1299         * Load only files with .pub suffix in PublicKeyDir.  Affected
1300           file silcd/serverconfig.c.
1301
1302 Sat Nov 30 14:29:34 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
1303
1304         * Extended the SILC_SERVER_LOG_ERROR macro to all available logging
1305           channels.  Affected files silcd/silcd.c, silcd/server.h.
1306
1307         * Added the config directive PublicKeyDir for the client block.
1308           Affected files doc/exampe_silcd.conf.in, silcd/serverconfig.[ch].
1309
1310 Sat Nov 30 09:30:55 CET 2002  Pekka Riikonen <priikone@silcnet.org>
1311
1312         * Merged Toni's irssi/silc.conf patch.
1313
1314         * ROBODoc cleanup patch to lib/silccrypt/silcpkcs.h by johnny.
1315
1316         * Max alloc tests in allocation routines.  Affected file
1317           lib/silcutil/silcmemory.c.
1318
1319 Fri Nov 29 23:44:29 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1320
1321         * Fixed a typo in resuming code that fixed detach/resume code
1322           in server.  Bug #93.  Affected file silcd/packet_receive.c.
1323
1324 Thu Nov 28 17:17:11 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
1325
1326         * Do reverse lookups for server when /connecting. Affected files
1327           irssi/silc.conf, irssi/src/core/servers.c, irssi/src/core/network.c,
1328           irssi/src/core/net-nonblock.*
1329
1330 Thu Nov 28 16:19:18 CET 2002  Pekka Riikonen <priikone@silcnet.org>
1331
1332         * Added library versioning for shared libraries.  Affected
1333           files configure.in.pre and lib/Makefile.am.pre.
1334
1335 Wed Nov 27 21:51:52 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
1336
1337         * Display INVITE and BAN lists as specified by SILC 1.2
1338
1339 Wed Nov 27 16:01:11 CET 2002  Pekka Riikonen <priikone@silcnet.org>
1340
1341         * Do not send invite list back unless asked (when sending
1342           no arguments) or when list was modified.  Affected file
1343           silcd/command.c.
1344
1345         * Remove client from invite list in KILLED notify and in
1346           KILL command.  Affected file silcd/command.c and
1347           silcd/server.[ch].
1348
1349         * Fixed bugs in invite list handling in INVITE command.
1350           Affected files silcd/command.c and silcd/server_util.c.
1351
1352         * Merged with Irssi 0.8.6.
1353
1354         * Fixed UTF-8 in Irssi SILC Client, setlocale was missing.
1355           Affected file irssi/src/fe-text/silc.c.
1356
1357 Mon Nov 25 18:21:43 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1358
1359         * The silc_argument_get_[first/next] now return the argument
1360           type to caller.  Added silc_argument_payload_encode_one.
1361
1362           Affected files are lib/silccore/silcargument.[ch].
1363
1364         * Added support for the SILC 1.2 INVITE command and new
1365           invite lists to server.  Affected files are silcd/command.c,
1366           silcd/server_util.[ch] and silcd/packet_[receive/send].[ch].
1367
1368         * Added support for the SILC 1.2 BAN command and new
1369           ban lists to server.  Affected files are silcd/command.c,
1370           silcd/server_util.[ch] and silcd/packet_[receive/send].[ch].
1371
1372         * Added support to client sending new INVITE command.  Affected
1373           file is lib/silcclient/command.c.
1374
1375         * Added support to client sending new BAN command.  Affected
1376           file is lib/silcclient/command.c.
1377
1378         * Added support for removing client from invite list when kicked
1379           from channel, as SILC 1.2 dictates.  Affected files are
1380           silcd/packet_receive.c and silcd/command.c.
1381
1382 Sun Nov 24 18:26:42 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1383
1384         * If iv argument to silc_cipher_[encrypt/decrypt] is NULL, use
1385           automatically the cipher's internal IV.  Affected files
1386           lib/silccrypt/silccipher.[ch].
1387
1388         * Assure the RESUME_CLIENT packet is not sent to twice to
1389           backup router if the detached client was originated from
1390           the backup.  Affected file silcd/server.c.  Bug #76.
1391
1392         * Changed silc_sim_symname to not allocate memory.  Affected
1393           file lib/silcsim/silcsimutil.c.
1394
1395         * Fixed memory leaks with SIMs in server.  Affected files
1396           silcd/serverconfig.c, silcd/server.c.
1397
1398         * Fixed channel key distribution after resuming detached
1399           client.  Affected files silcd/packet_receive.c.
1400
1401         * Fixed channel's global_user boolean checking after detaching.
1402           Check it after changing the owner of the client not before.
1403           Affected file silcd/packet_receive.c.
1404
1405         * Fixed few double frees from client library.  Fixes at least
1406           Bug #81, possibly others too.
1407
1408         * UTF-8 decode topics also in JOIN command reply and TOPIC_SET
1409           notifys in Irssi SILC Client.  Affected file is
1410           irssi/src/silc/core/client_ops.c.  Bug #82.
1411
1412         * Applied Ville Räsänen's manual page and --mandir bugfix
1413           patch.  Affected files are configure.in.pre and Makefile.am.pre.
1414           Bug #88.
1415
1416 Fri Nov 22 18:34:20 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1417
1418         * Added support to backup router protocol for backup to tell
1419           normal server that it cannot use the backup router as primary
1420           because the primary isn't really down.  Updated protocol
1421           specs.
1422
1423         * Added support for primary router to tell backup router that
1424           resuming is not possible because the backup really isn't primary
1425           in the cell.  For example if backup disconnected itself the
1426           resuming is not allowed since the primary really did not
1427           go down.  Updated protocol specs.
1428
1429         * Removed MARS from crypto library.
1430
1431         * Defined the CTR mode and Randomized CBC mode in SILC.  The
1432           CTR mode is RECOMMENDED now in specification.  Defined also
1433           Serpent cipher as optional cipher.  Updated the protocol specs.
1434
1435 Thu Nov 21 12:43:28 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1436
1437         * Added support for inviting/banning by IP/MASK, public key,
1438           and explicit Client ID.  Redefined the command and notify
1439           types to allow easier forwards support for other methods
1440           of inviting/banning.  Updated protocol specs.
1441
1442         * Remove the client from channel's invite lists if the client
1443           is kicked or killed.  Updated protocol specs.
1444
1445         * Unified the Channel Message Payload and Private Message
1446           into one Message Payload.  Updated protocol specs and
1447           implemented.
1448
1449 Tue Nov 19 22:30:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1450
1451         * Don't wait for EOF after socket error has occurred, but
1452           close the connection.  Affected file is silcd/server.c.
1453
1454 Mon Nov 18 18:58:26 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1455
1456         * Added support for setting FOUNDER mode on channel with
1457           specific public key which can be set with CMODE command.
1458           Updated protocol specs and implemented in client and server.
1459
1460         * Fixed the Irssi SILC client to correctly shutdown the client
1461           library to avoid memory leaks.  Affected files are
1462           irssi/src/silc/core/silc-core.c and silc-servers.c.
1463
1464         * Deprecated the No Reply flag in SKE protocol and introduced
1465           "IV Included" flag which can be used to indicate that the IV
1466           is included in the ciphertext.  This makes it possible to use
1467           SILC on unreliable transport, such as UDP which may cause
1468           packet reordering and losses.  Updated protocol specs, did
1469           not implement yet.
1470
1471 Sun Nov 17 15:50:57 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1472
1473         * Fixed the MPI implementation of silc_mp_sizeinbase to return
1474           < 32 bit values in correct size.  Affected file is
1475           lib/silcmath/mp_mpi.c.
1476
1477 Sat Nov 16 13:14:45 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1478
1479         * Fixed the KE Start Payload parsing to check that mandatory
1480           fields are present.  Affected file lib/silcske/payload.c.
1481
1482         * Fixed compilation warnigs in Irssi SILC Client.  Affected
1483           files are irssi/src/silc/core/silc-query.c. client_ops.c.
1484
1485 Thu Nov 14 19:33:28 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
1486
1487         * Print "nick now appears as newnick" and update Irssi's nicklist
1488           when you change your nick to "nick". Closes #62
1489
1490         * Never format your own nick. Closes #63
1491
1492 Thu Nov 14 09:44:54 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
1493
1494         * SILC_UMODE_GONE changes are now propagated correctly to the
1495           Irssi client. Closes #54
1496
1497 Tue Nov 12 19:42:18 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
1498
1499         * Fixed example in /HELP KEY
1500
1501         * Added expando $j which expands to current SILC Client version
1502
1503 Tue Nov 12 19:46:39 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1504
1505         * Fixed public key decoding in crypto library.
1506
1507         * Added better error printing to SKE library.
1508
1509 Tue Nov 12 08:50:12 CET 2002  Pekka Riikonen <priikone@silcnet.org>
1510
1511         * Fixed NICK command to not crash if nickname was not sent.
1512
1513 Mon Nov 11 19:32:00 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1514
1515         * Added Encrypt-Then-MAC order to SILC packet MAC generation.
1516           Deprecated the old Encrypt-And-MAC order.  Updated protocol
1517           specs and implemented.
1518
1519         * Added Encrypt-Then-MAC order to Channel Message Payload MAC
1520           generation.  Updated specs and implemented.
1521
1522 Sun Nov 10 12:20:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1523
1524         * Added support for rekey before 2^32 sequence number wraps.
1525           Affected files in server and client library.
1526
1527         * Padding must be at least 8 bytes now.  Implemented and updated
1528           protocol specs.
1529
1530         * Compute maximum padding for authentication packets to make
1531           passphrase approximation attacks impossible.  Affected files
1532           in client library and in server.
1533
1534         * Fixed PING command sending in client library and handling in
1535           server.  The server ID must be ID Payload, not raw ID data.
1536           Affected files in server and client library.
1537
1538         * Defined that all public keys sent in commands and notify
1539           payloads are actually Public Key Payloads not raw public key
1540           data.  Updated protocol specs and implemented.
1541
1542         * Updated protocol version to 1.2.  Updated specs and code.
1543
1544         * Added ERR_UNSUPPORTED_PUBLIC_KEY and ERR_OPERATION_ALLOWED
1545           status types.  Updated specs and the code.
1546
1547         * Added support for normal client to kill its own entries from
1548           the network.  Updated protocol specs and the code.
1549
1550         * Defined the SILC_MESSAGE_FLAG_SIGNED.  Updated protocol specs
1551           and added initial implementation.
1552
1553         * Added MAC field to the Private Message Payload to protect
1554           against chosen ciphertext attacks.  Updated the protocol specs
1555           and implemented.
1556
1557         * Added idle and signon fields to the ATTRIBUTE_SERVICE
1558           attribute to indicate the user's current idle and signon time
1559           of a service.  Updated protocol specs and implemented.
1560
1561 Thu Nov  7 19:21:10 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1562
1563         * Added "do_not_bind" argument to silc_client_file_send what
1564           can be used to not bind locally but assume the file receiver
1565           provides the point of connect.  Usefull when sender is behind
1566           NAT device.  Affected file lib/silcclient/silcclient.h and
1567           client_ftp.c.
1568
1569         * Added -no-listener option to FILE SEND command in Irssi SILC
1570           client.  Affected file irssi/src/silc/core/silc-servers.c.
1571           Renamed FILE RECEIVE to FILE ACCEPT.
1572
1573         * Confirm passphrase for private key encryption in
1574           silc_create_key_pair and silc_change_private_key_passphrase.
1575           Affected files are lib/silcutil/silcapputil.c.
1576
1577 Thu Nov  7 10:05:28 CET 2002  Pekka Riikonen <priikone@silcnet.org>
1578
1579         * Move silc_client_packet_send back to internal, added
1580           silc_client_send_packet, a bit simpler function for application.
1581           Affected files lib/silcclient/silcclient.h, client.c and
1582           client_internal.h.
1583
1584         * Moved the SilcClientEntry, SilcChannelEntry and
1585           SilcServerEntry to silcclient.h to be public and documented
1586           them for application.  Affected files are
1587           lib/silcclient/silcclient.h and idlist.h.
1588
1589 Wed Nov  6 17:18:13 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1590
1591         * Fixed manual page installation patch by Ville Räsänen.
1592           USERS help page fix patch by Ville Räsänen
1593
1594         * Changed the silc_client_command_call interface to make
1595           the command call simpler for the application.  The library
1596           now handles the command line parsing, command finding and
1597           execution.  Application only needs to call the function
1598           with the command line.  Affected files are
1599           lib/silcclient/silcclient.h, command.[ch].
1600
1601         * Fixed silc_get_input to NULL-terminate the returned input.
1602           Affected file lib/silcutil/silcutil.c.
1603
1604         * Resolve the client's public key in JOIN command if the
1605           founder auth data is being requested but we don't know the
1606           client's public key.  Affected file silcd/command.c.
1607           Bug #53.
1608
1609 Mon Nov  4 16:02:59 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1610
1611         * Print notify for server opers when backup router comes
1612           online.  Affected file silcd/server.c.
1613
1614         * Fixed the INVITE command to send the invite list in
1615           command reply.  Affected file silcd/command_reply.c.
1616
1617         * Fixed MOTD command reply sending.  Affected file
1618           silcd/command.c.
1619
1620         * UTF-8 decode the topic in TOPIC command reply and LIST
1621           command reply in Irssi SILC client.  Affected file is
1622           irssi/src/silc/core/client_ops.c.
1623
1624 Sun Nov  3 17:59:15 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1625
1626         * Fixed the INVITE command to not crash Irssi SILC client
1627           when given without nickname argument.  AFfected file
1628           irssi/src/silc/core/client_ops.c.
1629
1630         * Fixed double free in WHOIS query on normal server when
1631           forwarding query to router.  Affected file is
1632           silcd/server_query.c.
1633
1634         * Fixed WATCH command reply handling on normal server which
1635           was missing altogether.  Affected file silcd/command_reply.c.
1636           Bug #44.
1637
1638 Sun Nov  3 00:42:05 EET 2002  Mika Boström <bostik@lut.fi>
1639
1640         * Added man-pages for silc(1), silcd(8) and silcd.conf(5).
1641           Included yodl sources for each of these. Also modified
1642           Makefile.am prototype to install these files to proper
1643           locations. Updated CREDITS. Affected file Makefile.am.pre,
1644           new files doc/*.yo, doc/silc.1, doc/silcd.conf.5,
1645           doc/silcd.8.
1646
1647 Sat Nov  2 21:26:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1648
1649         * Added support for encrypted private key files.  Now
1650           passphrase must be provided when new key pair is created
1651           (can be empty though), and prompted when loading the
1652           private key.  Added support for loading the old-style
1653           non-encrypted private keys as well.  Affected files
1654           lib/silccrypt/silcpkcs.[ch], Irssi SILC client and
1655           SILC Server.
1656
1657         * Fixed silc_get_input to accept input on all terminals.
1658           Affected file lib/silcutil/silcutil.c.
1659
1660         * Moved the Irssi SILC client key loading and other stuff
1661           to be called after the arguments and UI is initialized.
1662           Affected file irssi/src/silc/core/silc-core.c.  Bug #31.
1663
1664         * Added -P option to Irssi SILC client which can be used
1665           to change the passphrase of the private key.  Affected
1666           file irssi/src/silc/core/silc-core.c.
1667
1668         * Added silc_change_private_key_passphrase apputil routine
1669           to lib/silcutil/silcapputil.[ch].
1670
1671 Sat Nov  2 12:53:09 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1672
1673         * Fixed connection closing in client library to not crash.
1674           Moved the connection freeing totally to function
1675           silc_clinet_del_connection.  Affected file
1676           lib/silcclinet/client.c.
1677
1678 Fri Nov  1 18:57:02 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1679
1680         * Changed includes/silcincludes.h to silcincludes.h.in to
1681           include configuration specific information.  The silcdefs.h
1682           is not included in to installation anymore (it's only
1683           compilation time header).
1684
1685 Fri Nov  1 10:30:26 CET 2002  Pekka Riikonen <priikone@silcnet.org>
1686
1687         * Moved the SilcClient and SilcClientConnection from client.h
1688           to the public lib/silcclient/silcclient.h.  Changed the
1689           structures a bit.
1690
1691 Thu Oct 31 22:44:07 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1692
1693         * If version string in silc_clinet_alloc is NULL the library
1694           puts it automatically.  Affected file lib/silcclient/client.c.
1695
1696         * Changed the version strings from variables to #define's
1697           in includes/silcversion.h.
1698
1699 Wed Oct 30 16:17:30 CET 2002  Pekka Riikonen <priikone@silcnet.org>
1700
1701         * Added shared library complation support.
1702
1703 Tue Oct 29 21:48:55 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1704
1705         * Added lib/silcutil/silcapputil.[ch] for application
1706           utility functions.  It includes routines for applications'
1707           convenience.  Added silc_create_key_pair, silc_show_public_key
1708           and silc_load_key_pair functions.
1709
1710 Tue Oct 29 17:36:44 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1711
1712         * Send RESUME_CLIENT packet from router to backup routers
1713           to in resuming.  Affected file silcd/packet_receive.c.
1714
1715 Mon Oct 28 21:23:39 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1716
1717         * In IDENTIFY command parsing, send all other IDs except
1718           Client IDs explicitly to router for resolving on normal
1719           server.  Also check that ID received in WHOIS command is
1720           always Client ID, others are not allowed.  Affected file
1721           silcd/server_query.c.
1722
1723         * Merged latest changes from irssi.org CVS.
1724
1725 Sun Oct 27 11:44:32 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1726
1727         * Merged c0ffee's /set heartbeat patch to Irssi SILC client.
1728           Affected files irssi/src/silc/core/silc-core, silc-server.c.
1729
1730         * Fixed the heartbeat sending in Irssi SILC client.  Moved
1731           the silc_client_packet_send to silcclient.h for application
1732           usage.  Affected files lib/silcclient/client_internal.h
1733           lib/silcclient/silcclient.h.
1734
1735         * Fixed a bug in query resolving in server.  Used wrong
1736           variable in a for loop and crashed.  Affected file is
1737           silcd/server_query.c.
1738
1739         * Server constructs requested attributes only to locally
1740           connected clients.  Affected file silcd/server_query.c.
1741           Bug #36.
1742
1743         * Fixed a bug when sending resolving from router to server
1744           with requested attributes.  The constructed WHOIS command
1745           was incorrect.  Affected file silcd/server_query.c.
1746           Bug #38.
1747
1748         * Fixed Requested Attributes saving in WHOIS command reply.
1749           The length of the data buffer must be saved too.  Affected
1750           file silcd/command_reply.c.
1751
1752         * Update the client entry's servername after detaching is
1753           over.  Affected file silcd/packet_receive.c.  Bug #37.
1754
1755         * Resolve incomplete client entrys in CUMODE_CHANGE and
1756           CMODE_CHANGE notifys.  Affected file is
1757           lib/silcclient/client_notify.c.  Bug #42.
1758
1759 Thu Oct 24 12:22:35 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1760
1761         * Fixed channel key packet processing bug on backup router
1762           during backup resuming protocol.  Affected file is
1763           silcd/packet_receive.c.
1764
1765         * Fixed memory leaks in server.  Affected files are
1766           silcd/server.c and silcd/packet_receive.c.
1767
1768         * Fixed packet decryption problem when backup router encrypted
1769           channel message with wrong key during backup resuming
1770           protocol.  Affected file silcd/packet_send.c.
1771
1772         * ROBODoc documented lib/silccrypt/silccipher.h.  A patch by
1773           Toni Willberg (toniw@iki.fi)
1774
1775         * Changed the SilcCipher context to be private.  Changed the
1776           silc_cipher_get_iv to just return pointer to the IV.  Added
1777           silc_cipher_get_name to return the name of the cipher.
1778           Fixed code all around to support these changes.  Affected
1779           files are lib/silccrypt/silccipher.[ch], client library and
1780           server.
1781
1782 Wed Oct 23 19:01:41 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1783
1784         * Fixed unaligned access in lib/silccore/silcattrs.c.
1785
1786         * Fixed libtool linking in lib/silcsim/Makefile.am.
1787
1788         * Fixed services attribute printing.  Affected files is
1789           irssi/src/silc/core/silc-queries.c.
1790
1791 Wed Oct 23 09:51:04 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
1792
1793         * Fixed a crashbug in incoming server accepting.  Affected
1794           file silcd/server.c.
1795
1796 Tue Oct 22 13:02:32 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1797
1798         * Added automatically generated index to Toolkit Reference
1799           Manual.
1800
1801         * Added support for Postscript Toolkit Reference Manual.
1802
1803 Mon Oct 21 21:30:40 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
1804
1805         * Merged DISCONNECT fix, and autoconn port fix from Irssi
1806           CVS.
1807
1808 Sun Oct 20 19:54:55 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1809
1810         * Added 'send_events' boolean argument to the function
1811           silc_schedule_set_listen_fd which sends the set events to
1812           the application explicitly if set to TRUE.  Default action
1813           should be FALSE.  Affected file lib/silcutil/silcschedule.[ch],
1814           lib/silcclient/client_internal.h and silcd/server_internal.h.
1815
1816         * Added silc_compare_timeval to determine which time values
1817           is smaller.  Affected file lib/silcutil/silcutil.[ch].
1818
1819         * Added sort-of "Quality of Service" (QoS) support to
1820           SilcSocketConnection.  Data reception can be controlled with
1821           rate limit per second and/or read data length limit.
1822           Added silc_socket_set_qos.  Affected files are
1823           lib/silcutil/silcsockconn.[ch] and unix/silcunixsockconn.c.
1824
1825         * Added the QoS configuration to SILC Server configuration
1826           file.  Affected files are silcd/serverconfig.[ch] and
1827           server.c.
1828
1829 Sun Oct 20 14:12:24 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
1830
1831         * Merged with irssi.org CVS.
1832
1833         * Failed OPER and SILCOPER authentications are now logged.
1834           Affected file silcd/command.c.  Bugs #25.
1835
1836 Sat Oct 19 13:32:15 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
1837
1838         * ROBODoc documented lib/silcutil/silcbuffer.h and
1839           lib/silcutil/silcdlist.h.  Patch by Ville Räsänen
1840           <ville.rasanen@iki.fi>.
1841
1842 Fri Oct 18 10:51:04 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1843
1844         * Added support for auto-passphrase authentication from the
1845           config file during connecting which was not implemented
1846           yet.  Affected file irssi/src/silc/core/client_ops.c.
1847
1848         * Fixed a bug in authentication protocol failure handling which
1849           was processing wrong callback context.  Affected files
1850           are lib/silcclient/client.c and protocol.c.
1851
1852         * Fixed the /ATTR allow off to actually work.  Affected file
1853           is irssi/src/silc/core/silc-queries.c.
1854
1855         * Fixed the /ATTR -del to work.  Affected file is
1856           irssi/src/silc/core/silc-queries.c.
1857
1858 Thu Oct 17 23:45:12 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1859
1860         * Fixed string formatting crashbug in lib/silccore/silcattrs.c.
1861
1862         * Fixed mask attribute adding in Irssi SILC client.  Affected
1863           file irssi/src/silc/core/silc-queries.c.
1864
1865 Thu Oct 17 16:40:39 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1866
1867         * Added support for saving the requested attributes in
1868           WHOIS to directory.  Affected file is
1869           irssi/src/silc/core/silc-queries.c.
1870
1871 Wed Oct 16 17:40:56 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1872
1873         * Added support for parsing VCard fields that do not have
1874           the TYPE= for types.  Affected file lib/silcutil/silcvcard.c.
1875
1876         * Fixed a double free bug in hash table foreach function
1877           if the entry was deleted in the foreach callback.  Affected
1878           file lib/silcutil/silchashtable.c.
1879
1880 Tue Oct 15 18:05:24 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1881
1882         * Added silc_attribute_get_verify_data to return the signature
1883           verification data for either user digital signature or
1884           server digital signature in Requested Attributes.  Affected
1885           files are lib/silccore/silcattrs.[ch].
1886
1887         * Added silc_vcard_alloc which is used to allocated dynamic
1888           SilcVCard context.  The silc_vcard_free now checks whether
1889           the context is dynamically allocated or not.  Affected files
1890           are lib/silcutil/silcvcard.[ch].
1891
1892 Mon Oct 14 17:55:44 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1893
1894         * Periodically remove the NOATTR status from client entry
1895           so that the client may take the attributes in use even after
1896           server has resolved them unsuccessfully earlier.  Affected
1897           file silcd/server_query.c and idlist.h.
1898
1899         * Moved sha1hash and md5hash from client->internal to
1900           SilcClient for application usage.  Affected files are
1901           lib/silcclient/client.h and client_internal.h.
1902
1903         * Fixed attribute encoding and decoding bugs.  Affected
1904           files lib/silccore/silcattrs.[ch].
1905
1906         * Added ATTR command to Irssi SILC Client which is used to
1907           manage user's Requested Attributes sending and values for
1908           WHOIS command.  Affected files around Irssi SILC client.
1909
1910 Mon Oct 14 14:33:54 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1911
1912         * Added silc_buffer_strformat which can be used to format
1913           strings into a buffer which size is automatically increased.
1914           Affected file lib/silcutil/silcbuffmt.[ch].
1915
1916         * Added implementation of VCard (RFC 2426) which can be used
1917           as part of Requested Attributes in WHOIS command.  Affected
1918           file lib/silcutil/silcvcard.[ch].
1919
1920 Fri Oct 11 23:52:17 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1921
1922         * Some strncat -> silc_strncat changes our the core and
1923           client library.
1924
1925         * Added SILC_SKE_STATUS_SIGNATURE_ERROR and OUT_OF_MEMORY
1926           errors.  Added better error printing to SKE library.
1927           Affected files lib/silcske/silcske.c, silcske_status.h and
1928           payload.c.
1929
1930         * Save the PKCS key length even if only private key is set to
1931           SilcPKCS.  Affected file lib/silccrypt/silcpkcs.[ch] and rsa.c.
1932
1933         * Fixed the usage of silc_pkcs_get_key_len since it returns the
1934           length in bits not in bytes.  Affected files are
1935           lib/silcske/silcske.c, lib/silccore/silcauth.c and
1936           silcd/server_query.c.
1937
1938 Wed Oct  9 17:22:57 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1939
1940         * Added silc_attribute_payload_encode_data to directly encode
1941           the data into the attributes buffer.  Renamed function
1942           silc_attribute_payload_parse_list to silc_attribute_payload_parse.
1943           Affected files are lib/silccore/silcattrs.[ch].
1944
1945         * silc_hash_table_find_foreach calls the foreach function now
1946           once even if the nothing was found with context set to NULL.
1947           Affected file lib/silcutil/silchashtable.[ch].
1948
1949         * Remove the RESOLVING flag from client entry after received
1950           the Requested Attributes from the client.  Fixed memory leak
1951           in client entry freeing.  Affected files silcd/server_query.c
1952           and idlist.c.
1953
1954         * Added Requested Attributes support into SILC Client Library.
1955           It is not able to send requested attributes in WHOIS command,
1956           and also receive and process requested attributes.  Added
1957           silc_client_attribute_[add|del] and silc_client_attributes_get
1958           functions.  Added also `ignore_requested_attributes' to the
1959           SilcClientParams to not use attributes in client.  Affected
1960           files are lib/silcclient/command.c, client_attrs.[ch],
1961           silcclient.h, client_internal and client.[ch].
1962
1963         * Changed the silc_client_get_client_by_id to support Requested
1964           Attributes, it takes them as argument now.  Affected file
1965           is lib/silcclient/silcclient.h, and idlist.c.
1966
1967         * Added -details option to WHOIS command in Irssi SILC Client
1968           to support the requested attributes.  By default it requests
1969           all attributes.  Affected file lib/silcclient/command.c and
1970           irssi/doc/help/in/whois.in.
1971
1972 Tue Oct  8 17:58:28 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1973
1974         * Add also SERVICE attribute for server-constructed attribute
1975           data.  Also digitally sign the attributes and add
1976           SERVER_DIGITAL_SIGNATURE attribute.  Affected file is
1977           silcd/server_query.c.
1978
1979 Mon Oct  7 18:25:35 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1980
1981         * Changed the silc_attribute_payload_encode to support list
1982           of attributes (function may be called several times to add
1983           a new attribute).  Removed the silc_attribute_payload_encode_list
1984           function.  The encoding function now also automatically encodes
1985           the data, so the caller does not need to do that.  Affected
1986           files lib/silccore/silcattrs.[ch].
1987
1988         * Added support for replying on behalf of the user to the
1989           Requested Attributes in WHOIS command in the server.  Affected
1990           file silcd/server_query.c.
1991
1992         * SILC_NOT_IMPLEMENTED macro use SILC_LOG_INFO now instead of
1993           SILC_LOG_DEBUG.  Affected file lib/silcutil/silclog.h.
1994
1995 Sun Oct  6 16:48:32 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
1996
1997         * Don't swtich to become primary router if we are backup if
1998           decryption error has occurred.  Affected file silcd/server.c.
1999
2000         * Fixed a bug in backup router IP address comparison in
2001           silc_server_backup_get.
2002
2003           Save now also the port of the server/router and use that
2004           in comparison as well.  Affected file silcd/server_backup.c.
2005
2006         * Normal server now reconnects to backup router automatically
2007           if connection is lost to it.  Affected file silcd/server.c.
2008
2009 Thu Sep 26 13:51:02 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2010
2011         * If packet processing fails (like integrity check fails)
2012           the connection is closed now.  Affected files are
2013           lib/silccore/silcpacket.c and silcd/server.c.
2014
2015 Mon Sep 23 10:59:39 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2016
2017         * Fixed double free in RSA public key set function
2018           silc_rsa_set_public_key.  Affected file lib/silccrypt/rsa.c.
2019           Bug #29.
2020
2021 Sun Sep 22 14:54:05 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2022
2023         * Rewrote WHOIS, WHOWAS and IDENTIFY commands in the server.
2024           Added server_query.[ch] which provides one interface for
2025           querying information using all three commands.
2026
2027         * Changed all "typedef unsigned char" in core library to
2028           "typedef SilcUInt8".
2029
2030 Sat Sep 21 21:36:45 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2031
2032         * Added silc_strncat into lib/silcutil/silcstrutil.[ch].
2033
2034         * Renamed silc_server_get_client_resolve to
2035           silc_server_query_resolve and moved to server_query.[ch].
2036
2037 Wed Sep 18 18:28:04 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2038
2039         * Resumed client packet handling from server put the resumed
2040           client on wrong list on router and caused the client not
2041           be present on the network anymore.  Now fixed to put the
2042           client to correct list.  Affected file silcd/packet_receive.c.
2043
2044 Wed Sep 18 15:13:48 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
2045
2046         * Various cleanup in error message output in config parsing code
2047           and in server init code.  Fixed error log files containing
2048           too many newlines ('\n') in some situations.  Affected files are
2049           silcd/serverconfig.c, silcd/silcd.c, and silcd/server.c.
2050
2051 Wed Sep 18 10:51:23 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2052
2053         * Use the reverse lookupped hostname in client internals
2054           instead of one user provided us as remote server name.
2055           Affected file lib/silcclient/client.c.
2056
2057 Mon Sep 16 12:02:54 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2058
2059         * Added 'app_context' to silc_schedule_init.  It is an
2060           application specific context that is delivered to application
2061           in task callback functions.  Affected files are
2062           lib/silcutil/silcutil.[ch].
2063
2064         * The hb_context in SilcSocketConnection is not freed
2065           automatically anymore (application must free it).  Freeing
2066           it automatic is inconsistent.  Affected files are
2067           lib/silcutil/silcsockconn.[ch].
2068
2069 Sun Sep 15 22:16:19 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2070
2071         * Added support for removing explicitly added client connections
2072           in rehash and closing the client connections if they were
2073           unconfigured in the rehash.  Affected file silcd/server.c.
2074
2075         * Added support for aborting automatically pending commands
2076           that never receives the reply (to avoid memory leaks).
2077           Added also silc_server_command_pending_timed to set the
2078           specific timeout for pending command.  Affected files are
2079           silcd/command[_reply].[ch].
2080
2081         * Added SILC_STATUS_ERR_TIMEDOUT status.  Updated protocol
2082           specs and lib/silccore/silcstatus.h.
2083
2084 Sun Sep 15 12:25:10 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2085
2086         * Changed the silc_get_time to accept time value as argument
2087           or if zero is sent return current local time.  Affected
2088           file lib/silcutil/silcutil.[ch].
2089
2090         * Added STATS command to client library and Irssi SILC client.
2091           Patch provided by Ville Räsänen <ville.rasanen@iki.fi>.
2092
2093 Wed Sep 11 09:22:00 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2094
2095         * Assure that channel key is set before sending it.  May
2096           crash server otherwise.  Affected file silcd/packet_send.c.
2097
2098 Tue Sep 10 09:50:08 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2099
2100         * Assure that endless loop cannot happen with detached client
2101           resolving on normal server.  Added idlist status
2102           SILC_IDLIST_STATUS_RESUME_RES.   Affected files are
2103           silcd/idlist.h and silcd/packet_receive.c.
2104
2105 Mon Sep  9 12:18:18 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2106
2107         * Incoming file transfer request cannot use same session as
2108           the sending session.  This can happen when sending file to
2109           yourself.  Crashed the client on quit.  Affected file
2110           lib/silcclient/client_ftp.c.  Bug #24.
2111
2112 Sun Sep  8 18:39:25 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2113
2114         * Implemented the draft-riikonen-precense-attrs draft and
2115           the Attribute Payload into the lib/silccore/silcattrs.[ch].
2116
2117 Sun Sep  8 13:13:44 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2118
2119         * Distribute the SERVER_SIGNOFF notify also to local backup
2120           routers from the primary router.  The backup router may not
2121           have the signing of local server directly connected and need
2122           to know about the signoff.  Affected file silcd/server_util.c.
2123
2124         * Use the primary router as the origin of the locally connected
2125           server when it is disconnecting from the backup router since
2126           that's where it really is coming from.  Now the clients from
2127           the disconnecting server are removed correctly and "shadow"
2128           clients are not left to the backup router.  Affected file
2129           silcd/server.c.
2130
2131 Sat Sep  7 22:26:50 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2132
2133         * If normal server is standalone and found existing but disabled
2134           channel, do not re-create the channel since it creates
2135           duplicate same channels.  Affected file silcd/server.c.
2136
2137         * Added anonymous client connections support to server.  New
2138           "anonymous" configuration option to ConnectionParams section
2139           added.  If set to true, the username and hostname information
2140           of the client will be scrambled and anonymous user mode is
2141           set automatically to the user.  Affected files are
2142           silcd/serverconfig.[ch], silcd/packet_receive.c and server.c.
2143
2144 Sat Sep  7 16:02:09 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2145
2146         * In JOIN notify handling, mark that the cache entry of the
2147           client cannot be expired.  Can cause crashes on normal
2148           server (asserts client->channels).  Affected file is
2149           silcd/packet_receive.c.
2150
2151         * From now on distribution versions are used as protocol versions
2152           instead of by default using the Toolkit base version as protocol
2153           version.  Affected file prepare.
2154
2155         * Do not set the locally resolved hostname for local client
2156           entry but take what server sends.  This way the real hostname
2157           is showed in WHOIS for yourself.  Affected file is
2158           lib/silcclient/idlist.c and lib/silcclient/client.c.
2159
2160         * Resolve local info with IDENTIFY when connecting to server.y
2161
2162 Sat Sep  7 14:22:43 CEST 2002 Lubomir Sedlacik <salo@silcnet.org>
2163
2164         * Rewritten check for POSIX threads.  Use --with-pthreads[=DIR]
2165           for implied search (not needed on platforms which has native
2166           pthreads library).  Use --without-pthreads to disable threads.
2167           Affected file is configure.in.pre
2168
2169         * Fixed --with-iconv on platforms which need to bypass (broken)
2170           native iconv().  Affected file is configure.in.pre
2171
2172 Sat Sep  7 15:08:13 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2173
2174         * Moved -C option parsing in Irssi SILC client at same time
2175           as other options.  The UI was initialized earlier and caused
2176           problems on command line.  Bug #16.  Affected file is
2177           irssi/src/silc/core/silc-core.c.
2178
2179 Mon Sep  2 23:00:30 CEST 2002 Johnny Mnemonic <johnny@themnemonic.org>
2180
2181         * Added global variable silc_log_timestamp that tells silclog
2182           wether to print or not the timestamp in the logging files.
2183           Affected file lib/silcutil/silclog.[ch].
2184
2185         * Added silcd configuration option Timestamp in the Logging
2186           section.  Affected file silcd/serverconfig.[ch],
2187           doc/example_silcd.conf.in.
2188
2189 Fri Aug 30 08:57:33 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2190
2191         * Fixed fingerprint checking to check for entirely empty
2192           fingerprint instead of two first bytes when determining
2193           if it is set.  Bug #18.  Affected file silcd/command.c.
2194
2195         * Fixed duplicate PKCS name registering to not allow it.
2196           Bugs #17.  Affected file lib/silccrypt/silcpkcs.c.
2197
2198 Sun Aug 25 08:02:04 CEST 2002 Lubomir Sedlacik <salo@silcnet.org>
2199
2200         * Conditionalize non-gcc compiler optimizations for various
2201           platforms, enable those commented out.  Cleanups.
2202           Affected file lib/silcmath/mpi/configure.in
2203
2204 Sat Aug 24 15:11:32 EEST 2002 Timo Sirainen <tss@iki.fi>
2205
2206         * silc_rng_exec_command() left zombie processes if command
2207           didn't generate any output.  Affected file
2208           lib/silccrypt/silcrng.c
2209
2210 Fri Aug 23 22:05:44 CEST 2002 Lubomir Sedlacik <salo@silcnet.org>
2211
2212         * Rewrote iconv checking, introduce --with-iconv for systems
2213           which rely on libiconv.  Check if iconv() provided by libc
2214           is good enough, otherwise demand libiconv.  Affected file
2215           configure.in.pre
2216
2217 Fri Aug 23 07:10:52 CEST 2002 Lubomir Sedlacik <salo@silcnet.org>
2218
2219         * Search for ldopen() also in libc.  This enables SIM support
2220           on *BSD systems.  Based on patch from Alex Zepeda.  Affected
2221           file configure.in.pre
2222
2223 Sun Aug 18 04:44:30 CEST 2002 Lubomir Sedlacik <salo@silcnet.org>
2224
2225         * Don't call AM_CONDITIONAL conditonally for SILC_THREADS.
2226           This fixes prepare on *BSD systems.  Affected file
2227           configure.in.pre
2228
2229 Sun Aug  4 15:55:40 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2230
2231         * More fixed for not having purge timeout for global clients
2232           that are on channel.  Affected files silcd/command_reply.c
2233           and server_util.c.
2234
2235         * Fixed the rekey protocol to work with backup router connections.
2236           Rekey packets are now allowed on disabled connections as
2237           well.  Affected files silcd/packet_send.c and server.c.
2238
2239         * Do not switch to be as backup router when shutting down and
2240           closing the primary connection.  Affected file silcd/server.c.
2241
2242         * Fixed memory leaks in backup router deleting.  Added
2243           silc_server_backup_free to free all data during shutdown of
2244           server.  Affected files silcd/server_backup.[ch].
2245
2246 Sun Jul 14 21:33:32 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2247
2248         * Do not process commands if the sock->user_data is NULL.
2249           Affected file silcd/command.c.
2250
2251 Tue Jul  9 19:03:11 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2252
2253         * Fixed buffer overflow and security problems (loosing bits
2254           in CFB encryption) in SILC RNG.  Problems reported by
2255           Markku-Juhani O. Saarinen <mjos@saturn.tcs.hut.fi>.
2256
2257 Sun Jul  7 13:10:01 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2258
2259         * Added yet more checks that client is not expired on global
2260           list if it is on channels.  Affected file is
2261           silcd/command_reply.c.
2262
2263 Sat Jul  6 11:45:11 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2264
2265         * Merged c0ffee's MIME signal patch which adds support for
2266           sending also MIME messages in Irssi SILC Client, and handling
2267           received MIME messages in a signal (and perhaps doing something
2268           to non-textual MIME messages).
2269
2270 Sun Jun 30 01:30:22 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2271
2272         * Fixed pending command deletion in server and client library
2273           to check the whole list instead of breaking after first found.
2274           The affected files are silcd/command.[ch] and
2275           lib/silcclient/command.[ch].
2276
2277 Sat Jun 29 17:40:12 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2278
2279         * Return NO_SUCH_CHANNEL error in USERS for channel that is
2280           secret or private, otherwise it's possible to find out
2281           whether a secret channel exists or not.  Affected file
2282           silcd/command.c.
2283
2284         * If CMODE change fails during the mode setting, assure that
2285           the old mode mask is set for the channel back.  Affected
2286           file silcd/command.c.
2287
2288         * Fixed passphrase saving on +a channel on normal server
2289           after successful JOIN command.  Affected file silcd/command.c.
2290
2291 Fri Jun 28 11:53:25 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2292
2293         * Remove server/router operator privileges in DETACH command,
2294           since it's possible to resume to server where these
2295           privileges would not be allowed for the client.  Affected
2296           file silcd/command.c.
2297
2298         * Do not set to wait for backup in rehash of the server.
2299           Affected file silcd/server.c.
2300
2301         * Do not check listener sockets when counting how many
2302           socket connections we have.  Affected file is
2303           silcd/server_util.c.
2304
2305         * Do not announce disconnected clients that are remaining
2306           in history (for WHOWAS).  This is because SIGNOFF notify
2307           for these has been sent earlier already.  Affected file
2308           silcd/server.c.
2309
2310 Thu Jun 27 20:07:27 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2311
2312         * Buffer overflow with CUMODE command's mode->mode character
2313           conversion.  Reported by Ville Räsänen.  Affected file
2314           lib/silcutil/silcutil.c.
2315
2316 Thu Jun 27 16:54:33 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2317
2318         * Allow heartbeat packets to go disabled connections anyway.
2319           Affected files silcd/server.c and silcd/packet_send.c.
2320
2321         * Do not broadcast New Channel packets with List flag set
2322           in the packet to backup routers.  The router must check
2323           for the correctness of the packets before sending them.
2324           It is possible that router will have enforce Channel ID
2325           change and this would cause desync in the backup router.
2326           Affected file silcd/packet_receive.c.
2327
2328         * Remove SILC_PACKET_FLAG_LIST from the temp packets that
2329           are handled in list parsing.  They are not list packets
2330           anymore.  Affected file silcd/packet_receive.c.
2331
2332 Thu Jun 27 11:27:07 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2333
2334         * Stop waiting for backup router through the timeout, not
2335           directly after backup router has arrived.  Affected file
2336           silcd/server.c.
2337
2338         * Do not re-create channel keys and send them when removing
2339           clients in server shutdown.  Affected files are
2340           silcd/server_internal.h and silcd/server_util.c.
2341
2342         * Notify distribution to backup routers was missing from
2343           the silc_server_send_notify_dest function which caused
2344           desyncing problems with backup router.  Affected file is
2345           silcd/packet_send.c.
2346
2347         * The client's channel removing was working wrong on
2348           backup router.  It assumed that it doesn't know global
2349           information but backup router does know.  For this reason
2350           it could remove channel when it wasn't supposed to do that.
2351           Affected file silcd/server.c and silcd/server_util.c.
2352
2353 Wed Jun 26 15:14:12 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2354
2355         * Stop for a couple seconds after badkup router has become
2356           primary router.  Affected file silcd/server.c.
2357
2358         * Added silc_server_remove_servers_by_server, which is used
2359           to remove servers originated from some other server.  Also
2360           clients of those servers can be removed too.  Affected file
2361           silcd/server_util.[ch].
2362
2363         * When removing clients after a server has signed of remove
2364           also all servers behind that server (unless they are known
2365           to be available locally), and send SERVER_SIGNOFF for each
2366           of the server separately.  Also the signed off clients are
2367           sent now separately per signed off server.  The affected files
2368           are silcd/server.c and silcd/server_util.[ch].
2369
2370         * All servers added with silc_idlist_add_server must always
2371           have both "router" and "connection" pointers set.  Otherwise,
2372           bad server entries may be left around in the cache.
2373           Affected file silcd/command_reply.c.
2374
2375         * Do not create the channel key in NEW_CHANNEL packet
2376           processing if the channel is empty.  Affected file
2377           silcd/packet_receive.c.
2378
2379         * Completed backup router support for standalone routers.
2380           Supports also servers in the cell that do not use the backup
2381           at all.
2382
2383 Wed Jun 26 10:38:11 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2384
2385         * Fixed a bug in silc_string_regexify which did not add '^'
2386           at the start of each string, and thus the matching was
2387           not explicit.  For example ban list iikone@*!*@* would
2388           match also "priikone", which is wrong, it would have to be
2389           *iikone@*!*@* to match also "priikone".  Affected
2390           file lib/silcutil/unix/silcunixutil.c.
2391
2392 Tue Jun 25 18:47:39 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2393
2394         * Enable all local server connections before updating client
2395           caches when we've become backup router.  Otherwise, signoff
2396           packets may not reach the clients.  Affected files are
2397           silcd/server.c and silcd/server_util.[ch].
2398
2399         * Fixed a bug in version string parsing which could crash
2400           the program with specially formatted version string.
2401           Bug reported and patch provided by Ville Räsänen.  Affected
2402           file lib/silcutil/silcutil.c.
2403
2404         * Handle the disconnection immediately when DISCONNECT
2405           packet is received in server.  Affected file silcd/server.c.
2406
2407         * Primary router now waits a short time (10 seconds) for
2408           backup router connection before accepting any other
2409           connection (except local).  Affected file silcd/server.c,
2410           serverconfig.[ch].
2411
2412         * Fixed a crash in client libary in NICK_CHANGE notify when
2413           NICK_CHANGE arrived for client entry we are resolving
2414           currently.  Affected file lib/silcclient/client_notify.c.
2415
2416         * Call the sconn->callback completion even if error had
2417           occurred.  Start reconnecting always if connection to
2418           primary router fails during backup router protocol.
2419           Affected files silcd/server.c and server_backup.c.
2420
2421 Mon Jun 24 17:47:52 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2422
2423         * Added functions silc_server_send_opers and
2424           silc_server_send_opers_notify to send packets stricly
2425           to operators.  Added macro SILC_SERVER_SEND_OPERS macro
2426           to send variable argument notify to operators.
2427           Affected files silcd/packet_send.[ch] and silcd/server.h.
2428
2429         * Removed UMODE rights checking with UMODE_CHANGE notify.
2430           Affected file silcd/packet_receive.c.
2431
2432         * Server/router operator now receives notify when network
2433           switches to backup router and when it resumes the use of
2434           primary router.  Affected file silcd/server.c and
2435           silcd/server_backup.c.
2436
2437         * Fixed the updating of client information after backup
2438           resuming protocol is over; update all except local clients
2439           to the new primary router.  The affected file is
2440           silcd/server_util.c.
2441
2442         * Added support for closing active connections in rehash
2443           that were unconfigured by the user.  Supports currently
2444           closing server and router connections.  Affected file
2445           silcd/server.c.
2446
2447         * Rewrote some SILC_LOG_DEBUG's in silcd/server_backup.c.
2448
2449 Sun Jun 23 17:32:31 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2450
2451         * Don't do SILC_STRING_LANGUAGE encoding if the outbuffer
2452           is NULL since seems that on some platforms NULL is allowed
2453           and on some it's not.  Fallback encoding is used instead.
2454           Affected file lib/silcutil/silcstrutil.c.
2455
2456         * Fixed statistics updating for incoming server connection
2457           which could cause problems when re-connecting.  Affected
2458           file silcd/server.c.
2459
2460         * Preliminary backup router support for standalone router
2461           added.  Affected files in silcd/.
2462
2463         * Mark server connections in backup router disabled before
2464           and after backup protocol.  Affected file is
2465           silcd/server_backup.c.
2466
2467         * Added support for reconnecting to remote server connection
2468           even if the protocol fails, and if the configuration wants
2469           us to keep trying to connect anyway.
2470
2471           Server connection is not allowed to backup router if
2472           backup router does not have connection to primary router yet.
2473
2474           Affected file is silcd/server.c.
2475
2476 Sat Jun 22 21:34:59 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2477
2478         * Added silc_client_udpate_server function to update changed
2479           server info.  Affected file lib/silcclient/idlist.[ch].
2480
2481         * Added check for server entries that are being resolved when
2482           notify is received.  If being resolved, handle the received
2483           notify only after it's resolved so that all notifys are
2484           handled in same order as received from the server.
2485
2486           Added similar resolver check to channel entries.  Every
2487           notify that cause resolving of any information that affects
2488           channel entry marks the channel entry in waiting state.
2489           After whatever resolving is over the waiters are signalled
2490           and only then the notifys are handled in the same order
2491           as delivered from the server.
2492
2493           Affected files are lib/silcclient/idlist.[ch], and
2494           client_notify.c.
2495
2496         * Fixed KILLED notify handling in normal server.  Affected
2497           file silcd/packet_receive.c.
2498
2499         * Added SILC_IDLIST_STATUS_LOCAL which indicates that entry
2500           is locally connected, or was locally connected (but may
2501           be detached and connection is not active).  Added also
2502           SILC_IS_LOCAL for checking this status.  Affected files
2503           silcd/idlist.h, silcd/packet_receive.c, silcd/server_util.c,
2504           silcd/server.c and silcd/server_internal.h.
2505
2506 Sat Jun 22 17:06:58 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2507
2508         * Don't send or handle TOPIC_SET if topic is already set and
2509           is same as being set.  Affected files silcd/command.c and
2510           silcd/packet_receive.c.
2511
2512         * Fixed CMODE change rights checking to work correctly when
2513           removing modes by operator.  Affected file is
2514           silcd/server_util.c.
2515
2516         * Fixed some handling with New Channel packet in router and
2517           fixed some CMODE_CHANGE notify handling in server and router.
2518           Affected file is silcd/packet_receive.c.
2519
2520         * Changed "disconnect" client operation to include the
2521           reason of the disconnection and optional disconnection
2522           message.  Affected file lib/silcclient/silcclient.h.
2523
2524         * Made the compilation of lib/contrib/ stuff conditional.
2525           Affected files configure.in.pre, lib/contrib/Makefile.am.
2526
2527 Sat Jun 22 12:49:21 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2528
2529         * All CMODE_CHANGE and CUMODE_CHANGE notifys are now sent back
2530           to the sender of the notify too, to avoid situation where two
2531           notifys are in the network at the same time going to oppsite
2532           directions.  Affected file silcd/packet_receice.c.
2533
2534 Fri Jun 21 10:00:32 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2535
2536         * Delete the client from channel even if the cilent->id is
2537           NULL.  It was possible that client was deleted without
2538           removing from channels (theoretically at least).  Affected
2539           file silcd/server.c and silcd/server_util.c.
2540
2541         * Free the client data too when resuming is not successful.
2542           Affected file silcd/packet_receive.c.
2543
2544         * Merged some code from c0ffee's silc-plugin.  Affected files
2545           irssi/src/silc/core/silc-channels.c and silc-expandos.c.
2546
2547         * Added SILC_PRIMARY_ROUTE and SILC_BROADXAST macros to
2548           silcd/server_internal.h.  SILC_PRIMARY_ROUTE Returns pointer
2549           to the primary router connection, the other one returns
2550           TRUE if packet must be broadcasted to network.
2551
2552         * All notifys that are destined to primary router (to network)
2553           are now automatically sent to backup routers even if the
2554           router is standalone (and has backup router).  Affected files
2555           in silcd/.
2556
2557         * Added --without-irssi and --without-silcd configuration
2558           options for disabling the compilation of these applications.
2559           Affected file configure.in.pre and prepare.
2560
2561 Thu Jun 20 13:48:15 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2562
2563         * Implemented SILC_STRING_BMP and SILC_STRING_UNIVERSAL for
2564           UTF-8 encoding and decoding.  Added also new encodings
2565           SILC_STRING_BMP_LSB and SILC_STRING_UNIVERSAL_LSB.
2566
2567           Added also SILC_STRING_LANGUAGE which is language and charset
2568           specific encoder and decoer for those platforms that support
2569           iconv().  It can convert the UTF-8 to and from the locale
2570           specific character set.
2571
2572           Affected file lib/silcutil/silcstrutil.[ch].
2573
2574         * Added macro SILC_NOT_IMPLEMENTED to lib/silcutil/silclog.h.
2575
2576         * Added function silc_get_command_name to the file
2577           lib/silcutil/silcutil.[ch].
2578
2579         * Improved the server debug output a bit.  Affected files are
2580           in silcd/.
2581
2582 Wed Jun 19 17:46:31 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2583
2584         * Save the channel passphrase when received succesful JOIN
2585           command reply from router, on normal server.  Otherwise
2586           joinig +a channels from normal server is not possible.
2587           Affected file silcd/command.c.
2588
2589         * Fixed a bug in TOPIC_SET notify handling.  The notifier
2590           may be other than client too, like server or channel.
2591           It expected it to always be only client and ignored the
2592           notify.  Affected file silcd/packet_recieve.c.
2593
2594         * Removed some (unnecessary) debug printing from
2595           lib/silccore/silcid.c and lib/silccore/silcargument.c.
2596
2597         * Do not force CMODE_CHANGE when server is announcing new
2598           channel.
2599
2600           Router announces stuff only after server reannounces channel
2601           after CHANNEL_CHANGE notify.
2602
2603           These fixes optimizes the announcing procedure, and perhaps
2604           fixes some problems too.  Affected file silcd/packet_receive.c.
2605
2606         * Fixed SERVER_SIGNOFF sending to local clients.  It was
2607           totally broken and sent the notify to all local clients,
2608           instead of only to those that was on same channel as the
2609           signing off clients.  Affected file silcd/server_util.c.
2610
2611         * Added -D option to server.  It can be used to give debug
2612           level.  The levels are from 0 - 99, and are predefined for
2613           smooth server debugging.  (see silcd.c for the predefined
2614           levels).  Affected file silcd/server.c.
2615
2616 Wed Jun 19 16:01:51 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2617
2618         * Fixed a bug in Irssi SILC client to close the connection
2619           properly when disconnecting from server.  Affected file
2620           irssi/src/silc/core/client_ops.c.
2621
2622 Tue Jun 18 17:14:52 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2623
2624         * When authenticating as founder during JOIN command, check
2625           that the one authenticating becomes the only founder on the
2626           channel.  Affected file silcd/command.c.
2627
2628         * Better checking for founder mode setting when CUMODE_CHANGE
2629           notify is received.  Affected file silcd/packet_receive.c.
2630
2631         * Close all connections when shutting down the server by sending
2632           DISCONNECT packet.  Close all listeners too when shutting
2633           down the server.  Affected file silcd/server.c.
2634
2635         * Handle DISCONNECT packet correctly in client library by
2636           calling the "disconnect" client operation.  Affected file
2637           lib/silcclient/client.c.
2638
2639         * Handle local errors correctly during resuming.  Affected
2640           file lib/silcclient/client.c.
2641
2642 Tue Jun 18 10:26:27 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2643
2644         * The log file is not dupped internally anymore in
2645           lib/silcutil/silclog.c.  Fixed memory leaks too.
2646
2647         * The scheduler now dispatches all pending timeout tasks
2648           when it is uninitialized with silc_schedule_uninit.
2649           Affected file lib/silcutil/silcschedule.c.
2650
2651 Mon Jun 17 21:30:55 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2652
2653         * Added --enable-stack-trace option to configure.  Added
2654           memory allocation stack trace support.  Added files
2655           lib/silcutil/stacktrace.[ch].  Affected files are
2656           lib/silcutil/silcmemory.[ch].
2657
2658         * Fixed memory leaks from libraries and server.  Affected
2659           files around the tree.
2660
2661         * Reverted back a fix made to CUMODE which broke it.
2662           Affected file silcd/command.c.
2663
2664 Sun Jun 16 11:49:45 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2665
2666         * Added SILC_MESSAGE_FLAG_UTF8 to the protocol specs and the
2667           core library, and implemented it.  All textual messages SHOULD
2668           use this flag and the message MUST be UTF-8 encoded.
2669           All text messages sent by Irssi SILC client are now UTF-8
2670           encoded (regardless whether the terminal supports UTF-8 or not).
2671           Affected files are lib/silccore/silcchannel.h,
2672           irssi/src/silc/core/silc-servers.c, silc-channels.c and
2673           client_ops.c.
2674
2675 Sat Jun 15 18:23:39 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2676
2677         * Added lots of new statistics updating that was missing from
2678           the server and router code.  Affected files in silcd/.
2679
2680         * Sending SIGUSR1 signal to server now dumps the current
2681           server statistics into /tmp directory.  Affected file is
2682           silcd/silcd.c.
2683
2684         * ROBODoc documented the lib/silccrypt/silchash.h.  Improved
2685           the SILC Hash Interface also.  Added new functions
2686           silc_hash_get_name, silc_hash_init, silc_hash_update and
2687           silc_hash_final.  Affected file lib/silccrypt/silchash.c.
2688
2689 Sat Jun 15 12:09:14 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2690
2691         * Added some better info printing for client during connecting.
2692           Affected file silcd/server_util.c.
2693
2694         * Implemented the SILC_CHANNEL_UMODE_QUIET mode that can be used
2695           to silence a user on a channel.  Affected files are
2696           lib/silcclient/client_channel.c, irssi/src/silc/core/client_ops.c,
2697           irssi/src/fe-common/silc/module-formats.[ch], silcd/command.c
2698           and silcd/packet_receive.c.
2699
2700         * Fixed a fatal bug in handling of malformed command payload.
2701           Affected file silcd/command.c.
2702
2703         * Fixed a double free when announcing channel users to router.
2704           Affected file silcd/server.c.
2705
2706         * After successful authentication to channel founder mode, check
2707           that there isn't anyone else with founder mode on the channel.
2708           The one that authenticated will become founder and anyone
2709           else is demoted.  Affected file silcd/command.c.
2710
2711         * Added error printing of any error that has occurred during
2712           any command in client library.  Affected file is
2713           irssi/src/silc/core/client_ops.c.
2714
2715         * Removed some error printing from the client library and left
2716           it for the application to worry (from the error status it
2717           receives in 'command' client operation.  Affected file is
2718           lib/silcclient/command.c.
2719
2720 Fri Jun 14 22:59:02 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2721
2722         * Added new status types KEY_AGREEMENT_ALREADY_STARTED and
2723           KEY_AGREEMENT_SELF_DENIED to lib/silcclient/silcclient.h.
2724           Starting key agreement with itself is denied.  Affected file
2725           is lib/silcclient/client_keyagr.c.
2726
2727         * Fixed some error checkings from the SFTP library which caused
2728           misbehaviour.  Affected files are lib/silcsftp/sftp_client.c
2729           and lib/silcsftp/sftp_util.c.
2730
2731         * Added new "debug" and "debug_string" settings to Irssi SILC
2732           client which can be used to print runtime debugging on the
2733           Irssi's screen.  Available when compiled with --enable-debug
2734           option.  Affected file irssi/src/silc/core/silc-core.c.
2735
2736 Tue Jun 11 16:36:02 CEST 2002 Johnny Mnemonic <johnny@themnemonic.org>
2737
2738         * Fixed a missing variadic parameter in a function call that
2739           caused server crash when a non-allowed connection arrived.
2740           Reported by Richard Becker.  Affected file silcd/server.c.
2741
2742 Mon Jun 10 16:29:42 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2743
2744         * Added WATCH list sending to backup routers from router.
2745           The WATCH command is sent by the router to the backup
2746           router.  Affected file silcd/command.c.
2747
2748         * Mark the backup_router flag for RouterConnection entry
2749           if the backup router stuff is defined in the config file.
2750           Affected file silcd/serverconfig.c.
2751
2752         * Fixed some backup data sending around the code to work better
2753           if the router is standalone router.  Not all places were fixed.
2754           Affected file silcd/packet_receive.c, silcd/packet_send.c,
2755           silcd/server.c.
2756
2757         * Fixed the router connecting when connecting to multiple
2758           routers.  It ignored every other router except the first
2759           one.  Affected file silcd/server.c.
2760
2761 Mon Jun 10 09:28:21 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2762
2763         * Made the private key generation after expiration optional.
2764           If not created after expiration the old key will re-expire
2765           at a later time (and thus key pair is not necessary to
2766           change).  Affected file irssi/src/silc/core/clientutil.c.
2767
2768 Sun Jun  9 18:58:25 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2769
2770         * The length arguments in bind() and connect() were wrong
2771           and fixed now to used SIZEOF_SOCKADDR in the
2772           lib/silcutil/unix/silcunixutil.c.
2773
2774 Tue Jun  4 18:36:05 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2775
2776         * Fixed detach timeout handling to use Client ID and not
2777           the actual client entry which may be freed in the callback.
2778           Affected file silcd/command.c.
2779
2780 Thu May 30 15:53:45 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2781
2782         * Merged c0ffee's multiple interface support patch.
2783           Affected files in silcd/.
2784
2785 Wed May 29 18:08:15 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2786
2787         * Cleanup keys properly.  Affected file is
2788           irssi/src/silc/core/clientutil.c.
2789
2790 Tue May 28 20:11:41 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2791
2792         * Display the user mode on the status bar.  Affected file
2793           irssi/src/silc/core/silc-expandos.c.
2794
2795 Tue May 28 13:56:26 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2796
2797         * If private message key is not set, but the flag is set in
2798           the packet, ignore the packet since it cannot be decrypted.
2799           Affected file lib/silcclient/client_prvmsg.c.
2800
2801 Thu May 23 12:00:14 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2802
2803         * When resuming client, remove the old client entry from
2804           the watcher list too.  Affected file silcd/packet_receive.c.
2805
2806         * Do not allow normal server to force founder mode away
2807           from router if the founder mode is already set.  Affected
2808           file silcd/packet_receive.c.
2809
2810         * Remove the client entry with watch notify types with short
2811           timeout, and not directly, so that other notifys can be
2812           retrieved too.  Affected file lib/silcclient/client_notify.c.
2813
2814         * Display notification about data messages that cannot be
2815           displayed.  Affected files irssi/src/silc/core/client_ops.c,
2816           irssi/src/fe-common/silc/module-formats.[ch].
2817
2818 Sun May 19 18:59:00 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2819
2820         * Fixed the CHANNEL_CHANGE notify handling in client libary
2821           to not use freed memory.  Affected file is
2822           lib/silcclient/client_notify.c.
2823
2824         * Fixed CUMODE_CHANGE notify handling in server.  Affected
2825           file silcd/packet_receive.c.
2826
2827         * Fixed USERS command to support empty channels.  Affected
2828           file silcd/command.c.
2829
2830 Sat May 18 11:35:19 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2831
2832         * Allow multiple identical pending commands to be registered
2833           in client library.  Affected file is lib/silcclient/command.c.
2834
2835         * Call the completion for resolving client information only
2836           after all resolvers has finished.  This fixes a crash in
2837           the client.  Added support for checking when the resolvers
2838           are finished.  Affected file is lib/silcclient/idlist.c.
2839
2840         * Wait by default 3 seconds before reconnecting to the server
2841           after being disconnected.  Makes the /detach command a bit
2842           more usable.
2843
2844 Fri May 17 17:23:45 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2845
2846         * Check the watcher list before sending signoff notifys
2847           when closing client connection.  Affected file is
2848           silcd/server.c.
2849
2850         * Added better CMODE command rights checking.  Affected file
2851           silcd/server_util.c.
2852
2853 Fri May 17 08:33:41 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2854
2855         * Fixed watcher list checking during server signoff.  It
2856           crashed the server.  Affected file silcd/server_util.c.
2857
2858         * The JOIN command reply returns now the founder's public
2859           key.  Affected file is silcd/command.c.
2860
2861         * Announce the channel mode, and the mode properties with
2862           CMODE_CHANGE notify.  Affected file silcd/server.c.
2863
2864         * Mark new channels by default disabled, untill at least
2865           one user joins the channel.  Affected file is
2866           silcd/packet_receive.c.
2867
2868 Thu May 16 13:05:13 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2869
2870         * The nickname argument to watch notify can be optional.
2871           Fixes a crash in server.  Affected file silcd/packet_send.c.
2872
2873         * Remove the client entry from cache if the WATCH notify type
2874           is KILLED, SERVER_SIGNOFF or SIGNOFF.  Affected file is
2875           lib/silcclient/client_notify.c.
2876
2877         * Check the watcher list before and after changing nickname
2878           when the NICK_CHANGE notify is received.  Affected file is
2879           silcd/idlist.c.
2880
2881         * Fixed a crash in OPER and SILCOPER command sending.  Empty
2882           passphrase caused the crash.  Affected file is
2883           lib/silcclient/command.c.
2884
2885 Wed May 15 19:01:42 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2886
2887         * Merged with Irssi CVS for Irssi SILC client.
2888
2889 Tue May 14 19:37:48 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2890
2891         * Completed the protocol specifications.
2892
2893 Tue May  7 20:41:58 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2894
2895         * Merged with Irssi CVS for Irssi SILC client.
2896
2897 Tue May  7 11:07:16 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2898
2899         * Added the founder's public key delivery to the
2900           CUMODE_CHANGE notify type as well.  Updated the protocol
2901           specs and the code.  Affected files are silcd/packet_send.[ch],
2902           silcd/packet_receive.c and silcd/command.c.
2903
2904 Mon May  6 19:46:12 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2905
2906         * Added silc_pkcs_public_key_copy function into the
2907           lib/silccrypt/silcpkcs.[ch].
2908
2909         * Remove the `iv' from the SilcChannelEntry since we can
2910           live without it.  Affected files are silcd/idlist.h and
2911           silcd/packet_receive.c.
2912
2913         * Added support for sending the founder's public key in
2914           the CMODE_CHANGE notify packet in the server.  Affected
2915           files are silcd/packet_send.[ch], silcd/packet_receive.c,
2916           silcd/command.c and silcd/server.c.
2917
2918         * Changed the FOUNDER_AUTH authentication to use only
2919           public key authentication as defined by new protocol
2920           specs.  Passphrase authentication with that mode cannot
2921           be used anymore.  It is now possible to reclaim founder
2922           mode from any server in the network.  Affected files are
2923           silcd/command.c, silcd/idlist.h and silcd/command_reply.c.
2924
2925         * Added permanent channels support by making the channel
2926           permanent when FOUNDER_AUTH mode is set on the channel.
2927           The channel will not be destroyed even if channel is empty
2928           when that mode is set.  Protocol TODO #17.  Affected
2929           files are silcd/server.[ch], server_util.[ch],
2930           silcd/command.c, silcd/packet_receive.c and
2931           lib/silcclient/command.c.
2932
2933 Fri May  3 18:36:51 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2934
2935         * Added reference counter to the command reply context in
2936           the client library.  Affected files are
2937           lib/silcclient/command_reply.[ch].
2938
2939 Fri May  3 11:37:10 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2940
2941         * Fixed rekey protocol with PFS in the client library.
2942           Affected file is lib/silcclient/protocol.c.
2943
2944         * Added support for list of errors in client library
2945           command reply handling.  Affected file is
2946           lib/silcclient/command_reply.c.
2947
2948         * Defined that the WHOIS and IDENTIFY commands can send
2949           list of errors.  Updated the protocol specs.  Protocol
2950           TODO #2.
2951
2952         * Added support for sending list of errors to WHOIS and
2953           IDENTIFY commands in server.  Added support for receiving
2954           list of errors in server.  Affected files are
2955           silcd/command.c and silcd/command_reply.c.
2956
2957         * Fixed client info resolving on LEAVE command in client
2958           library to not crash.  Affected file is
2959           lib/silcclient/client_notify.c.
2960
2961 Thu May  2 08:45:11 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2962
2963         * Defined that the NICK command replies with thew changed
2964           nickname too, to make the nickname changing simpler at
2965           the client's end.  Updated protocol specs and the code
2966           in client and server.  Affected files are
2967           silcd/command.c, lib/silcclient/command_reply.c and
2968           lib/silcclient/command.c.
2969
2970 Mon Apr 29 20:10:42 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2971
2972         * Added `Compressed' packet flag to indicate that the packet
2973           payload is compressed by the sender.  Updated the protocol
2974           specs and the core library.  The compression still is not
2975           implemented in the sources.  Affected file is
2976           lib/silccore/silcpacket.h.
2977
2978 Mon Apr 29 09:48:12 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2979
2980         * Remove pending command callbacks also if the connection
2981           to the server is destroyed.  Affected file is
2982           lib/silcclient/client.c.
2983
2984 Sat Apr 27 19:52:32 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2985
2986         * Added new QUIET channel user mode that can be used to
2987           quiet a user in a channel.  Updated the protocol specs but
2988           it wasn't implemented yet.  Protocol TODO #27.  Affected
2989           file is lib/silccore/silcmode.h.
2990
2991 Mon Apr 22 09:09:44 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2992
2993         * Added BLOCK_INVITE user mode to be able to block incoming
2994           invite notifications.  Protoocol TODO #26.  Affected files
2995           are lib/silccore/silcmode.h, lib/silcclient/command.c and
2996           silcd/command.c.
2997
2998         * SILC Publickey fields MUST be UTF-8 encoded now.  Updated
2999           the protocol specs and the code.  Affected file is
3000           lib/silccrypt/silcpkcs.c.
3001
3002 Sun Apr 21 19:44:38 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3003
3004         * Disconnect Payload includes now the status type.  Updated
3005           the protocol specs and the code.  Protocol TODO #25.
3006           Affected files are silcd/server.c, lib/silcclient/client.c.
3007
3008         * Added NOT_AUTHENTICATED, BAD_SERVER_ID, INCOMPLETE_INFORMATION,
3009           KEY_EXCHANGE_FAILED and BAD_VERSION error status types.
3010           Moved the silc_client_command_status_messages table to the
3011           lib/silcutil/silcutil.c and added new funtion
3012           silc_get_status_message, which deprecates function
3013           silc_client_status_message.  Affected files are
3014           lib/silccore/silcstatus.h, lib/silcclient/command_reply.[ch],
3015           lib/silcutil/silcutil.[ch].
3016
3017 Fri Apr 19 17:35:15 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3018
3019         * Defined that the nickname hash in Client ID MUST be from
3020           lowercase nickname.  This effectively changes nicknames in
3021           SILC to case-insensitive.  Updated the protocol specs and
3022           the code.  Affected files are lib/silcutil/silcutil.[ch],
3023           silcd/serverid.c, and silcd/idlist.c.
3024
3025         * Added new channel user modes BLOCK_MESSAGES_USERS and
3026           BLOCK_MESSAGES_ROBOTS.  Updated the protocol specs and the
3027           code.  Affected files are lib/silccore/silcmode.h,
3028           lib/silcclient/command.c, and silcd/packet_send.c.
3029
3030         * Added new error status ERR_RESOURCE_LIMIT.  Updated protocol
3031           specs and code.  Affected file lib/silccore/silcstatus.h.
3032
3033         * Added support for watch list.  It is possible to add nicknames
3034           to be watched, and when they come to network, leave network
3035           or user mode changes the watcher will be notified of this
3036           change.  Added SILC_COMMAND_WATCH command, added new
3037           notify type SILC_NOTIFY_TYPE_WATCH to deliver the watch
3038           notifications.  Updated the protocol specs and implemented
3039           this to library, client and server.  Protocol TODO #21.
3040           Affected files are lib/silccore/silccomand.h,
3041           lib/silccore/silcnotify.h, lib/silcclient/command[_reply].[ch],
3042           silcd/command[_reply].[ch], lib/silcclient/client_notify.c,
3043           silcd/packet_send.[ch], silcd/packet_receive.c, and
3044           irssi/src/silc/core/client_ops.c.
3045
3046         * Added user mode SILC_UMODE_REJECT_WATCHING to reject
3047           somebody watching you.  Updated the protocol specs and the
3048           code.  Affected files are lib/silccore/silcmode.h, and
3049           lib/silcclient/command.c.
3050
3051 Fri Apr 19 09:02:20 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
3052
3053         * Added service support to SILC protocol.  Added new command
3054           SILC_COMMAND_SERVICE.  Updated the protocol specs and the
3055           core library.  Services are not implemented in server or
3056           client for now.  Protocol TODO #20.  Affected files are
3057           lib/silccore/silcstatus.h, lib/silccore/silccommand.h.
3058
3059         * Added SilcStatus argument to `command' client operation
3060           to return the error status when command sending fails
3061           locally.  Changed all command in client library to return
3062           correct command status.  Affected files are
3063           lib/silcclient/command.c, lib/silcclient/silcclient.h and
3064           irssi/src/silc/core/client_ops.c.
3065
3066 Thu Apr 18 14:09:51 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
3067
3068         * Added silc_mime_parse function to parse MIME headers.
3069           Affected files are lib/silcutil/silcstruti.[ch].
3070
3071         * Added MIME header parsing in Irssi SILC Client.  It displays
3072           all textual MIME objects, others it ignores.  Affected file
3073           is irssi/src/silc/core/clien_ops.c.
3074
3075 Wed Apr 17 22:07:59 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
3076
3077         * Fixed a bug in the pid writing function, which couldn't be
3078           written in a root-owned directory.
3079
3080 Tue Apr 16 09:34:40 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3081
3082         * Defined that channel message to unknown Channel ID must
3083           cause SILC_NOTIFY_TYPE_ERROR notify message to the sender.
3084           Updated the protocol specs and the code in server.  The
3085           affected file is silcd/packet_receive.c.
3086
3087 Mon Apr 15 19:57:57 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3088
3089         * Added new notify type SILC_NOTIFY_TYPE_ERROR and specified
3090           that it is used to send error notifys if error occurs during
3091           some SILC packet processing, except commands.  The error
3092           types are same as for command reply types.  Defined that
3093           if private message is sent to unknown Client ID the error
3094           is sent in SILC_NOTIFY_TYPE_ERROR instead of command reply.
3095           Updated the protocol specs and code.  Affected files are
3096           lib/silccore/silcnotify.h, added lib/silccore/silcstatus.h,
3097           lib/silcclient/client_notify.c, silcd/packet_receive.c,
3098           and irssi/src/silc/core/client_ops.c.  Renamed the
3099           SilcCommandStatus to SilcStatus.
3100
3101         * Defined the use of extra WHOIS attributes in WHOIS command.
3102           The <Requested Attributes> (defined in a separate document)
3103           can be used to request additional information about user
3104           not returned by standard WHOIS command.  Defined that server
3105           can send WHOIS command directly to client.  Client provides
3106           the requested attributes to the server.  Updated the protocol
3107           specs.  Protocol TODO #4.  Implementation is not done yet
3108           (Protocol TODO #24).
3109
3110         * Renamed function silc_client_command_status_message to
3111           silc_client_status_message.  Affected files are
3112           lib/silcclient/command_reply.[ch].
3113
3114 Sun Apr 14 21:13:42 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3115
3116         * Changed the WHOIS, IDENTIFY and WHOWAS count arguments to
3117           32 bit integers.  Updated the protcol specs and the code.
3118           Affected files are silcd/command.c and
3119           lib/silcclient/command.c.
3120
3121 Sun Apr 14 19:49:02 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
3122
3123         * Fixed a bug in library where sending a bogus authentication
3124           payload would lead to a crash.  Affected file is
3125           lib/silccore/silcauth.c.
3126
3127 Sat Apr 13 13:09:24 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3128
3129         * Added detach_disabled and detach_timeout server config
3130           options to the server.  Affected files silcd/serverconfig.[ch],
3131           silcd/command.c and silcd/packet_receive.c.
3132
3133 Fri Apr 12 20:09:08 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3134
3135         * Added resolve_cmd_ident field to the SilcClientEntry structure
3136           too so that if the entry is for example being resolved so
3137           another command may attach to the same pending command reply
3138           without requiring to resolve the same entry again.  Added
3139           support for adding multiple pending commands for one
3140           command idenfier.  Affected files lib/silcclient/command.[ch],
3141           lib/silcclient/command_reply.[ch], lib/silcclient/idlist.h.
3142
3143 Fri Apr 12 10:17:51 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3144
3145         * Defined that server receives WHOIS command reply for private
3146           and secret channels too.  Updated protocol specs and the
3147           code in server.  Affected file silcd/command.c.
3148
3149         * Defined <channel user mode list> argument to WHOIS command
3150           reply for returning user modes on the channels.  The
3151           channel list now doesn't include the user mode anymore but the
3152           actual channel mode.  Updated protocol specs and the code in
3153           client and server.  Affected files are silcd/command_reply.c,
3154           silcd/command.c, silcd/server.c, irssi/src/silc/core/client_ops.c,
3155           and lib/silcclient/command_reply.c.
3156
3157         * Save the channels list in WHOIS command reply in normal server
3158           so that WHOIS always shows joined channels also in normal
3159           server and not just on router.  Affected file is
3160           silcd/command_reply.c.
3161
3162 Thu Apr 11 22:29:33 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3163
3164         * Defined that server receives USERS command reply for private
3165           and secret channels too.  Updated protocol specs and the
3166           code in server.  Affected file silcd/command.c.
3167
3168 Thu Apr 11 16:32:08 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3169
3170         * Changed the UMODE's mode mask argument to be optional.  If
3171           not provided then the command merely returns the current mode
3172           mask to the client.  Updated protocol specs and the server.
3173           Affected file is silcd/command.c.
3174
3175         * Added SILC session detachment/resuming support.  It is possible
3176           to detach by closing the network connection and then re-connect
3177           and resume to the old client session.  Added DETACHED user
3178           mode that server will set for detached client.  Added new
3179           packet RESUME_CLIENT which is used to perform the resuming
3180           process.  Added DETACH command.  Updated the protocol specs,
3181           core library, client and server.  Protocol TODO #22.  Very
3182           many affected files around the tree.
3183
3184 Wed Apr 10 16:32:01 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3185
3186         * Changed the CMODE's mode mask argument to be optional.  If
3187           not provided then the command merely returns the current mode
3188           mask to the client.  Updated protocol specs and the server.
3189           Affected file is silcd/command.c.
3190
3191         * Changed the Killer's Client ID in KILLED notify to be just
3192           any ID payload since router server is allowed to kill as well.
3193           Updated protocol specs, client libary and server.  Affected
3194           files are lib/silcclient/client_notify.c, silcd/packet_receive.c,
3195           and irssi/src/silc/core/client_ops.c.
3196
3197 Tue Apr  9 17:15:42 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3198
3199         * Added new user modes ANONYMOUS for special anonymous servers
3200           that may set the mode for client, and BLOCK_PRIVMSG which
3201           client may set to block incoming private messages unless the
3202           Private Message Key flag is set (using private keys to protect
3203           private messages).  Updated protocol specs and code in client
3204           and server and core library.  Protocol TODO #23.  Affected
3205           files are lib/silccore/silcmode.h, silcd/server.[ch],
3206           irssi/src/silc/core/client_ops.c, silcd/packet_receive.c,
3207           irssi/docs/help/in/umode.in, lib/silcclient/command.c.
3208
3209         * Added new channel user mode BLOCK_MESSAGES which the client
3210           may set to itself to tell server not send channel messages.
3211           Other packets such as channel key packets are still sent.
3212           Protocol TODO #23.  Updated the protocol specs, client and
3213           server.  Affected files are lib/silccore/silcmode.h,
3214           irssi/docs/help/in/cumode.in, lib/silcclient/command.c,
3215           lib/silcutil/silcutil.c, silcd/command.c, and
3216           silcd/packet_send.c.
3217
3218 Mon Apr  8 23:57:32 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3219
3220         * Redefined the Status Payload to include now two 8 bit fields,
3221           instead of one 16 bit field.  This now makes it possible to
3222           send list of errors.  Updated the protocol specs and the code
3223           in core library, client library and server.  Protocol TODO #1.
3224           Affected files are lib/silccore/silccommand.[ch],
3225           lib/silcclient/command_reply.[ch], silcd/command.c,
3226           silcd/command_reply.c and silcd/packet_receive.[ch].
3227
3228 Mon Apr  8 19:57:40 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
3229
3230         * Added config parse status SILC_CONFIG_EPRINTLINE, this status
3231           must be handled by the application and should tell the application
3232           that an error message was already printed, and it should print the
3233           config coords (line, filename, ...).  Affected files are
3234           silcd/serverconfig.c, lib/silcutil/silcconfig.[ch].
3235
3236         * Added local macro SILC_SERVER_CONFIG_ALLOCTMP to make the
3237           server config parsing code more readable.
3238
3239           Fixed a bug in the fetch_logging() config callback.
3240
3241           Affected files is silcd/serverconfig.c.
3242
3243         * Drop root privileges when started in foreground.  Don't drop them
3244           if debugging also.  Affected file is silcd/silcd.c.
3245
3246 Mon Apr  8 17:00:41 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3247
3248         * Added more IM-like features by introducing new user modes
3249           for setting various presence information.  Added new modes:
3250           INDISPOSED, BUSY, PAGE, HYPER and ROBOT.  Updated protocol
3251           specs and code.  Protocol TODO #19. Affected files are
3252           lib/silccore/silcmode.h, irssi/src/silc/core/client_ops.c,
3253           irssi/docs/help/in/umode.in and lib/silcclient/command.c.
3254
3255 Sun Apr  7 17:07:59 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3256
3257         * Added STATS command to the protocol after all, to return
3258           various statistical information about the network.  It can
3259           be used by clients to retrieve statistical information, and
3260           servers may use it to to fetch cell and network wide
3261           statistics from router.  Updated the protocol specs and
3262           implemented it to the server.  Protocol TODO #16.
3263           Affected files are lib/silccore/silccommand, silcd/command.[ch],
3264           silcd/command_reply.[ch].
3265
3266 Sat Apr  6 17:08:58 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3267
3268         * The LIST command reply in client libary now adds new channel
3269           entry if the returned channel doesn't exist yet in cache,
3270           and returns the channel entry to the application in the
3271           command_reply client operation.  Affected file is
3272           lib/silcclient/command_reply.c.
3273
3274         * Changed the channel message payload's MAC generation to
3275           include the IV in the MAC as well.  This way all relevant
3276           parts of the channel message payload are authenticated also
3277           with the channel message MAC (and not only by packet MAC).
3278           Causes incompatibility with 1.0 protocol.  Protocol TODO #7.
3279           Affected file is lib/silccore/silcchannel.c.
3280
3281         * Fixed the SKE to save the remote version, since the
3282           silc_ske_parse_version mistakenly checked wrong version,
3283           after it replaced the start payload.  Affected files are
3284           lib/silcske/silcske.[ch].
3285
3286 Fri Apr  5 16:03:03 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3287
3288         * Splitted lib/silcutil/silcutil.h into silcstrutil.h for
3289           string utility functions.  Added there also new functions
3290           silc_utf8_[encode/decode/valid] for UTF-8 string encoding.
3291           Affected files lib/silcutil/silcstrutil.[ch].
3292
3293         * Renamed silc_*_pem functions to silc_pem_* functions.  Affected
3294           files are lib/silcutil/silcstrutil.[ch].
3295
3296         * Defined that the security property fields in SKE SHOULD be
3297           UTF-8 encoded, defined that version string MUST be US-ASCII
3298           encoded, defined that passphrases sent in connection
3299           authentication protocol MUST be UTF-8 encoded.  Implemented
3300           these to the client and server.  Defined also that other
3301           passphrases sent in the protocol MUST be UTF-8 encoded.
3302           Affected files are lib/silcske/silcske.c,
3303           lib/silcclient/protocol.c, silcd/protocol.c,
3304           silcd/serverconfig.c, and lib/silccore/silcauth.c.
3305
3306         * Changed the silc_client_close_connection interface to not
3307           need the SilcSocketConnection which should not be visible
3308           to application.  Affected files are lib/silcclient/client.c
3309           and lib/silcclient/silcclient.h.
3310
3311         * Rewrote the text for Private Message Key Payload in the
3312           protocol specification.  Protocol TODO #11.
3313
3314 Wed Apr  3 16:24:51 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3315
3316         * Upgraded the protocol version to 1.1, updated protocol specs
3317           and software.
3318
3319         * Added the nickname as new argument to NICK_CHANGE notify and
3320           added it to protocol specs and implemented it to client and
3321           server.  Protocol TODO #3.  Affected files are silcd/idlist.[ch],
3322           silcd/command.c, silcd/packet_receive.c, packet_send.[ch], and
3323           lib/silcclient/client_notify.c.
3324
3325         * Added the killer's client ID to the KILLED notify and added
3326           it to protocol specs and implemented it to client and server.
3327           Protocol TODO #13.  Affected files are silcd/command.c,
3328           silcd/packet_receive.c, packet_send.[ch],
3329           lib/silcclient/client_notify.c, irssi/src/silc/core/client_ops.c.
3330           The killer's client entry is now returned to application in
3331           the `notify' client operation.
3332
3333         * Fixed the Max Argument fields that had too large value set
3334           in the protocol specs.  Protocol TODO #14.
3335
3336         * Added the LEAVE command reply to return the ID of parted
3337           channel.  Updated protocol specs and implemented it to the
3338           client and server.  Protocol TODO #15.  Affected files are
3339           silcd/command.c, lib/silcclient/command_reply.c.  The channel
3340           entry is now returned to application in the `command_reply'
3341           client operation.
3342
3343         * Rewrote the version SKE version checking in client libary
3344           and in server to use the silc_parse_version_string.  Affected
3345           files are lib/silcclient/protocol.c, silcd/protocol.c.
3346
3347         * Added SILC_STATUS_ERR_NO_CHANNEL_FOPRIV error status to few
3348           commands that was missing it, and updated protocol specs and
3349           the server implementation.  Protocol TODO #10.  The affected
3350           file is silcd/command.c.
3351
3352         * Defined new message flags SILC_MESSAGE_FLAG_REPLY to be
3353           generic reply to a generic request (REQUEST flag), and
3354           SILC_MESSAGE_FLAG_DATA to send any kind of data in a generic
3355           way.  A draft-riikonen-silc-flags-payloads-00.txt is written
3356           to define the payload for DATA flag.  Added the flags to
3357           the implementation.  Protocol TODO #9.  Affected file is
3358           lib/silccore/silcchannel.h.
3359
3360           Changed the client library to return the message length
3361           to application as well in the channel_message and private_message
3362           client operations.  Affected files are
3363           lib/silcclient/client_prvmsg, lib/silcclient/client_channel.c,
3364           lib/silcclient/silcclient.h, irssi/src/silc/core/client_ops.c,
3365           and lib/silcclient/client_ops_example.c.
3366
3367         * Added two new channel modes: SILC_CMODE_SILENCE_USERS
3368           and SILC_CMODE_SILENCE_OPERS which can be used to moderate
3369           the channel.  Updated protocol specs and impelemented this
3370           to client and server.  Protocol TODO #6.  Affected files are
3371           silcd/packet_receive.c, server_util.c, lib/silcclient/command.c,
3372           lib/silcclient/client_channel.c, lib/silccore/silcmode.h.
3373
3374           Added new options m and M to CMODE command in Irssi SILC
3375           client to set these modes.
3376
3377         * Deprecated all administrative commands from SILC protocol
3378           since they are highly implementation specific commands.
3379           Updated protocol specs.  Moved the old commands in
3380           implementations to private range of command types.  Affected
3381           files are silcd/command.c, lib/silcclient/command.c and
3382           lib/silcclient/command_reply.c.  Protocol TODO #8.
3383
3384         * Fixed a bug in server where sending unknown command crashes
3385           the server.  Affected file silcd/command.c.
3386
3387 Wed Apr  3 09:57:47 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
3388
3389         * Added SILC_PROTOCOLVERSION macro to check protocol version
3390           of a socket connection.  The affected file is
3391           lib/silcutil/silcsockconn.h.
3392
3393         * Added better error logging in rekey protocol.  Affected file
3394           silcd/protocol.c.
3395
3396         * Do not check public key types in SKE during rekey.  Affected
3397           file lib/silcske/payload.c.
3398
3399         * Fixed the rekey protocol with PFS, which was totally broken.
3400           Affected file silcd/protocol.c.
3401
3402 Tue Apr  2 14:55:06 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
3403
3404         * Some client implementations quit network by doing first LEAVE
3405           and then immediately SIGNOFF (like Bombyx).  We now do check
3406           after a short time after LEAVE notify and check whether the
3407           client is still valid after LEAVE, and if not we remove it from
3408           cache.  Affected file is lib/silcclient/client_notify.c.
3409
3410 Tue Apr  2 13:39:04 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
3411
3412         * Merged version 1.1.4 of zlib. Even if it not currently in use,
3413           it's good not to have security holes here.
3414
3415         * Fixed a negative refcount situtuation for the config context.
3416           Affected file is silcd/serverconfig.c.
3417
3418 Mon Apr  1 20:15:10 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
3419
3420         * ROBOdoc documented lib/silcutil/silcutil.h.
3421
3422 Sat Mar 30 21:06:45 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3423
3424         * Optimized even more the SilcPacketContext structure.  Now
3425           totally saved 16 bytes of memory per context after optimization.
3426           Affected files are lib/silccore/silcpacket.[ch].
3427
3428         * Made strict checks for valid SILC IDs.  Affected file is
3429           lib/silccore/silcid.c.
3430
3431 Sat Mar 30 18:15:55 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3432
3433         * Changed the object argument for silc_cipher_register,
3434           silc_hash_register, silc_hmac_register and silc_pkcs_register
3435           to const.  Affected files are lib/silccrypt/silccipher.[ch],
3436           silchash.[ch], silchmac.[ch] and silcpkcs.[ch].
3437
3438         * Changed the silc_get_username and silc_get_real_name to
3439           never fail.  Affected file lib/silcutil/unix/silcunixutil.c.
3440
3441         * Fixed the Irssi SILC Client to use the silc_get_username and
3442           silc_get_real_name insted of glib routines since the glib
3443           routines only corrupt stack.  Fixes the Irssi SILC to work in
3444           Cygwin.  Affected file irssi/src/silc/core/silc-core.c.
3445
3446         * Fixed the Irssi to not use g_get_home_dir since it crashes
3447           or returns garbage on cygwin and corrupts stack.  Added function
3448           get_home_dir to Irssi routines.  Affected files are
3449           irssi/src/core/misc.[ch] and irssi/src/core/core.c.
3450
3451 Fri Mar 29 21:55:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3452
3453         * Made some structure optimizations.  SFTP memory FS MemFSEntry
3454           entry structure.  Optimized SilcTask structure.  Optimized
3455           SilcPacketContext structure.
3456
3457           Affected files lib/silcsftp/sftp_fs_memory.c,
3458           lib/silcutil/silcschedule.c, lib/silccore/silcpacket.h.
3459
3460 Fri Mar 29 10:41:07 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3461
3462         * And yet again reverted back the config thing since Johnny
3463           screwed it up.  Affected file silcd/serverconfig.[ch], server.c,
3464           and silcd.c.
3465
3466         * Fixed memory leaks from config object.  Affected files are
3467           silcd/serverconfig.[ch].
3468
3469         * Added support for adding new connections to the server in rehash.
3470           After rehash they take effect.
3471
3472           Added support for changing the maximum allowed connections in
3473           rehash.  The number can grow but going smaller is not supported.
3474
3475           Added function silc_server_num_sockets_by_remote to the
3476           silcd/server_util.[ch].
3477
3478           Affected files are silcd/server.c, and silcd/serverconfig.[ch].
3479
3480 Fri Mar 29 03:26:12 CET 2002 Johnny Mnemonic <johnny@themnemonic.org>
3481
3482         * Added preliminary checking during config parsing for a valid
3483           public/private key and removed further checks in the code.
3484           Affected files are silcd/serverconfig.[ch], server.c.
3485
3486         * Moved functions silc_server_drop() and silc_server_daemonise()
3487           from server.c to silcd.c since they are stricly related to
3488           the application activity.
3489
3490         * Reverted a small part of the automatic ref/unref since
3491           it caused a double unref in some situations.  Affected
3492           files are silcd/silcd.[ch], server.c, serverconfig.c.
3493
3494         * Added some .cvsignore files in the lib directory.
3495
3496 Thu Mar 28 22:51:15 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3497
3498         * Fixed silc_net_gethostbyaddr to correctly resolve by
3499           address.  Affected file lib/silcutil/silcnet.c.
3500
3501         * Fixed the notify relaying to client.  The HMAC to be used
3502           with relayed packets ws wrong and caused decryption failure
3503           at the client end.  Affected file is silcd/packet_receive.c.
3504
3505 Thu Mar 28 19:02:05 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3506
3507         * Created new branch silc_protocol_1_0_branch.
3508
3509         * Reverted the silc_log_quick change in lib/silcutil/silclog.c.
3510
3511         * Changed the silc_server_config_* routines to be SilcServer
3512           independent.  They are now officially application specific code
3513           and not part of generic server implementation.  Affected files
3514           are silcd/serverconfig.[ch], silcd/silcd.c, silcd/server.c.
3515
3516 Thu Mar 28 17:01:43 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3517
3518         * Added automatic referencing of config context in the
3519           silc_server_config_alloc, and automatic unreferencing in the
3520           silc_server_config_destroy.  Affected files are
3521           silcd/serverconfig.[ch], silcd/silcd.c.
3522
3523         * Fixed the silc_log_quick handling in the logging routines.
3524           It didn't log quickly when it was TRUE.  Affected file is
3525           lib/silcutil/silclog.c.  Also the flush delay was set even
3526           if it was 0 in config file.  Affected file is
3527           silcd/serverconfig.c.
3528
3529         * Added support for changing key pair of the server in rehash.
3530           Affected file silcd/server.c.
3531
3532 Thu Mar 28 12:17:21 CET 2002  Pekka Riikonen <priikone@silcnet.org>
3533
3534         * Fixed the TOPIC_SET notify to not cras.  It changed the topic
3535           too early, before getting the channel entry.  Affected file
3536           is silcd/packet_receive.c.
3537
3538 Thu Mar 28 09:58:16 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
3539
3540         * Added functions silc_server_config_[ref/unref], these are used
3541           to prevent that the config object is destroyed.
3542
3543           No longer directly affect global variables silc_log_quick and
3544           silc_log_delay, they are first cached inside the config object
3545           and then applied with silc_server_config_setlogfiles().
3546
3547           silc_server_config_set_defaults() is now internal to
3548           serverconfig.c, there are no reasons to show this internal stuff
3549           to the server.
3550
3551           Affected files are silcd/serverconfig.[ch].
3552
3553         * Added macro SILC_SERVER_LOG_STDERR(), this should replace most
3554           fprintf's to stderr, since some code may be executed again after
3555           the server went into the background.  Affected files are
3556           silcd/server.[ch].
3557
3558         * Added rehash support. Added function silc_server_rehash() that
3559           will perform all the basic tasks of the rehashing procedure.
3560
3561         * Added command line option `-x, --hexdump'. This will enable the
3562           SILC_LOG_HEXDUMP calls that are no longer enabled with `--debug'.
3563           The option `--hexdump' implies `--debug'.
3564
3565         * Fixed a bad bug in the logging APIs (silcutil library) where
3566           the application would crash after calling silc_log_reset_all().
3567
3568 Wed Mar 27 19:43:16 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3569
3570         * Fixed the KICKED notify handling in client library to
3571           correctly remove the channel and all entries from the
3572           channel when I was kicked.  This bug crashed the client.
3573
3574           Fixed yet another but in KICKED notify handling to remove
3575           the kicked client correctly from the channel.
3576
3577           Affected file is lib/silcclient/client_notify.c.
3578
3579         * Fixed a minor bug in looking up correct client entry
3580           in KICKED notify in server.  Affected file is
3581           silcd/packet_receive.c.
3582
3583         * Fixed the lib/silcmath/Makefile.am to include the MPI and GMP
3584           sources correctly to distribution.  Fixes --with-gmp option.
3585
3586         * Removed the manual rehashing from ID Cache, and changed it
3587           to use the SILC Hash Table's auto rehash feature.  Affected
3588           file is lib/silccore/silcidcache.c.
3589
3590 Wed Mar 27 00:07:11 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3591
3592         * Fixed a bug in the silc_client_nickname_format function that
3593           handles the multiple same nickname formatting.  Two clients
3594           with same nickname caused problems after the first one left
3595           and rejoined.  It didn't format the nickname correctly.
3596           Affected file is lib/silcclient/idlist.c.
3597
3598 Tue Mar 26 19:33:03 CET 2002  Pekka Riikonen <priikone@silcnet.org>
3599
3600         * Don't change the topic if olod topic is same as new one.
3601           Affected file is silcd/packet_receive.c.
3602
3603 Mon Mar 25 21:11:35 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3604
3605         * Added cross-reference support to the SILC Documentation
3606           generator.  All types across all HTML files are now cross-
3607           referenced.  Affected files util/robodoc/generator.c and
3608           scripts/silcdoc/silcdoc.
3609
3610         * Added file lib/silcutil/silctypes.h to include all the
3611           arithmetic type definitions and some macros.  Removed
3612           includes/bitmove.h and moved macros to silctypes.h.
3613
3614 Mon Mar 25 17:19:46 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3615
3616         * Merged bugfixes for Irssi SILC client from irssi.org CVS.
3617
3618 Sun Mar 24 11:21:04 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3619
3620         * Added `type' argument to silc_id_payload_parse_id function which
3621           now returns the type of the ID to the sent pointer.  Affected
3622           file is lib/silccore/silcid.[ch].
3623
3624         * Added check for CMODE_CHANGE notify type that mode change is
3625           allowed by the sender.  Affected file silcd/packet_receive.c.
3626
3627         * Added check for CUMODE_CHANGE notify type that mode change is
3628           allowed by the sender.  Affected file silcd/packet_receive.c.
3629           Added the ID type as CUMODE_CHANGE notify type as argument
3630           to the `notify' client operation.  Affected files are
3631           lib/silcclient/client_notify.c, irssi/src/silc/core/client_ops.c.
3632
3633         * Added function silc_client_add_server to the client library.
3634           Added support for resolving also channel and server info when
3635           received unknown entity in notify packet.  Affected files are
3636           lib/silcclient/idlist.[ch], lib/silcclient/client_notify.c.
3637
3638         * Added function silc_command_get_status to return the command
3639           status from the command reply's argument payload.  Affected files
3640           are lib/silccore/silccommand.[ch].
3641
3642         * Added check for KICKED notify type that the kicking is
3643           allowed by the client.  Affected file silcd/packet_receive.c.
3644
3645         * Created function silc_get_input which can be used to get input
3646           (echo on or off) from user on command line.  Affected files are
3647           lib/silcutil/silcutil.[ch].
3648
3649 Sat Mar 23 09:51:26 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3650
3651         * Optimized silc_server_packet_relay_to_channel function.
3652           Added new function silc_channel_message_payload_encrypt which
3653           can be called directly if channel message payload needs to
3654           be encrypted and is already encoded (no need to call _encode
3655           function).  Packet relaying is now done by router without any
3656           extra memory allocations.  Affected files are
3657           lib/silccore/silcchanel.[ch], silcd/packet_receive.c and
3658           silcd/packet_send.c.
3659
3660         * Fixed the INVITE notify handling.  It took wrong arguments
3661           as invite list and invite delete.  Affected file is
3662           silcd/packet_receive.c.
3663
3664         * Added check for TOPIC_SET notify type that the topic change is
3665           allowed by the client.  Affected file silcd/packet_receive.c.
3666
3667         * Added check for INVITE notify type that inviting is allowed by
3668           the client.  Affected file silcd/packet_receive.c.
3669
3670         * Changed the silc_server_client_on_channel to return the
3671           SilcChannelClientEntry as well.  Moved the function
3672           silc_server_check_cmode_rights to server_util.[ch].
3673           Affected files are silcd/server_util.[ch], silcd/command.c.
3674
3675         * Added function silc_server_check_umode_rights to check whether
3676           changing client's user mode is allowed.  Added check for
3677           UMODE_CHANGE notify type that the umode change is allowed
3678           by the client.  Affected files are silcd/server_util.[ch],
3679           silcd/packet_receive.c and silcd/command.c.
3680
3681 Fri Mar 22 12:25:58 CET 2002  Pekka Riikonen <priikone@silcnet.org>
3682
3683         * Fixed the SILC_PACKET_MAX_ID_LEN to actually be the max
3684           ID length.  It ignored that ID can be IPv6 based as well.
3685           Affected file lib/silccore/silcpacket.h.
3686
3687         * Fixed the silc_id_id2str and silc_id_str2id to take the
3688           IPv6 address offset's into consideration.  Affecte file is
3689           lib/silccore/silcid.c.
3690
3691 Thu Mar 21 20:44:13 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3692
3693         * Fixed the internal Unix scheduler functions to check for
3694           NULL context they may receive.  The affected file is
3695           lib/silcutil/unix/silcunixschedule.c.
3696
3697 Thu Mar 21 19:12:22 EET 2002  Timo Sirainen <tss@iki.fi>
3698
3699         * Changed hardcoded ~/.silc paths to use get_irssi_dir() so you
3700           can specify different directory with --home command line
3701           parameter. Affected files irssi/src/silc/core/client_ops.c,
3702           clientutil.c
3703
3704         * SILC-specific commands aren't now executed if the active server
3705           isn't of SILC-type, so there won't be problems with having
3706           IRC and SILC protocol support in same client. Affected files
3707           irssi/src/silc/core/silc-channels.c, silc-servers.c,
3708           silc-commands.h
3709
3710 Wed Mar 20 11:06:57 CET 2002  Pekka Riikonen <priikone@silcnet.org>
3711
3712         * Improved the signal support in SILC Schedule.  Added new
3713           function silc_schedule_signal_call which is used by application
3714           to mark a signal to be called.  It is now safe to perform
3715           any kind of tasks in signal callbacks since it is guaranteed
3716           that the application specified signal callback is called
3717           after the signal is over.  Affected files are
3718           lib/silcutil/silcschedule.[ch], lib/silcutil/*/silc*schedule.c.
3719
3720 Tue Mar 19 20:42:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3721
3722         * Added `name' field to SilcChannelPrivateKey to represent
3723           application given name for the key.  Moved also the context from
3724           lib/silcclient/idlist.h into lib/silcclient/silcclient.h.
3725           Added the `name' argument also to the function
3726           silc_client_add_channel_private_key.
3727
3728           Added function silc_client_current_channel_private_key to set the
3729           current channel private key in use.
3730
3731           Added "change" command to KEY command which can be used to change
3732           the current channel private key.  Bound the command also to
3733           alt+K (Alt+Shift+k).
3734
3735           Also affected files lib/silcclient/client_channel.c,
3736           irssi/src/docs/help/in/key.in, irssi/src/silc/core/silc-channel.c.
3737
3738 Tue Mar 19 16:32:43 CET 2002  Pekka Riikonen <priikone@silcnet.org>
3739
3740         * Added silc_rng_get_byte_fast function in to the
3741           lib/silccrypt/silcrng.[ch].
3742
3743         * Changed the interface of silc_packet_assemble and the
3744           silc_packet_send_prepare.  If silc_packet_assmble is now
3745           called the application does not call silc_packet_send_prepare
3746           because the library will call it automatically.  These
3747           interfaces now also return a reference to the outgoing buffer
3748           which includes the assembled packet, which the application can
3749           use to encrypt the packet.
3750
3751           Affected files are lib/silccore/silcpacket.[ch],
3752           lib/silcclient/client.c, client_channel.c client_prvmsg.c,
3753           silcd/packet_send.c, server_backup.c and packet_receive.c.
3754
3755         * Fixed a packet sending bug on very high load, where outgoing
3756           packet queue wasn't handled correctly and packets got corrupted.
3757           Affected files are lib/silcutil/*/silc*sockconn.c,
3758           lib/silcclient/client.c and silcd/server.c.
3759
3760 Mon Mar 18 21:00:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3761
3762         * Added macro SILC_PACKET_DATALEN which can be used during
3763           packet assembling to check whether the data to be added to
3764           the packet will fit to SILC_PACKET_MAX_LEN.  If not the data
3765           len is truncated until it fits it.
3766
3767           Added checks for maximum length of channel message payload and
3768           private message payload also.
3769
3770           Added checks for maximum packet length in server and in
3771           client library.
3772
3773           Affected files are lib/silccore/silcpacket.h, silcd/packet_send.c,
3774           lib/silcclient/client.c, lib/silccore/silcchannel.c and
3775           lib/silccore/silcprivate.c, lib/silcclient/client_channel.c and
3776           lib/silcclient/client_prvmsg.c.
3777
3778 Mon Mar 18 14:54:42 CET 2002  Pekka Riikonen <priikone@silcnet.org>
3779
3780         * Added silc_server_packet_queue_purge call to the
3781           silc_server_disconnect_remote to assure that all data in the
3782           queue before disconnecting is sent to the network.  Affected
3783           file silcd/server.c.
3784
3785 Sun Mar 17 19:26:16 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3786
3787         * Added the deleting of server's own ID cache entry to the
3788           silc_server_free function.  Free also everything else that
3789           has been allocated in silc_server_init.  The affected file
3790           is silcd/server.c.
3791
3792 Sun Mar 17 15:44:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3793
3794         * Added functions silc_parse_version_string, silc_version_to_num,
3795           and silc_ske_parse_version to parse SILC protocol style version
3796           strings.  Affected files lib/silcutil/silcutil.[ch] and
3797           lib/silcske/silcske.[ch].
3798
3799         * Added new configuration params: version_protocol, version_software
3800           and version_software_vendor to specify what version the remote
3801           host must at least be to be able to connect to server.  The vendor
3802           string can be regex matched too.  Added new function
3803           silc_server_connection_allowed to check maximum number of allowed
3804           connections, and allowed versions for incoming connections.
3805           Affected files are silcd/server.c, server_util.[ch] and
3806           serverconfig.[ch].
3807
3808 Sun Mar 17 10:24:50 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3809
3810         * Added preliminary support for signals in scheduler.  The
3811           signals we care about are now blocked always when the scheduler
3812           is locked.  This way we can synchronise the use of signal with
3813           scheduler.  It is guaranteed that when signal occurs the scheduler
3814           is not locked, and thus new tasks can be safely added to the
3815           scheduler.
3816
3817           Renamed silc_schedule_wakeup_init and silc_schedule_wakeup_uninit
3818           to silc_schedule_internal_init and silc_schedule_internal_uninit.
3819           Added new platform specific routines
3820           silc_schedule_internal_signals_[un]block and
3821           silc_schedule_internal_signal_[un]register.
3822
3823           Added new functions to SILC Schedule API:
3824           silc_schedule_signal_[un]register.  Each signal that application
3825           is going to use should be registered to the scheduler.
3826
3827           Affected files are lib/silcutil/silcschedule.[ch],
3828           lib/silcutil/*/silc*schedule.c.
3829
3830 Sat Mar 16 22:39:23 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3831
3832         * Check for unauthenticated client and server in the
3833           silc_server_new_client and silc_server_new_server functions.
3834           Affected file silcd/packet_receive.c.
3835
3836         * Added function silc_string_is_ascii to check whether given
3837           string is 7-bit ASCII string.  Affected files are
3838           lib/silcutil/silcutil.[ch].
3839
3840         * Added function silc_id_is_valid_server_id into the
3841           silcd/serverid.c and added checking for valid Server ID's in
3842           silc_server_new_server.  The Server ID must always be based
3843           on the server's public IP address.
3844
3845         * Added logging of DISCONNECT packet message in the server.
3846           Affected file silcd/server.c.
3847
3848 Sat Mar 16 18:04:30 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3849
3850         * Changed all library interfaces that use Global RNG to also
3851           accept SilcRng as argument.  Affected files are
3852           lib/silcclient/command.c, lib/silccore/silcauth.[ch],
3853           lib/silccore/silcchanel.[ch], lib/silcclient/client_channel.c,
3854           silcd/packet_send.c, lib/silccore/silcprivate.[ch],
3855           lib/silcmath/silcprimegen.c, lib/silcmath/silcmath.h, and
3856           lib/silccrypt/rsa.c.
3857
3858         * Added function silc_pkcs_generate_key to the
3859           lib/silccrypt/silcpkcs.[ch] for applications so that they
3860           don't need to do pkcs->pkcs->init calls anymore.
3861
3862         * Remove SilcSocketConnection from the SFTP API since it really
3863           wasn't needed there.  The application has the information
3864           saved in its contexts anyway and the SFTP layer doesn't need
3865           know about it.  Affected files lib/silcsft/silcsftp.h and
3866           lib/silcsftp/sftp_[server/client].c.
3867
3868         * Rewrote the SILC SIM (modules) interface in lib/silcsim.[ch].
3869           The SilcSimContext is not SilcSim.
3870
3871         * Fixed possible buffer overflows in silc_id_render in the
3872           lib/silcutil/silcutil.c.
3873
3874         * On EPOC the global crypto module lists are not used at all
3875           in the crypto library.  Added support for using the constant
3876           algorithm list on EPOC.  Affected files are
3877           lib/silccrypt/silccipher.c, silchash.c, silchmac.c and
3878           silcpkcs.c.
3879
3880         * Fixed the handling of third parameter of KICKED notify, since
3881           it was mistakenly updated to SILC Protocol 1.0 even though it
3882           is to be included in 1.1.  Since it is not in 1.0 it is not
3883           mandatory, and this fix now handles it only if it is provided,
3884           and it is not error if it is not provided.  Affected file
3885           lib/silcclient/client_notify.c.
3886
3887 Sat Mar 16 09:07:27 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3888
3889         * Handled CHANNEL_CHANGE notify (ignore it) in Irssi SILC
3890           client.  Affected file irssi/src/silc/core/client_ops.c.
3891
3892         * Merged with Irssi 0.8.4 from irssi.org CVS.
3893
3894 Thu Mar 14 12:53:57 CET 2002  Pekka Riikonen <priikone@silcnet.org>
3895
3896         * Check for valid socket connection in client entries before
3897           sending any messages.  Fixes a crash, but doesn't fix some
3898           other underlaying bug that is lurking there.  Affected
3899           file silcd/packet_send.c.
3900
3901 Thu Mar 14 13:38:12 EET 2002  Timo Sirainen <tss@iki.fi>
3902
3903         * $usermode, $cumode and $cumode_space expandos shouldn't do
3904           anything with non-SILC server records. Affected file
3905           irssi/src/silc/core/silc-expandos.c
3906
3907 Wed Mar 13 21:38:26 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3908
3909         * Fixed the silc_net_check_[host/local]_by_sock to support
3910           IPv6 bound sockets as well.  Now they can return IPv6 addresses
3911           as well.  Affected file lib/silcutil/silcnet.c.
3912
3913         * Fixed silc_net_addr2bin to correctly convert IPv6 addresses.
3914           Affected lib/silcutil/unix/silcunixnet.c.
3915
3916         * Fixed ID rendering (at least on some platforms, not NetBSD)
3917           for IPv6 addresses.  Affected file lib/silcutil/silcutil.c.
3918
3919 Tue Mar 12 17:58:59 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3920
3921         * Added silc_hash_public_key and silc_hash_public_key_compare
3922           functions to be used with SilcHashTable.  They can be used to
3923           hash public keys and compare public keys in hash table.  Affected
3924           file lib/silcutil/silcutil.[ch].
3925
3926         * Added support for specifying multiple public keys for Client
3927           connection section in server configuration file.  This makes it
3928           possible to accept multiple public keys from same host, or to
3929           make a section that accepts any incoming host, and have the
3930           accepted public keys listed in the section.
3931
3932           Added functions silc_sever_[find/get]_public_key,  added the
3933           support for this actually to all connection sections but only
3934           the Client section is currently allowed to specify multiple
3935           public keys.
3936
3937           Affected files are silcd/server.c, server_internal.h,
3938           command.c, protocol.c, server_util.[ch], packet_receive.c.
3939
3940 Mon Mar 11 23:37:38 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3941
3942         * Merged Irssi 0.8.2 from irssi.org CVS.
3943
3944 Sun Mar 10 23:34:48 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
3945
3946         * If silc_debug is TRUE, also output standard logging messages
3947           to stderr with the debug output.
3948
3949           Made silc_log_reset_all() flushing all channels before returning.
3950           Also fixed some documentation typos.
3951
3952           Affected files are lib/silcutil/silclog.[ch].
3953
3954 Sun Mar 10 20:07:49 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3955
3956         * Fixed the server to check correctly the amount of connections
3957           from single host, by checking also the type of the connection.
3958           Fixed also the comparison of number of connections and number
3959           of allowed connections.  Affected files are silcd/server.c,
3960           server_util.[ch].
3961
3962 Fri Mar  8 17:16:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3963
3964         * Fixed the USERS command reply to save the user's mode on the
3965           channel as well.  Fixed JOIN command reply to check whether a
3966           client is on channel already and not join it twice.  Affected
3967           file lib/silcclient/command_reply.c.
3968
3969         * Added new file silc-expandos.c into irssi/silc/core/ to return
3970           various stuff for various signal for the statusbar etc. updating.
3971           Now Irssi SILC client prints channel user modes etc. on the
3972           statusbar.
3973
3974         * The user mode (like server/router operator changes) is now shown
3975           on the Irssi SILC client's statusbar.  The affected files are
3976           irssi/src/silc/core/client_ops.c, silc-expandos.c.
3977
3978 Thu Mar  7 19:21:22 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3979
3980         * Changed silc_mutex_[un]lock calls in lib/silcutil/silcschedule.c
3981           to SILC_SCHEDULE_[UN]LOCK macros.
3982
3983         * Added more error printing to logs in server code.  Affected
3984           files silcd/server.c and silcd/protocol.c.
3985
3986         * Fixed -S option parsing in Irssi SILC Client.  Affected file
3987           irssi/src/silc/core/silc-core.c.
3988
3989         * Added silc_buffer_alloc_size function.  Affected file is
3990           lib/silcutil/silcbuffer.h.
3991
3992 Tue Mar  5 14:37:27 EET 2002  Pekka Riikonen <priikone@silcnet.org>
3993
3994         * Changed all silc_[hash|hmac|cipher|pkcs]_default tables to
3995           constants.  Affected files in
3996           lib/silccrypt/silcpkcs.[ch], silchash.[ch], silchmac.[ch] and
3997           silccipher.[ch].
3998
3999         * Changed the internal SFTP Memory FS table to const.  Affected
4000           file lib/silcsftp/sftp_fs_memory.c.
4001
4002 Sun Mar  3 18:37:13 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4003
4004         * Fixed the buffer formatting and unformatting routines to
4005           check the size of 64 bits types with sizeof().  Affected
4006           file is lib/silcutil/silcbuffmt.c.
4007
4008 Mon Feb 25 17:19:05 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4009
4010         * Removed 0.6.x backwards support.
4011
4012 Sun Feb 24 12:53:25 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4013
4014         * Changed all integer type names:
4015           [u]int[8/16/32/64] -> Silc[UInt/Int][8/16/32/64].  This is
4016           to avoid collisions with other libraries using same type names
4017           as we did.
4018
4019 Sat Feb 23 20:31:43 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4020
4021         * Added `prefer_ipv6' argument to the functions
4022           silc_net_gethostbyname[_async].  If it is TRUE it will return
4023           IPv6 address over IPv4.  If FALSE IPv4 address is returned
4024           even if IPv6 address was found.  Affected files
4025           lib/silcutil/silcnet.[ch].
4026
4027         * Added support silc_net_create_connection[_async] to fallback
4028           to IPv4 address if IPv6 address could not be used (like if
4029           it doesn't work on a specific system).  Affected file in
4030           lib/silcutil/unix/silcunixnet.c.
4031
4032 Sat Feb 23 15:20:30 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4033
4034         * Added silc_schedule_reinit function to do the enlarging
4035           of the max tasks handling capabilities of the scheduler.
4036           Affected files lib/silcutil/silcschedule.[ch].
4037
4038 Wed Feb 20 20:41:01 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4039
4040         * Added automatic extern "C" { ... } for C++ compilers so the
4041           application does not need to define them.  Affected file
4042           includes/silcincludes.h.
4043
4044         * Renamed lib/silcclient/silcapi.h to silcclient.h as the
4045           old name went against naming convention.  Applications now
4046           include "silcclient.h" instead of "clientlibincludes.h".
4047           Removed includes/clientlibincludes.h, it is redundant now.
4048
4049         * Renamed includes/version.h to silcversion.h.
4050
4051         * Added really preliminary support for OS/2 into the util
4052           library.  Only thread & mutex API is implemented, others
4053           are still to be implemented.  Created the lib/silcutil/os2/
4054           directory.  Created also file includes/silcos2.h.
4055
4056 Wed Feb 20 18:48:49 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4057
4058         * Added preliminary BeOS support into the util library.
4059           Created lib/silcutil/beos/, and implemented all the needed
4060           functions to support SILC on BeOS.  Created also file
4061           includes/silcbeos.h.
4062
4063 Mon Feb 18 15:49:22 EET 2002  Timo Sirainen <tss@iki.fi>
4064
4065         * Added proper initializations to silc's irssi code, so it's
4066           now possible to load it as module.  Affected files
4067           irssi/src/silc/core/silc-core.c,
4068           fe-common/silc/fe-common-silc-core.[ch] and fe-text/silc.c
4069
4070 Sun Feb 17 19:02:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4071
4072         * Merged latest Irssi (0.8.1) from the irssi.org's CVS into
4073           the SILC tree.
4074
4075         * Fixed the silcdoc document generator to correct generate
4076           docs from all kinds of filenames.  Affected files are
4077           util/robodoc/Source/generator.c, scripts/silcdoc/silcdoc
4078
4079         * ROBOdoc documented lib/silcutil/silcmemory.h.
4080           Added also new function silc_memdup.
4081
4082         * Removed lib/silcutil/silcbufutil.h and moved those routines
4083           to the lib/silcutil/silcbuffer.h.
4084
4085 Sun Feb 17 15:52:30 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4086
4087         * Added `user_count' to the SilcChannelEntry which now tells the
4088           number of users on the channel.  The user count is now saved
4089           in normal server of global channels as well.  Affected files
4090           silcd/server.c, idlist.h, packet_receive.c and command.c.
4091
4092         * Splitted lib/silcutil/silcutil.[ch] into silcfileutil.[ch] to
4093           include file utility functions.
4094
4095         * Fixed the lib/silcsftp/sftp_fs_memory.c to use silcutil routines
4096           instead of calling directly OS routines.
4097
4098         * Fixed NICK change printing in Irssi SILC Client. Fixed
4099           KICKED notify printing in Irssi SILC Client.  Affected file
4100           irssi/src/silc/core/client_ops.c.
4101
4102         * Fixed a NICK change bug in client library, to not recreate the
4103           client_entry->channels hash table everytime nick is changed.
4104           Affected file lib/silcclient/client.c.
4105
4106 Sun Feb 17 10:10:14 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4107
4108         * ROBOdoc documented the lib/silcske/silcske.h, and improved
4109           the SKE interface a bit.
4110
4111         * Fixed padding problem in PKCS#1. The padding was not actually
4112           random since the random number generator was used incorrectly.
4113           This security bug affects only when encrypting with PKCS#1, and
4114           it is not currently used at all in SILC. SILC only use signing
4115           with PKCS#1. Affected file lib/silccrypt/pkcs1.c.
4116
4117 Sat Feb 16 13:44:24 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4118
4119         * Rewrote the notify handling in Irssi SILC client to not call
4120           the events as signals.  Fixes problems with Perl support.
4121           Affected files irssi/src/silc/core/client_ops.c, silc-channels.c.
4122
4123         * Send the auto-nicking NICK command in client library with
4124           little timeout after connecting.  The affected file is
4125           lib/silcclient/client.c.
4126
4127         * Added following new config file settings:
4128           channel_rekey_secs, key_exchange_rekey, key_exchange_pfs,
4129           key_exchange_timeout, conn_auth_timeout, connections_max,
4130           links_max.
4131
4132           Implemented all the new config settings handling in the server.
4133
4134           Optimized the use of SKE Mutual flag usage.  Use it only
4135           if connection authentication protocol is not based in public
4136           key authentication.
4137
4138           Renamed all SilcServerConfigSection* to SilcServerConfig*
4139           to have a bit shorter names.
4140
4141           Affected files silcd/serverconfig.[ch], server.[ch], and
4142           protocol.[ch].
4143
4144 Sat Feb 16 02:46:43 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
4145
4146         * Cleaned up the listening sockets code, preparing for the rehash
4147           support.  Affected file is silcd/server.c.
4148
4149         * Fixed some output messages.  Affected files are silcd/silcd.c,
4150           and silcd/server.c.
4151
4152 Fri Feb 15 19:10:20 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4153
4154         * Create lib/doc/silcrng_intro.html document as introduction
4155           to SILC RNG.  ROBOdoc documented lib/silccrypt/silcrng.h.
4156
4157 Fri Feb 15 13:23:03 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
4158
4159         * Fixes to the silcd config template.  Affected file is
4160           doc/example_silcd.conf.in.
4161
4162         * Removed type casts from silc_calloc(), conforming to the
4163           CodingStyle.  Affected file is lib/silcutil/silcconfig.c.
4164
4165         * Removed param_name member from client, server, and router
4166           section structs, now identifying the param directly.
4167
4168           Added CONFIG_FREE_AUTH macro in config file parsing.
4169
4170           Affected files are silcd/serverconfig.[ch].
4171
4172 Fri Feb 15 12:24:08 EET 2002  Timo Sirainen <tss@iki.fi>
4173
4174         * Fixed command line parameter handling. All SILC initialization
4175           is now done in silc_core_init() which also fixes autoconnecting
4176           to servers.
4177
4178           Affected files irssi/src/silc/core/silc-core.c,
4179           irssi/src/fe-text/silc.c.
4180
4181 Thu Feb 14 22:03:58 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4182
4183         * Added new configuration options and blocks:
4184           keepalive_secs, reconnect_count, reconnect_interval,
4185           reconnect_interval_max, reconnect_keep_trying and
4186           require_reverser_lookup.  Added ConnectionParam block, and
4187           implemented the connection parameters when connecting as
4188           initiator and when accepting connections as responder.
4189
4190           Added CONFIG_IS_DOUBLE macro in config file parsing, to check
4191           whether given configuration value has been given already.
4192
4193           Affected files silcd/serverconfig.[c], server.[c].
4194
4195         * Splitted the doc/example_silcd.conf.in.  Separated the crypto
4196           algorithm parts and created new file silcalgs.conf, that
4197           is now included from the example_silcd.conf.in.
4198
4199         * Optimized the silc_server_connect_to_router_second to take
4200           the connection configuration object from the SilcServerConnection
4201           object instead of finding it during the connecting phase.
4202           Added the configuration object to SilcServerConnection struct.
4203           Affected files silcd/server_internal.h, server.c.
4204
4205 Thu Feb 14 16:02:26 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4206
4207         * Add the client on channel after it was resolved at the
4208           channel message receiving, and it was not already on the
4209           channel.  Affected file lib/silcclient/client_channel.c.
4210
4211 Wed Feb 13 23:16:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4212
4213         * Fixed the public key authentication to allocate always the
4214           destination signature buffer instead of using static buffer.
4215           Affected file silcd/protocol.c.
4216
4217 Wed Feb 13 20:51:13 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4218
4219         * Unified the serverconfig.[ch]'s helper function interface.
4220           Affected file silcd/serverconfig.[ch].
4221
4222         * Removed doc/example_silc.conf.in since it is redundant.
4223           The make install will now install irssi/silc.conf file.
4224
4225         * Added new Passphrase and Publickey authentication methods to
4226           config file, allowing both public key and passphrase based
4227           authentication to be set at the same time.
4228
4229           Added `prefer_passphrase_auth' setting in config file which
4230           can be used to set to prefer passwd auth if both passwd and
4231           public key is set.  If not set, public key is preferred.
4232           This has effect only when being initiator (responder will try
4233           both anyway).
4234
4235           Added support for authentication with passphrase and public key
4236           at the same time.  The passphrase is tried first always since
4237           it is faster to check.
4238
4239           Affected file silcd/serverconfig.[ch], server.c, protocol.[ch].
4240
4241 Wed Feb 13 12:46:25 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
4242
4243         * Merged the new SILC Config library, with the server parsing
4244           support.  Read the header file silcconfig.h or the toolkit
4245           documentation for the news.  Affected files are
4246           doc/example_silcd.conf.in lib/silcutil/silcconfig.[ch]
4247           silcd/command.c silcd/packet_receive.c silcd/packet_send.c
4248           silcd/protocol.c silcd/server.c silcd/server_backup.c
4249           silcd/serverconfig.[ch] silcd/silcd.c.
4250
4251         * Fixed some silclog documentation.  Affected file is
4252           lib/silcutil/silclog.h.
4253
4254 Sun Feb 10 18:11:30 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4255
4256         * The silc_cipher_register, silc_hash_register and
4257           silc_hmac_register now checks if the object to be registered
4258           is registered already.  Affected files are
4259           lib/silccrypt/silccipher.c, silchash.c and silchmac.c.
4260
4261 Sun Feb 10 15:48:38 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4262
4263         * Merged new irssi from irssi.org's CVS, the version 0.7.99.
4264
4265 Sat Feb  9 14:54:33 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4266
4267         * Allow zero length channel messages inside the Channel Message
4268           Payload.  Affected file lib/silccore/silcchannel.c.
4269
4270         * Fixed scripts/silcdoc/silcdoc to support all kinds of filenames
4271           as header filenames.
4272
4273         * Removed lib/silcclient/README and created HTML file
4274           lib/silcclient/silcclient_using.html, which is now included
4275           as part of Toolkit documentation.
4276
4277 Thu Feb  7 10:12:25 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4278
4279         * Fixed CUMODE_CHANGE notify handling to change the mode of
4280           correct client.  Affected file lib/silcclient/client_notify.c.
4281
4282         * Make silc_rng_alloc fail if it cannot allocate the sha1
4283           hash algorithm.  Affected file lib/silccrypt/silcrng.c.
4284
4285 Sun Feb  3 17:20:52 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4286
4287         * Fixed the file transfer's key agreement payload to include
4288           zero port also if the hostname is NULL because it could not
4289           be bound.
4290
4291           Call file transfer monitor callback now also if error occurs
4292           during key agreement protocol.
4293
4294           Changed the silc_client_file_send interface to return the
4295           SilcClientFileError instead of session id.  The session ID
4296           is returned into pointer provided as argument.
4297
4298           Check that the file exists locally before sending the
4299           file transfer request at all.
4300
4301           Affected file lib/silcclient/client_ftp.c, silcapi.h.
4302
4303         * Added SILC_CLIENT_FILE_KEY_AGREEMENT_FAILED file transfer
4304           error than can occur while key agreement protocol.  Affected
4305           file lib/silcclient/silcapi.h.
4306
4307         * Fixed the event_mode CMODE handler to not crash when mode
4308           is changed and +k mode is set in the channel.  Affected file
4309           irssi/src/silc/core/silc-channels.c.
4310
4311         * Fixed SILC_LOG_ERROR to give out Error and not Warning, and
4312           SILC_LOG_WARNING to give out Warning and not Error.  Affected
4313           file lib/silcutil/silclog.c.
4314
4315         * Fixed the channel message payload decryption in the function
4316           silc_channel_message_payload_decrypt to not modify the original
4317           buffer before it is verified that the message decrypted
4318           correctly.  Otherwise, next time it is called with correct
4319           channel key it won't encrypt since the payload is corrupted.
4320           Affected file lib/silccore/silcchannel.c.
4321
4322 Sun Feb  3 11:46:12 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4323
4324         * Do not constantly resize the window.  A fix patch by cras.
4325           Affected file irssi/src/fe-text/screen.c.
4326
4327 Sat Feb  2 16:54:18 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4328
4329         * Applied IPv6 fix patch from Jun-ichiro itojun Hagino.
4330           Affected file lib/silcutil/silcnet.c.
4331
4332 Fri Feb  1 22:33:11 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4333
4334         * Fixed a bug in hash table internal routine for traversing
4335           the table with foreach callback.  The current entry may
4336           become invalid in the callback but it was referenced after
4337           the callback returned.
4338
4339           Do not allow auto rehashing of hash table during the
4340           silc_hash_table_foreach operation, for same reasons as it is
4341           not allowed for SilcHashTableList.  Affected files are
4342           lib/silcutil/silchashtable.[ch].
4343
4344 Fri Feb  1 14:55:00 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4345
4346         * Defined DLLAPI into silcincludes.h and silcwin32.h for
4347           Win32 DLL.  extern's in header files are now declared with
4348           DLLAPI.
4349
4350 Thu Jan 31 23:34:33 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4351
4352         * Fixed private message handling.  It used some old code that
4353           caused the client to crash.  Affecte file is
4354           lib/silcclient/client_prvmsg.c.
4355
4356 Thu Jan 31 19:06:22 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4357
4358         * Added function silc_client_add_channel,
4359           silc_client_replace_channel_id, and removed functions
4360           silc_client_new_channel_id and silc_idlist_get_channel_by_id
4361           from client library.
4362
4363         * Added cross reference of the joined channels to the
4364           SilcClientEntry, and changed the SilcChannelEntry's
4365           users list to SilcHashTable.  The affected files are
4366           lib/silcclient/idlist.[ch].
4367
4368         * Fixed a bug in hash table tarversing.  While the hash table
4369           is traversed with SilcHashTableList the table must not be
4370           rehashed.  It is now guaranteed that auto rehashable tables
4371           are not rehashed while tarversing the list.  Also defined that
4372           silc_hash_table_rehash must not be called while tarversing
4373           the table.  Added function silc_hash_table_list_reset that must
4374           be called after the tarversing is over.  The affected files are
4375           lib/silcutil/silchashtable.[ch].
4376
4377         * Changed all hash table traversing to call the new
4378           silc_hash_table_list_reset in server and in client library.
4379
4380         * Added function silc_client_on_channel to return the
4381           SilcChannelUser entry if the specified client entry is joined
4382           on the specified channel.  This is exported to application as
4383           well.  Affected files lib/silcclient/client_channel.c, silcapi.h.
4384
4385 Wed Jan 30 19:14:31 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4386
4387         * Fixed founder regaining problem with JOIN command on normal
4388           server.  The notify for mode change must be sent always and
4389           not only if !cmd->pending.  Affected file silcd/command.c.
4390
4391         * Fixed the WHOWAS command's reply sending to support the
4392           lists correctly.  Affected file silcd/command.c.
4393
4394 Wed Jan 30 11:11:47 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4395
4396         * When sending JOIN command to router for processing the
4397           sender's old command identifier was not saved back to the
4398           sender's command context, fixed now.  The affected file is
4399           silcd/command.c.
4400
4401         * Create the key in JOIN command of the router did not return
4402           the channel key, added check for this.  Affected file is
4403           silcd/command.c.
4404
4405         * Fixed a channel ID update bug in JOIN command reply.  Do
4406           not directly upgrade the ID but call the function
4407           silc_idlist_replace_channel_id if the ID was changed.
4408           Affected file silcd/command_reply.c.
4409
4410         * Fixed memory leaks from command calling if it would fail.
4411           Affected file silcd/command.c.
4412
4413 Tue Jan 29 19:49:31 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4414
4415         * Applied patches from cras:
4416
4417           Memory leak fixes around libaries, irssi window resize fix,
4418           new silclist.h and silcdlist.h, all extern inline changed to
4419           static inline.
4420
4421         * Removed dotconf from lib/dotconf, not needed anymore.
4422
4423         * Removed TRQ from lib/trq, not needed anymore.
4424
4425         * Do more frequent heartbeats (5 minutes instead of 10 minutes)
4426           with server connections.  Later this will be configurable
4427           in config file after new config file is done.  Affected file
4428           silcd/server.c.
4429
4430 Tue Jan 29 10:35:03 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4431
4432         * Fixed a crash in server related to channel announcements.
4433           Affected file silcd/server.c.
4434
4435 Mon Jan 28 17:49:42 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4436
4437         * Fixed memory leaks in silc_server_create_new_channel*
4438           functions.  Affected file silcd/server.c.
4439
4440         * Fixed the CHANNEL_CHANGE notify to re-announce the channel
4441           which ID was changed.  This way the router will send the
4442           user list for the channel again, and server won't be in
4443           desync in some rare circumstances.  Affected file is
4444           silcd/packet_receive.c.
4445
4446 Sun Jan 27 21:04:19 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4447
4448         * Check for NULL socket pointer in the function
4449           silc_server_packet_send_to_channel_real.  Affected file
4450           silcd/packet_send.c.
4451
4452         * Fixed the BAN notify handling to correctly remove ban
4453           list.  Affected file silcd/packet_receive.c.
4454
4455 Sat Jan 26 23:01:03 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4456
4457         * Fixed some header addition to Toolkit distribution in
4458           lib/silcutil/Makefile.am and lib/trq/Makefile.am.
4459
4460         * Added lib/silcclient/client_ops_example.h as an template
4461           file for application programmers to quickly start using
4462           the SilcClientOperation functions in their application.
4463           Updated the lib/silcclient/README as well to tell about this
4464           nice file made available.
4465
4466 Sat Jan 26 10:45:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4467
4468         * Call silc_server_remove_from_channels when removing client
4469           entry when NO_SUCH_CLIENT_ID was received.  Affected file
4470           is silcd/command_reply.c.
4471
4472 Fri Jan 25 19:12:36 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4473
4474         * Added server & router operator statistics updating.  Affected
4475           file silcd/packet_receive.c and silcd/command.c.
4476
4477         * Fixed the SERVER_SIGNOFF notify handling on normal server
4478           not to save the history information for clients.  Same was
4479           fixed earlier in remove_clients_by_server function, but not
4480           here.  Affected file silcd/packet_receive.c.
4481
4482         * Raised the default connection-retry count from 4 to 7 in
4483           server.  Affected file silcd/server.h.
4484
4485         * Cancel any possible reconnect timeouts when we start the
4486           key exchange.  Affected file silcd/server.c.
4487
4488         * Do not reconnect on connection failure when SCONNECT was
4489           given.  Affected files silcd/server.[ch].
4490
4491 Tue Jan 22 18:19:36 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4492
4493         * Removed assert()'s from the lib/silcclient/client_keyagr.c.
4494
4495         * Fixed the NICK command to always give the unformatted
4496           nickname to the one giving the NICK command.  If unformatted
4497           nickname is cached already it will be formatted and the
4498           local entry will always get the unformatted nickname.
4499           Affected file lib/silcclient/idlist.c.
4500
4501         * Fixed some double frees from client library commands.
4502           Affected file is lib/silcclient/command.c.
4503
4504         * Fixed CUMODE command in server to assure that no one can
4505           change founder's mode than the founder itself, there was a
4506           little bug.  Affected file silcd/command.c.
4507
4508 Mon Jan 21 19:07:53 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4509
4510         * Removed the SilcClientCommandDestructor from the client
4511           libary, it is not needed anymore.  Affected files are
4512           lib/silcclient/silcapi.h, command[_reply].[ch],
4513           client_notify, idlist.c.
4514
4515         * Fixed GETKEY command to first resolve client, and then
4516           resolve the server only if the client was not found, instead
4517           of resolving both at the same time.  Affected file is
4518           lib/silcclient/command.c.
4519
4520         * Added silc_client_start_key_exchange_cb and lookup the
4521           remote hostname and IP address before starting the key
4522           exchange with server.  The affected file is
4523           lib/silcclient/client.c.
4524
4525         * The server's public key is now saved using the IP address
4526           of the server and not the servername for the filename.
4527           The hostname public key filename is checked as an fall back
4528           method if the IP address based filename is not found.
4529
4530           Fixed the GETKEY command to save the fetched server key
4531           in correct filename.
4532
4533           Print the remote server's hostname now when new key is
4534           received during connection process.  Affected file is
4535           irssi/src/silc/core/client_ops.c.
4536
4537         * Return always our own public key to the client if it asks
4538           for it with GETKEY command.  Affected file silcd/command.c.
4539
4540         * Removed the use_auto_addr variable from default config
4541           file since it was in wrong section.  Affected file is
4542           irssi/src/config.
4543
4544         * Fixed TOPIC_CHANGE notification to not route it when it
4545           was sent using silc_server_send_notify_to_channel function.
4546           Affected file silcd/command.c.
4547
4548         * Fixed silc_server_send_notify_kicked to send the kicker's
4549           Client ID also, it was missing.  Affected files are
4550           silcd/command.c, silcd/packet_send.[ch].
4551
4552 Thu Jan 17 18:59:11 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4553
4554         * Do not save client history information in SERVER_SIGNOFF.
4555           Fixes the bug in normal server that it does not detect
4556           the client becoming valid after the server becomes back
4557           online.  Affected file silcd/server_util.c.
4558
4559         * Added `sock_error' field  into the SilcSocketConnection
4560           context.  When error occurs during socket operation (read
4561           or write) the error is saved.  Added also new function
4562           silc_socket_get_error to return human readable socket error
4563           message.  Affected files are lib/silcutil/silcsockconn.[ch],
4564           lib/silcutil/unix/silcunixsockconn.c, and
4565           lib/silcutil/win32/silcwin32sockconn.c.
4566
4567         * The server now prints the socket error message in the
4568           signoff for client.  Affected file silcd/server.c.
4569
4570         * Fixed the `created' channel information sending from router
4571           to server in JOIN command.  Checks now whether the channel
4572           really was created or not and set it according that.
4573
4574           Fixed the JOIN command to use the client entry's current
4575           ID during the joining procedure instead of the one it sent
4576           in the command (it is checked though), since it can change
4577           between the packet processing and command processing, and
4578           would just case unnecessary pain in the client end.  Affected
4579           file silcd/command.c.
4580
4581         * Fixed a channel key payload sending to use correct channel
4582           ID when the server was forced to change the channel's ID by
4583           router.  Router sent the key payload with the old Channel ID.
4584           Affected file silcd/packet_receive.c.
4585
4586 Wed Jan 16 22:26:30 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4587
4588         * Call silc_server_save_channel_key only if the key payload
4589           was provided in the JOIN command's command reply.  Affected
4590           file silcd/command_reply.c.
4591
4592 Tue Jan 15 18:49:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4593
4594         * Fixed silc_mp_sizeinbase to return the value correctly with
4595           MPI.  Affected file lib/silcmath/mp_mpi.c.
4596
4597         * Fixed the stop_server signal to correctly stop the scheduler
4598           and gracefully stop the server when SIGTERM or SIGINT signals
4599           are received.  Affected file silcd/silcd.c.
4600
4601 Mon Jan  7 23:38:19 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
4602
4603         * Simple handling of TERM and HUP signals. Also added some log
4604           flushing call around.  Affected file is
4605           silcd/silcd.c.
4606
4607         * Fixed small bugs in silclog.c. Now buffering output will take
4608           effect after 10 seconds since startup: This will ensure that
4609           no important startup messages are lost. Also output redirection
4610           will preserve original format ([Date] [Type] message).
4611           Affected file is lib/silcutil/silclog.c.
4612
4613         * Added two options to the config file, in the logging section:
4614           quicklogs:<yes/no>: and flushdelay:<seconds>:.  Affected files
4615           lib/silcutil/silclog.[ch], silcd/serverconfig.[ch].
4616
4617 Sun Jan  6 12:49:40 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4618
4619         * Do not print the warning about log files not being initialized
4620           more than once to avoid excess logging.  Affected file is
4621           lib/silcutil/silclog.c.
4622
4623         * Fixed the SIM compilation in lib/silcsim/Makefile.am.  Fixed
4624           the SIM copying in make install in Makefile.am.pre.
4625
4626 Sun Jan  6 01:10:21 CET 2001  Johnny Mnemonic <johnny@themnemonic.org>
4627
4628         * Rewritten silclog APIs. Globally interesting changes follows:
4629           silc_log_set_files() changed to silc_log_set_file().
4630           silc_log_set_callbacks() changed to silc_log_set_callback().
4631           ROBOdoc documented silclog header file.
4632           SilcLogCb now returns bool to wether inihibit the default
4633           handler or not (to keep the old behaviour return always TRUE).
4634           The new APIs should also fix the problem of the
4635           silcd_error.log file that was written in the current directory.
4636
4637           New features:
4638           Log files streams will remain opened after silc_log_set_file()
4639           call, means less CPU usage notably on high traffic servers.
4640           File streams are now full buffered, and flushed to the disk
4641           every 5 minutes, lesses HD activity and CPU usage.
4642           Messages can be redirected, allowing admins to configure
4643           one single logfile for all server messages.
4644           the silc_log_quick global variable to activate fast-logging.
4645           Affected files lib/silcutil/silclog.[ch]
4646
4647         * Changed some code to conform new silclog APIs. Affected
4648           files are doc/example_silcd.conf.in, silcd/server.c
4649           irssi/src/silc/core/silc-core.c, silcd/serverconfig.[ch],
4650           silcd/silcd.c.
4651
4652         * Fixed a memory leak that could occur in some situations.
4653           Affected file silcd/serverconfig.c.
4654
4655 Sat Jan  5 13:37:29 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4656
4657         * Added the silc_client_del_client to remove the client from
4658           all channels as well.  Affected file lib/silcclient/idlist.c.
4659
4660         * Fixed the client library to correctly remove the client
4661           from all channels when the client entry is being destroyed.
4662           Affected file lib/silcclient/client_notify.c, command.c.
4663
4664         * Added auto-nicking support to the client library.  If the
4665           applicatio now sets client->nickname it will be sent to the
4666           server after connecting by the library.  This way for example
4667           SILCNICK (or IRCNICK) environment variables will have effect
4668           and always change the nickname automatically to whatever
4669           it is wanted.  Affected file lib/silcclient/client.[ch].
4670
4671         * Renamed silc_server_command_bad_chars to the
4672           silc_server_name_bad_chars and moved it to the
4673           silcd/server_util.[ch].  Added also new function
4674           silc_server_name_modify_bad to return nickname that
4675           includes bad characters as new nickname without those
4676           bad characters.  This check and modify is now used in
4677           silc_server_new_client when the username is initially set
4678           as nickname, so it must be checked to be valid nickname.
4679           Affected file silcd/packet_receive.c.
4680
4681         * The nickname length is now taken from the packet for real
4682           and not trusted to strlen() since it clearly can return
4683           wrong length for nickname including bad characters.  This
4684           also applies to channel names.  Affected file silcd/command.c.
4685
4686         * Removed the lib/silcsilm/modules directory.  Modules are now
4687           compiled into the lib/silcsim.  Fixed the copying of the
4688           modules to follow symbolic links in Makefile.am.pre.
4689
4690 Wed Jan  2 18:56:21 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4691
4692         * Fixed silc_string_regexify list creation.  Fixes bugs with
4693           BAN and INVITE commands in server.  The affected file is
4694           lib/silcutil/unix/silcunixutil.c.
4695
4696 Sun Dec 30 13:41:34 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4697
4698         * Removed the command destructor entirely from the server's
4699           command and command reply routines.  It is not needed, and
4700           its usage was buggy and caused crashes.  Affected files are
4701           silcd/command[_reply].[ch].
4702
4703 Fri Dec 28 12:43:22 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4704
4705         * Cancel protocol and NULL sock->protocol if timeout
4706           occurred during protocol.  Affected file silcd/server.c.
4707
4708         * Cancel protocol timeouts always before calling the final
4709           callback, to assure that after final callback is called
4710           no other state will be called for the protocol anymore.
4711           Affected file silcd/protocol.c.
4712
4713         * Print error log if incoming connection configuration could
4714           not be found.  Affected file silcd/server.c.
4715
4716         * Fixed JOIN command to correctly save the founder mode
4717           to the client on normal SILC server, when the channel
4718           was created by the router.  Affected file silcd/command.c.
4719
4720         * Fixed LIST command (hopefully) to send correct reply
4721           packets.  Affected file silcd/command.c.
4722
4723 Thu Dec 20 16:14:52 CET 2001  Pekka Riikonen <priikone@silcnet.org>
4724
4725         * The silc_packet_receive_process now returns FALSE if the
4726           read data was invalid packet, and TRUE if it was ok.
4727
4728           The server now checks that if unauthenticated connection
4729           sends data and its processing fails the server will close
4730           the connection since it could be a malicious flooder.
4731
4732           Affected files lib/silccore/silcpacket.[ch], silcd/server.c.
4733
4734 Wed Dec 19 21:31:25 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4735
4736         * Make sure the warning about error opening a log file is
4737           printed only once and not everytime it fails (produces
4738           too much useless log).  Affected file lib/silcutil/silclog.c.
4739
4740 Wed Dec 19 18:21:51 CET 2001  Johnny Mnemonic <johnny@themnemonic.org>
4741
4742         * Made the silc_server_daemonise() function more readable.
4743           Affected file silcd/server.c.
4744
4745         * Pid file is now optional, the user may comment it out from
4746           the config file. Removed define SILC_SERVER_PID_FILE, we
4747           don't need a default any longer.  Affected file
4748           configure.in.pre, lib/Makefile.am.pre.
4749
4750         * Make some use of the pid file. The server now dies at startup
4751           if it detects a valid pid file on his path. The server would
4752           die anyway in this circumstance, because of the bind() failure.
4753           Affected file silcd/silcd.c.
4754
4755         * No longer compiling lib/dotconf.
4756
4757 Mon Dec 17 18:24:27 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4758
4759         * Fixed JOIN command parsing not to crash.  Affected file
4760           lib/silcclient/command.c.
4761
4762         * Fied the NICK_CHANGE notify to add the new client entry
4763           even it is resolved.  This removes an <[unknown]> nick
4764           thingy bug in the client.  Affected file is
4765           lib/silcclient/client_notify.c.
4766
4767         * Do not try to allocate 0 bytes (efence does not like it)
4768           in lib/silccore/silccomand.c when encoding payload.
4769
4770         * Do not take IRCNICK as nickname in Irssi SILC client since
4771           it is not possible to set nickname before hand connecting
4772           the server (TODO has an entry about adding auto-nicking
4773           support).
4774
4775         * Changed the silc_server_command_pending to check whether
4776           there already exists an pending entry with the specified
4777           command, command identifier and pending callback.  This is
4778           to fix IDENTIFY and WHOIS related crashes that may register
4779           multiple pending commands with same identifier.  Affected
4780           file silcd/command.c.
4781
4782         * Fixed the server to reconnect to the router even if it
4783           was already reconnecting and EOF was received.  This to
4784           fix a possibility that the server wouldn't ever try to
4785           auto-reconnect to the router.  Affected file silcd/server.c.
4786
4787 Sat Dec 15 20:31:50 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4788
4789         * Fixed the server's password authentication to use the
4790           length of the locally saved password, and not the one
4791           sent in the packet.  Affected file silcd/protocol.c.
4792
4793         * Fixed same password authentication problem in the
4794           Authentication Payload handling routines in
4795           lib/silccore/silcauth.c.
4796
4797         * Yet another password authentication problem fixed with
4798           channel password handling in silcd/command.c.
4799
4800 Mon Dec 10 19:57:40 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4801
4802         * If first character of string in silc_parse_userfqdn is '@'
4803           then do not parse it.  Affected file is
4804           lib/silcutil/silcutil.c.
4805
4806 Sun Dec  9 22:18:50 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4807
4808         * Fixed minor bug in IDENTIFY command reply sending, which
4809           caused various weird problems during JOIN when it was
4810           resolving names for users.  Affected file silcd/command.c.
4811
4812 Sun Dec  9 19:18:41 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4813
4814         * Fixed the IDENTIFY command reply sending to chech better valid
4815           clients.  It was possible to send incomplete list of replies.
4816           Affected file silcd/command.c.
4817
4818 Sat Dec  8 15:58:31 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4819
4820         * Added silc_client_command[s]_[un]register functions now to
4821           dynamically register the commands in client library.  Removed
4822           the static table of commands.  This allows the client library
4823           to call commands without causing the application to know about
4824           what commands library has called.
4825
4826           Removed the INFO command reply kludge to detect when the command
4827           was called by library.  Now library use its own command reply
4828           function for INFO command.
4829
4830           Added function silc_client_command_call to call a command.
4831           Application can use it to call command, not access the structure
4832           directly.
4833
4834           Now all commands that are sent by the client library (not
4835           explicitly sent by application) use own command reply functions.
4836
4837           Affected files around lib/silcclient/ and in
4838           irssi/src/silc/core/.
4839
4840         * Fixed the WHOIS command reply sending to chech better valid
4841           clients.  It was possible to send incomplete list of replies.
4842
4843           Fixed the WHOIS and IDENTIFY to send the request to router
4844           if normal server did not do it and did not find any results.
4845
4846           Affected file silcd/command.c.
4847
4848 Thu Dec  6 17:21:06 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4849
4850         * Moved the internal data from SilcClient context into its
4851           own file, not accesible to application.  Affected files
4852           lib/silcclient/client.h and lib/silcclient/client_internal.h,
4853           and other files in client library.
4854
4855 Thu Dec  6 10:37:55 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4856
4857         * Added doc/examples installation target in Makefile.am.pre.
4858           A patch by salo.
4859
4860 Tue Dec  4 17:43:19 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4861
4862         * If NO_SUCH_CLIENT_ID notify is received for WHOIS or IDENTIFY
4863           commands the found client entry will be removed from the
4864           cache, after notifying application about the error.  Affected
4865           file lib/silcclient/command_reply.c.
4866
4867         * Changed the /MSG to check for exact nickname user gave, and
4868           not let `nick' match `nick@host' if it is only one found.  Now,
4869           user must type the exact nickname (like nick@host2) even if
4870           there are no more than one same nicks found.  This is to avoid
4871           a possibility of sending nickname to wrong nickname since
4872           `nick' could match `nick@host'.  Affected file is
4873           irssi/src/core/silc-servers.c.
4874
4875 Mon Dec  3 18:49:45 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4876
4877         * Do not print "you are now server operator" or similar when
4878           giving /away command.  Affected files are
4879           irssi/src/silc/core/client_ops.c, silc-servers.h.
4880
4881         * Made the silc_server_command_pending_error_check to send
4882           the same command reply payload it received back to the
4883           original sender of the command.  This way all arguments
4884           that was received by the server will be received by the
4885           client too.  Affected file silcd/command.c.
4886
4887         * Added the silc_idcache_add to return the created cache entry
4888           to a pointer.  Affected file lib/silccore/silcidcache.[ch].
4889
4890         * Add global clients to expire if they are not on any channel.
4891           This is because normal server will never know if they signoff
4892           if they are not on any channel.  The cache expiry will take
4893           case of these entries.  This is done by normal servers only.
4894           The affected files are silcd/command_reply.c,
4895           silcd/idlist.[ch], silcd/server and silcd/packet_receive.c.
4896
4897         * If server receives invalid ID notification for WHOIS or
4898           IDENTIFY and the ID exists in the lists, it is removed.
4899           Affected file silcd/command_reply.c.
4900
4901         * If NO_SUCH_CLIENT_ID is received for WHOIS or IDENTIFY command
4902           in client then client entry that it matches is searched and
4903           the nickname is printed on the screen for user.  Affected
4904           file irssi/src/silc/core/client_ops.c.
4905
4906 Mon Dec  3 11:56:59 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4907
4908         * Use cache entry expire time in the LIST command reply to
4909           purge old entries from the cache after the LIST command
4910           reply has been received.  This way we don't have non-existent
4911           entries in the cache for too long.  Affected file is
4912           silcd/command_reply.c.
4913
4914 Sun Dec  2 23:29:07 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4915
4916         * If we are normal server, and we've not resolved client info
4917           in WHOIS or IDENTIFY from router, and it is global client,
4918           we'll check whether it is on some channel.  If it is not
4919           then we cannot be sure about its validity and will resolve it
4920           from router.  Fixes a bug in WHOIS and IDENTIFY.  Affected
4921           file silcd/command.c.
4922
4923         * Search channel by name (if possible) rather than by ID
4924           in IDENTIFY command's command reply.  Affected file is
4925           silcd/command_reply.c.
4926
4927 Sun Dec  2 13:48:46 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4928
4929         * Distribute to the channel passphrase in CMODE_CHANGE notify.
4930           Updated specs and implemented it.  Affected file silcd/command.c,
4931           silcd/packet_send.c and silcd/packet_receive.c.
4932
4933         * Implemented the <founder auth> payload handling in the JOIN
4934           command.  If provided all conditions for channel joining
4935           except requirement to provide correct passphrase can be
4936           overrided by the channel founder.  Updated the protocol specs.
4937           Affected file silcd/command.c.
4938
4939           Added support for founder auth in JOIN command in client
4940           library.  Fixed the parsing of the JOIN command now to support
4941           all options as they should be.  The affected file is
4942           lib/silcclient/command.c.
4943
4944         * Optimized the WHOIS and IDENTIFY commands to send the request
4945           to router only if it includes nicknames or other names.  If
4946           they include only IDs then check the local cache first before
4947           routing.  Affected file is silcd/command.c.
4948
4949         * Added channels topic announcements.  Affected file is
4950           silcd/packet_receive.c and silcd/server.c.
4951
4952         * Fixed the silc_server_send_notify_topic_set to really destine
4953           the packet to channel.  Affected file silcd/packet_send.c.
4954
4955         * Fixed a crash in CHANNEL_CHANGE notify handling in the client
4956           library.  Affected file lib/silcclient/client_notify.c.
4957
4958         * Added UMODE announcements.  Affected file silcd/server.c.
4959
4960 Sat Dec  1 12:52:39 EET 2001  Pekka Riikonen <priikone@silcnet.org>
4961
4962         * Memory leak fixes in:
4963
4964           lib/silcutil/silcsockconn.c
4965           lib/silcske/silcske.c
4966           lib/silcske/groups.c
4967           lib/silccrypt/rsa.c
4968           lib/silccrypt/silcpkcs.c
4969           lib/silccore/silccommand.c
4970           lib/silccore/silcidcache.c
4971           silcd/idlist.c
4972           silcd/packet_send.c
4973           silcd/command.c
4974
4975         * ROBOdoc documented the lib/silcske/groups.h file and a
4976           bit changed the interface for better.
4977
4978 Thu Nov 29 22:12:50 EET 2001  Pekka Riikonen <priikone@silcnet.org>'
4979
4980         * Update the client entry context in the ID cache after
4981           nick change.  Affected file lib/silcclient/command.c.
4982           Fixes the CUMODE command when regaining founder privileges,
4983           and a little WHOIS problem.
4984
4985         * Fixed silc_net_gethostbyname to correctly call the
4986           inet_ntop.  Affected file lib/silcutil/silcnet.c.
4987
4988 Thu Nov 29 19:31:23 EET 2001  Pekka Riikonen <priikone@silcnet.org>'
4989
4990         * Added IPv6 support checking to the configure.in.pre, added
4991           also --enable-ipv6 option to override the check.  Affected
4992           file configure.in.pre.
4993
4994         * The silc_thread_create now calls the start function
4995           directly if threads support is not compiled in.  Removes
4996           ugly #ifdef's from generic code.  Affected files are
4997           lib/silcutil/unix/silcunixthread, win32/silcwin32thread.c.
4998
4999         * Added silc_net_gethostby[name/addr]_async to asynchronously
5000           resolve.  Affected files are lib/silcutil/silcnet.[ch].
5001
5002         * Added support for rendering IPv6 based server, client and
5003           channel IDs.  Affected file lib/silcutil/silcutil.c.
5004
5005         * Added support for creating IPv6 based server IDs.  Affected
5006           file is silcd/serverid.c.
5007
5008 Wed Nov 28 23:46:09 EET 2001  Pekka Riikonen <priikone@silcnet.org>'
5009
5010         * Added silc_net_gethostby[addr/name] into the
5011           lib/silcutil/silcnet.[ch].  Added IPv6 support to Unix network
5012           routines.  Added silc_net_is_ip[4/6].  Affected file is
5013           lib/silcutil/unix/silcunixnet.c.  All routines that take
5014           address as argument now supports both IPv4 and IPv6 addresses.
5015
5016 Mon Nov 26 18:09:48 EET 2001  Pekka Riikonen <priikone@silcnet.org>'
5017
5018         * Fixed LIST command reply sending in server.  Affected file
5019           silcd/command.c.
5020
5021         * Server now sends the kicker's client ID in the KICK notify
5022           to the kicked client.  Affected file silcd/command.c.
5023
5024         * The client library now parses the kickers client ID and
5025           UI displays it.  Affected files lib/silcclient/client_notify.c
5026           and irssi/src/silc/core/silc-channels.c, module-formats.c.
5027
5028         * Made all payload parsing function prototypes consistent.
5029           They all take now const unsigned char * and uint32 pair as
5030           the payload data instead of SilcBuffer.  Changes all around
5031           the source tree.  Other unsigned char* -> const unsigned char*
5032           changes around the tree as well.
5033
5034         * Optimized SFTP client and server packet sending not to
5035           allocate new buffer for each packet but to recycle the
5036           first allocated buffer.  Affected files are
5037           lib/silcsftp/sftp_client.c, sftp_server.c, sftp_util.[ch].
5038
5039         * Optimized the SFTP client to use SilcList instead of
5040           SilcDList for requests, because it is faster.  Affected file
5041           is lib/silcsftp/sftp_client.c.
5042
5043         * Moved the ID Payload routines from lib/silccore/silcpayload.[ch]
5044           into lib/silccore/silcid.[ch].
5045
5046           Renamed silcpayload.[ch] into silcargument.[ch].
5047
5048 Mon Nov 26 15:01:53 CET 2001  Pekka Riikonen <priikone@silcnet.org>
5049
5050         * If client entry is deleted with active key agreement
5051           session, abort the session.
5052
5053           The silc_client_abort_key_agreement now calls the completion
5054           callback with new SILC_KEY_AGREEMENT_ABORTED status.
5055
5056           Affected file lib/silcclient/silcapi.h, client_keyagr.c and
5057           idlist.c.
5058
5059 Sun Nov 25 18:01:45 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5060
5061         * Don't use __restrict in older GCC's.  Affected file is
5062           lib/silcmath/mpi/mpi-priv.h.  A patch by salo.
5063
5064         * silc_net_localhost now attempts to reverse lookup the
5065           IP/hostname.  Affected file lib/silcutil/silcnet.c.
5066
5067         * Defined <founder auth> argument to the SILC_COMMAND_JOIN
5068           command.  It can be used to gain founder privileges at
5069           the same time when joining the channel.
5070
5071           Defined that the SILC_NOTIFY_TYPE_KICKED send the
5072           kicker's client ID as well.  Updated protocol specs.
5073
5074           Defined that the server must send SILC_COMMAND_IDENTIFY
5075           command reply with error status to client who sent
5076           private message with invalid client ID.
5077
5078           Updated the protocol specification.
5079
5080         * Added silc_server_send_command_reply to send any
5081           command reply.  Affected file silcd/packet_send.[ch].
5082
5083         * Added silc_id_payload_encode_data to encode ID payload
5084           from raw ID data.  Affected file lib/silccore/silcpayload.[ch].
5085
5086         * The server now send IDENTIFY command reply with error
5087           status if client ID in private message is invalid.  Affected
5088           file silcd/packet_receive.c.
5089
5090         * Save the server key file with server's IP address in
5091           the filename instead of hostname.  The affected file is
5092           irssi/src/silc/core/client_ops.c.
5093
5094 Sat Nov 24 20:08:22 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5095
5096         * Typo fixes in irssi/src/fe-common/silc/module-formats.c.
5097           A patch by Sunfall.
5098
5099         * Added libtool support for compiling shared objects in
5100           lib/silcsim.  Affected file configure.in.pre and
5101           lib/silcsim/Makefile.am.  Original patch by cras.
5102
5103 Fri Nov 23 23:30:59 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5104
5105         * Pid file configuration, and server's config file fixes
5106           patch by toma.  Updated CREDITS file.
5107
5108 Sun Nov 18 01:34:41 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5109
5110         * Fixed silc_client_channel_message to not try to decrypt
5111           the message twice if it resolved the destination client
5112           information.  This could cause of dropping one channel
5113           message.  Affected file lib/silcclient/client_channel.c.
5114
5115 Wed Nov 14 23:44:56 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5116
5117         * Added silc_client_run_one into lib/silcclient/silcapi.h and
5118           lib/silcclient/client.c. This function is used when the SILC
5119           Client is run under some other scheduler, or event loop or
5120           main loop.  On GUI applications, for example this may be
5121           desired to used to run the client under the GUI application's
5122           main loop.  Typically the GUI application would register an
5123           idle task that calls this function multiple times in a second
5124           to quickly process the SILC specific data.
5125
5126 Wed Nov 14 19:16:52 CET 2001  Johnny Mnemonic <johnny@themnemonic.org>
5127
5128         * Fixed silc_server_drop() for dropping the supplementary
5129           groups as well, this could cause a security hole on some
5130           systems.
5131
5132 Wed Nov 14 16:22:25 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5133
5134         * __pid_t -> pid_t in lib/silccrypt/silcrng.c.  A patch by
5135           johnny.
5136
5137         * Write PID file after dropping privileges.  Added -F option
5138           to run server on foreground.  A patch by debolaz.
5139           Affected files silcd/server.c, silcd/silcd.c.
5140
5141         * Fixed MOTD to return the MOTD file server name.  Affected
5142           file silcd/command.c.
5143
5144         * Added INFO command reply handling to the Irssi SILC Client.
5145           Affected file irssi/src/silc/core/client_ops.c.
5146
5147 Wed Nov 14 00:18:08 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5148
5149         * Fixed the silc_idcache_list_* routines to really support
5150           the dynamic list.  Fixes a crash.  Affected file is
5151           lib/silccore/silcidcache.c.
5152
5153         * Fixed the LIST command reply to really call LIST command's
5154           pending callbacks.  Affected file silcd/command_reply.c.
5155
5156 Tue Nov 13 00:49:17 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5157
5158         * Update conn->local_entry->nickname after giving NICK
5159           command.  Affected file lib/silcclient/command.c.
5160
5161 Sun Nov 11 23:43:02 PST 2001  Brian Costello <bc@wpfr.org>
5162
5163         * Added the [pid] option to the silcd configuration file
5164
5165           Affected files: serverconfig.[ch] and silcd.c
5166
5167 Sun Nov 11 23:56:39 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5168
5169         * Save fingerprint in WHOIS command reply in server.
5170           Affected file silcd/command_reply.c.
5171
5172         * Fixed NICK commands pending callback registration.
5173           Affected file lib/silcclient/command.c.
5174
5175 Sun Nov 11 10:49:10 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5176
5177         * Use ++server->cmd_ident when sending commands in server,
5178           instead of random number.  Affected file silcd/command.c.
5179
5180         * Fixed GETKEY command reply to call actually GETKEY pending
5181           command callbacks.  Affected file silcd/command_reply.c.
5182
5183         * A bit stricter check for nicknames.  Check for same nickname
5184           in NICK command also.  Affected file silcd/command.c.
5185
5186         * Do not call INFO command everytime client ID changes, only
5187           during first connecting.  Affected file lib/silcclient/client.c.
5188
5189         * Set the new nickname only after successful command reply for
5190           NICK command is returned by server.  Affected file
5191           lib/silcclient/command.c.
5192
5193         * Remove nicknames from nicklist during server_signoff notify.
5194           Should fix /NAMES bit more.  The affected file is
5195           irssi/src/silc/core/silc-channels.c.
5196
5197         * Added `fingerprint' field to the SilcIDListData in the
5198           silcd/idlist.h to hold the fingerprint of the client's
5199           public key.
5200
5201           Send the fingerprint of the client's public key in WHOIS
5202           command reply.
5203
5204           Affected files silcd/command.c, and silcd/idlist.[ch].
5205
5206         * Added silc_fingerprint into lib/silcutil/silcutil.[ch] to
5207           create fingerprint from given data.
5208
5209         * Show the fingerprint of the client's public key in WHOIS.
5210           Affected files irssi/src/module-formats.[ch] and
5211           irssi/src/silc/core/client_ops.c.
5212
5213         * Format the multiple same nicknames also during JOIN and
5214           NICK_CHANGE notifys.  Affected file is
5215           lib/silcclient/client_notify.c.
5216
5217         * Do not print error on screen for invalid private message
5218           payload since it can come if someone is sending private
5219           messages with wrong key.  Affected file
5220           lib/silccore/silcprivate.c.
5221
5222         * Fixed multiple concurrent /PING crash.  Affected file
5223           lib/silcclient/command.c.
5224
5225         * Changed the wrong ID encoding.  All IP addresses must be
5226           in MSB first order in encoded format.  They were encoded
5227           wrong and was in LSB format.  Affected files are
5228           silcd/serverid.c, lib/silcutil/silcutil.c.
5229
5230         * Remove silc_net_addr2bin_ne from lib/silcutil/silcnet.[ch].
5231
5232         * Call the `connect' client operation through the scheduler
5233           in case of error.  Affected file lib/silcclient/client.c.
5234
5235         * Call the `failure' client operation even if the error
5236           occurred locally during a protocol.  Affected file is
5237           lib/silcclient/protocol.c.
5238
5239         * Added support of sending LIST command to router from normal
5240           server.  This way normal server can get list of all channels
5241           in the network too.  Fixed the channel list sending in the
5242           server too.  Affected files are silcd/command.c, and
5243           silcd/command_reply.[ch].
5244
5245         * Added silc_server_update_channels_by_server and
5246           silc_server_remove_channels_by_server.  They are used during
5247           disconnection of primary router and in backup router protocol.
5248           Affected file silcd/server_util.[ch], silcd/server.c and
5249           silcd/server_backup.c.
5250
5251         * Fixed channel adding to global list in IDENTIFY command
5252           reply in server.  Affected file silcd/command_reply.c.
5253
5254 Sat Nov 10 21:39:22 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5255
5256         * If the incoming packet type is REKEY or REKEY_DONE process
5257           that packet always synchronously.  Fixes yet another MAC
5258           failed error on slow (dialup) connections.  Affected file
5259           lib/silcclient/client.c and silcd/server.c.
5260
5261 Thu Nov  8 22:21:09 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5262
5263         * Call check_version SKE callback for initiator too.  Affected
5264           file lib/silcske/silcske.c.
5265
5266         * Implemented fix for security hole found in the SKE that was
5267           fixed in the specification few days back; the initiator's
5268           public key is now added to the HASH value computation.
5269           Added backwards support for the old way of doing it too, for
5270           old clients and old servers.  Affected file is
5271           lib/silcske/silcske.c.
5272
5273         * Enabled mutual authentication by default in SKE.  If initiator
5274           is not providing mutual authentication the responder will
5275           force it.  This will provide the proof of posession of the
5276           private key for responder.  The affected files are
5277           lib/silcclient/protocol.c and silcd/protocol.c.
5278
5279         * Do not cache anymore the server's public key during SKE.
5280           We do mutual authentication so the proof of posession of
5281           private key is done, and if the server is authenticated in
5282           conn auth protocol with public key we must have the public
5283           key already.  Affected file silcd/protocol.c.
5284
5285         * Added new global debug variable: silc_debug_hexdump.  If
5286           it is set to TRUE SILC_LOG_HEXDUMP will be printed.  Affected
5287           file lib/silcutil/silclog.[ch].
5288
5289         * Fixed compilation warning due to char * -> const char *.
5290           Affected files lib/silcutil/silcnet.h, and
5291           lib/silccore/silcauth.[ch].
5292
5293 Wed Nov  7 20:43:03 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5294
5295         * Fixed CMODE command when new channel key was created.  If
5296           the creation failed the old key was removed.  Next time giving
5297           same command would crash the server since the old key was
5298           freed already.  Affected file silcd/command.c.
5299
5300         * Fixed the silc_server_announce_get_channels to not crash
5301           on reconnect.  Affected file silcd/server.c.
5302
5303 Wed Nov  7 17:15:07 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5304
5305         * Added silc_log_set_debug_string function to set a regex
5306           string to match for debug output.  Only the function names,
5307           or filenames matching the given debug string is actually
5308           printed.  This way it is possible to filter out those debug
5309           strings that user is not interested in.
5310
5311           Fixed a bug in silc_string_regexify.
5312
5313           Affected files lib/silcutil/silclog.[ch], and
5314           lib/silcutil/unix/silcunixutil.c.
5315
5316         * Changed the -d options in both server and Irssi SILC client
5317           to take the debug string as argument.  Affected files
5318           silcd/silcd.c and irssi/src/silc/core/silc-core.c.
5319
5320 Tue Nov  6 21:31:54 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5321
5322         * Added silc_hash_babbleprint to create a Bubble Babble
5323           Encoded fingerprint.  The encoding is developed by Antti
5324           Huima (draft-huima-babble-01.txt), and it creates human
5325           readable strings out of binary data.  Affected file
5326           lib/silccrypt/silchash.[ch].
5327
5328         * Print the babble print now in addition of fingerprint as well
5329           in Irssi SILC client.  Affected files are
5330           irssi/src/fe-common/silc/module-formats.[ch],
5331           irssi/src/fe-common/silc/core/client_ops.c.
5332
5333 Sun Nov  4 23:37:28 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5334
5335         * Fixed a security problem found in SKE.  The initiator's
5336           public key too is now added to the HASH hash value creation
5337           which is signed by the responder to create the SIGN value.
5338           This will prevent anyone in the middle to lie to the responder
5339           about the initiator's public key.  If this is done now, the
5340           man in the middle will get caught.  Updated the protocol
5341           specification.
5342
5343 Sun Nov  4 11:43:53 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5344
5345         * Better installation directory handling.  Configure module
5346           paths and other paths automatically to example_silc* files
5347           in doc/.  A patch by toma.
5348
5349         * Fixed compiler warning from MPI library, and from SILC RNG.
5350           A patch by johnny.
5351
5352         * Added SILC_SERVER_PID_FILE to define the pid file for server.
5353           It can be configured with ./configure.  A patch by toma.
5354
5355 Sat Nov  3 23:48:23 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5356
5357         * Find correct make to use in prepare-clean.  A patch by
5358           toma.  Affected file prepare-clean.
5359
5360 Sat Nov  3 22:04:00 PST 2001  Brian Costello <bc@mksecure.com>
5361
5362         * Added irssi variables use_auto_addr, auto_bind_ip,
5363           auto_bind_port and auto_public_ip.
5364
5365         * Changed the interface for silc_client_send_key_agreement
5366           in lib/silcclient/silcapi.h
5367
5368         Affected files:
5369
5370          irssi/src/silc/core/silc-core.c
5371          irssi/config
5372          lib/silcclient/silcapi.h
5373          irssi/src/silc/core/silc-channels.c
5374          lib/silcclient/client_keyagr.c
5375          irssi/docs/help/key
5376
5377 Sat Nov  3 17:48:55 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5378
5379         * Added silc_pkcs_public_key_compare to compare two
5380           public keys.  Affected file lib/silccrypt/silcpkcs.[ch].
5381
5382         * Check that the client who set the founder mode on the
5383           channel is the same client that is giving the founder
5384           mode to itself.  It is done by comparing the saved public
5385           key (it is saved even in the authentication is passphrase).
5386           Affected file silcd/command.c.
5387
5388 Fri Nov  2 18:52:08 EST 2001  Pekka Riikonen <priikone@silcnet.org>
5389
5390         * Do not process packet for disconnected socket connection.
5391           Affected file lib/silccore/silcpacket.c.
5392
5393         * Process the DISCONNECT packet through scheduler in the
5394           client library.  Affected file lib/silcclient/client.c.
5395
5396         * Fixed the silc_client_packet_parse to not to increase
5397           the packet sequence number if the conn->sock and the
5398           current socket connection is not same.  This can happen
5399           for example during key agreement when the conn includes
5400           multiple socket connections (listeners).  Affected file
5401           lib/silcclient/client.c.
5402
5403         * The sender of the file transfer request now provides also
5404           the pointer (listener) for the key exchange protocol.  If
5405           the listener cannot be created then it sends empty key
5406           agreement and lets the receiver provide the listener.
5407
5408           Added `local_ip' and `local_port' arguments to the
5409           silc_client_file_send.  If they are provided they are used,
5410           if not then it will attempt to find local IP address, if
5411           not found or bind fails then the remote client will provide
5412           the listener.
5413
5414           Affected files are lib/silcclient/client_ftp.c and
5415           lib/silcclient/silcapi.h.
5416
5417         * Extended the FILE SEND command to support defining the
5418           local IP and port for key exchange listener.  They are
5419           optional.  Affected file irssi/src/silc/core/silc-servers.c.
5420
5421 Thu Nov  1 22:10:07 EST 2001  Pekka Riikonen <priikone@silcnet.org>
5422
5423         * Defined to WHOIS command reply the sending of fingerprint
5424           of the client's public key (if the proof of posession of the
5425           corresponding private key is verified by the server).
5426           Updated to the protocol specification.
5427
5428         * Added support of receiving the client's public key's
5429           fingerprint in command reply in client library.  Affected
5430           file is lib/silcclient/command_reply.c, and
5431           lib/silcclient/idlist.[ch].
5432
5433 Thu Nov  1 18:06:12 EST 2001  Pekka Riikonen <priikone@silcnet.org>
5434
5435         * Do not send over 128 chars long nickname to the server
5436           in NICK command.  Affected file lib/silcclient/command.c.
5437
5438         * Do not send over 256 chars long channel names to the server
5439           in JOIN command.  Affected file lib/silcclient/command.c.
5440
5441 Tue Oct 30 22:48:59 EST 2001  Pekka Riikonen <priikone@silcnet.org>
5442
5443         * Assure that silc_server_close_connection cannot be called
5444           twice for same socket context.  Affected file is
5445           silcd/server.c.
5446
5447 Tue Oct 30 16:58:14 EST 2001  Pekka Riikonen <priikone@silcnet.org>
5448
5449         * Send error message to application if opening file for
5450           writing during file transfer fails.  Affected file is
5451           lib/silcclient/client_ftp.c.
5452
5453           Remove all file transfer sessions for a client that we're
5454           removing from ID cache.
5455
5456           Affected file is lib/silcclient/client_ftp.c.
5457
5458         * Fixed silc_net_addr2bin to return correct address.  Affected
5459           file lib/silcutil/[unix/win32]/silc[unix/win32]net.c.
5460
5461         * Fixed file transfer session removing on signoff notify.
5462           Affected file irssi/src/silc/core/silc-servers.c.
5463
5464         * Added the SilcClientFileError to be returned in the monitor
5465           callback.  Added NO_SUCH_FILE and PERMISSION_DENIED errors.
5466           Affected file lib/silcclient/silcapi.h.
5467
5468 Mon Oct 29 17:43:04 EST 2001  Pekka Riikonen <priikone@silcnet.org>
5469
5470         * Fixed a crash in silc_client_ftp_free_sessions and
5471           silc_client_ftp_session_free_client.  Affected file
5472           lib/silcclient/client_ftp.c.
5473
5474         * Added `disabled' field in the SilcChannelEntry in the server
5475           to indicate if the server entry is disabled.  Affected file
5476           silcd/idlist.h, silcd/command[_reply].c.
5477
5478         * SILC server adds now /var/run/silcd.pid everytime it is
5479           started.  Affected file silcd/silcd.c.
5480
5481         * Added silc_server_packet_send_clients to send a packet to
5482           the provided table of client entries.  Affected file
5483           silcd/packet_send.[ch].
5484
5485         * Fixed a crash in client resolving in client_prvmsg.c in
5486           client library.  Affected file lib/silcclient/client_prvmsg.c.
5487
5488         * Do not actually remove the client directly from ID cache
5489           during SERVER_SIGNOFF, but invalidate it.  This way we
5490           preserve the WHOWAS info for the client.  Affected file
5491           silcd/server_util.c.
5492
5493         * Fixed SERVER_SIGNOFF notify handling in the server.  The
5494           server is now able to process incoming SERVER_SIGNOFF notify
5495           for a server that it doesn't even know about.  It will remove
5496           the clients provided in the notify.  Affected file
5497           silcd/packet_receive.c.
5498
5499         * Check for partial packet in data queue after every packet that
5500           was found from the queue.  Return and wait for more data if
5501           there is partial data in queue.  Affected file is
5502           lib/silccore/silcpacket.c.
5503
5504 Sun Oct 28 18:46:27 EST 2001  Pekka Riikonen <priikone@silcnet.org>
5505
5506         * Added SilcClietFileError enum to indicate error in
5507           file transfer.  Added SILC_CLIENT_FILE_MONITOR_KEY_AGREEMENT
5508           and SILC_CLIENT_FILE_MONITOR_ERROR new monitor statuses.
5509           Affected files lib/silcclient/silcapi.h and
5510           lib/silcclient/client_ftp.c.
5511
5512         * Check that newsize in silc_buffer_realloc is larger than
5513           the old buffer's size.  Affected file lib/silcutil/silcbufutil.h.
5514
5515         * Added better monitor of file transfers.  It now monitors
5516           key agreement protocol during the file transfer too.  Added
5517           error reporting too.  Affected files
5518           irssi/src/silc/core/silc-servers.c,
5519           irssi/src/fe-common/silc/module-formats.[ch].
5520
5521         * Wrote a help file for FILE command.
5522
5523         * Added silc_rng_global_get_byte_fast to get not-so-secure
5524           random data as fast as possible.  Random data is read from
5525           /dev/urandom if available and from the SILC RNG if not
5526           available.  It is used in padding generation.  Affected file
5527           lib/silccrypt/silcrng.[ch].
5528
5529         * All packets in client library are now processed synchronously.
5530           Optimized packet processing a lot.  Affected file
5531           lib/silcclient/client.c.
5532
5533         * All server connection packets are processing synchronously
5534           now in server, to optimize packet processing.  Affected file
5535           silcd/server.c.
5536
5537         * Include files are installed now only in Toolkit distribution
5538           if make install is given.  Affected files: all Makefile.am's.
5539
5540 Thu Oct 25 22:44:06 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5541
5542         * Assure that silc_client_notify_by_server_resolve does not
5543           resolve the client information multiple times.  If it cannot
5544           be found by the first it cannot be found at all.  Affected
5545           file lib/silcclient/client_notify.c.
5546
5547         * Fixed WHOWAS command reply calling.  Affected file
5548           lib/silcclient/command_reply.c.
5549
5550         * Removed all references to silc_idlist_get_client from the
5551           Irssi SILC client since that call is internal call used by
5552           the library.  The Irssi SILC client will use now client
5553           retrieval functions found in silcapi.h.
5554
5555         * Fixed a bug in resolving nickname info before sending
5556           private message.  It used freed memory.  Affected file
5557           irssi/src/silc/core/silc-servers.c.
5558
5559 Thu Oct 25 19:04:49 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5560
5561         * Assure my_channels statistics cannot go negative in server.
5562           Affected files silcd/server.c, silcd/server_util.c.
5563
5564 Wed Oct 24 19:53:05 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5565
5566         * Upgraded dotconf 1.0.2 to 1.0.6 in lib/dotconf.
5567
5568 Tue Oct 23 13:51:19 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5569
5570         * Win32 Toolkit changes.  Affected files
5571           win32/silc.dsw, win32/libsilc/libsilc.def,
5572           win32/libsilcclient/libsilc.def,
5573           lib/silcutil/silcutil.c, and
5574           lib/sftp/sftp_fs_memory.c.
5575
5576 Mon Oct 22 16:35:05 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5577
5578         * Added silc_net_localip to return local host's IP address.
5579           Affected file lib/silcutil/silcnet.[ch].
5580
5581         * If key exchange or rekey protocol is active for a connection
5582           parse all packets syncronously since there might be packets
5583           in packet queue that we are not able to process without first
5584           processing packets before them.  Affected file silcd/server,
5585           lib/silcclient/client.c.
5586
5587         * SilcPacketParserCallback now returns TRUE or FALSE to indicate
5588           whether library should continue processing the packet.
5589           Affected file lib/silccore/silcpacket.h.
5590
5591         * Added SilcSFTPMonitor callback, SilcSFTPMonitors and
5592           SilcSFTPMonitorData to SFTP server to monitor various
5593           SFTP client requests.  Affected file lib/silcsftp/silcsftp.h,
5594           lib/silcsftp/sftp_server.c.
5595
5596         * Added silc_file_size to return file size.  Affected file
5597           lib/silcutil/silcutil.[ch].
5598
5599         * Implemented the file transfer support for the client library.
5600           Added preliminary support for simple client to client one-file
5601           transmission.  Affected file lib/silcclient/client_ftp.c,
5602           lib/silccilent/client.[ch].
5603
5604         * Added new local command FILE to the Irssi SILC Client.
5605           It is used to perform the file transfer.  It has subcommands
5606           SEND, RECEIVE, SHOW and CLOSE.  Affected files
5607           irssi/src/silc/core/client_ops.c,
5608           irssi/src/silc/core/silc-server.[ch].
5609
5610 Mon Oct 22 12:50:08 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5611
5612         * Relay the SILC_PACKET_FTP in the server.  Affected files
5613           silcd/server.c and silcd/packet_receive.c.
5614
5615 Sun Oct 21 20:21:02 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5616
5617         * Renamed silc_file_read and silc_file_write to functions
5618           silc_file_readfile and silc_file_writefile.  Added function
5619           silc_file_open and silc_file_close.  Affected files
5620           lib/silcutil/silcutil.[ch].
5621
5622 Thu Oct 18 20:58:13 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5623
5624         * Resolve the client info when received private message or
5625           channel message for a client which nickname we don't know.
5626           Affected files lib/silcclient/client_prvmsg.c and
5627           lib/silcclient/client_channel.c.
5628
5629         * Do not crash in /KEY if client is not connected.  Affected
5630           file irssi/src/silc/core/silc-channels.c.
5631
5632         * Added SilcClientStatus field to the SilcClientEntry in the
5633           lib/silcclient/idlist.h.
5634
5635           Added SILC_CLIENT_STATUS_RESOLVING to mark that the entry
5636           is incomplete and is being resolved, it won't be resolved
5637           twice.
5638
5639           Make sure also that USERS command reply does not resolve
5640           twice information.  Affected file is
5641           lib/silcclient/command_reply.c.
5642
5643           Make sure that silc_client_get_clients_by_list does not
5644           resolve twice same information.
5645
5646         * Check for valid client->id in the silc_server_free_client_data.
5647           Affected file silcd/server.c.
5648
5649         * Fixed /GETKEY nick@server not to crash if the server entry
5650           is not found.  Affected file lib/silcclient/command.c.
5651
5652         * Fixed the silc_server_check_cmode_rights to check the
5653           requested modes correctly.  Affected file silcd/command.c.
5654
5655 Thu Oct 18 12:10:22 CEST 2001  Pekka Riikonen <priikone@silcnet.org>
5656
5657         * Better checks for non-printable chars in nick added.
5658           Affected file silcd/command.c.
5659
5660 Thu Oct 18 09:18:58 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5661
5662         * Call the silc_server_udpate_servers_by_server in the
5663           primary router that comes back online in the backup resuming
5664           protocol.  Otherwise it routes packets wrong.  Affected file
5665           silcd/server_util.[ch], silcd/server_backup.c.
5666
5667 Wed Oct 17 16:51:18 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5668
5669         * Added SILC_STR_UI8_[N]STRING[_ALLOC] formats to the
5670           lib/silcutil/silcbuffmt.[ch].
5671
5672         * Redefined the SILC packet header to include the padding
5673           length.  Affected file lib/silccore/silcpacket.[ch].
5674
5675         * Added SILC_PACKET_PADLEN_MAX macro to return the padding
5676           length for maximum padding up to 128 bytes).  Affected
5677           file lib/silccore/silcpacket.h.
5678
5679         * Removed all backwards support for old 0.5.x MAC thingies.
5680           The SILC packet header change makes it impossible to be
5681           backwards compatible.
5682
5683         * Send the ENDING packet with timeout in the backup resuming
5684           protocol.  This is to assure that all routers has connected
5685           to the primary router.  Affected file silcd/server_backup.c.
5686
5687         * Changed the RNG to take the first IV from random data.  It
5688           used to take it from zero actually.  Changed the RNG also
5689           to use /dev/urandom during session.  /dev/random is used
5690           in initialization.  Affected file lib/silccrypt/silcrng.[ch].
5691
5692 Tue Oct 16 20:45:49 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5693
5694         * Changed the SILC packet header to have the first two bytes
5695           (the packet length) encrypted.  Affected files aroung the
5696           code tree, lib/silccore/silcpacket.[ch].  Removed the
5697           SilcPacketCheckDecrypt callback.  It is not needed anymore
5698           since the silc_packet_receive_process will determine now
5699           whether the packet is normal or special.
5700
5701         * Implemented the unidirectional MAC keys.  Affected files
5702           lib/silcske/silcske.c, silcd/protocol.c and
5703           lib/silcclient/protocol.c.
5704
5705         * Implemented the packet sequence number to the MAC computation.
5706           Affected files lib/silccore/silcpacket.c, silcd/protocol.c,
5707           silcd/packet_send.c, silcd/server.c, lib/silcclient/client.c,
5708           lib/silcclient/protocol.c.
5709
5710 Mon Oct 15 17:42:55 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5711
5712         * Allow backup router to announce servers.  All servers
5713           announced by backup router are added to the global list
5714           automatically.  Update hte server's socket to our primary
5715           router also when backup router announces a server.
5716           Affected file silcd/packet_receive.c.
5717
5718         * Do not update the client->router in the function
5719           silc_server_udpate_clients_by_server if the client is on
5720           global list.  We might fail to find any specific server
5721           for locally connected clients and local cell clients.  They
5722           should still use the `from' and not `to' as client->router.
5723           This fixes backup router resuming protocol.  Affected file
5724           silcd/server_util.c.
5725
5726         * Decrease channel statistics count only if the channel
5727           deletion worked.  Affected files are silcd/server.c and
5728           silcd/server_util.c.
5729
5730         * Added silc_server_update_servers_by_server to update origin
5731           of all server entries.  Used during backup router protocol.
5732           Affected files silcd/server_util.[ch], silcd/server.c. and
5733           silcd/backup_router.c.
5734
5735         * ROBODoc documented the lib/silccrypt/silchmac.h.  Added new
5736           function silc_hmac_init, silc_hmac_update, silc_hmac_final,
5737           silc_hmac_get_hash and silc_hmac_get_name.  Affected file
5738           lib/silccrypt/silchmac.c.
5739
5740 Sun Oct 14 18:28:22 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5741
5742         * Assure that router cannot reroute the same channel message
5743           to the sender.  Affected file silcd/packet_receive.c.
5744
5745 Sat Oct 13 12:46:18 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5746
5747         * Made better checks that the channel message is not sent
5748           to the router it came from.  Affected file is
5749           silcd/packet_send.c.  Fixed memory leak too.
5750
5751         * Announce informations for incoming router connection, but
5752           only after checking if it is replaced by backup router.
5753           Affected file silcd/packet_receive.c.
5754
5755 Fri Oct 12 18:37:24 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5756
5757         * Fixed the backup resuming protocol to work in multiple
5758           router environment.  Affected file silcd/server_backup.c.
5759
5760         * Route packet only to one router in the function
5761           silc_server_packet_send_to_channel.  Affected file is
5762           silcd/packet_send.c.
5763
5764         * Fixed silc_server_send_notify_dest to set the broadcast
5765           flag.  Fixed the silc_server_send_notify_topic to actually
5766           send the TOPIC_CHANGE notify and not SERVER_SIGNOFF notify.
5767           Affected file silcd/packet_send.c.
5768
5769         * Changed the SFTP Filesystem interface.  Changed the
5770           SilcSFTPFilesystemStruct to SilcSFTPFilesystemOps to include
5771           the filesystem operation function.  The SilcSFTPFilesystem
5772           is now a context that is allocated by all filesystem allocation
5773           functions and it already includes the operations structure
5774           and filesystem specific context.  It is given as argument
5775           now to the silc_sftp_server_start.  This made the interface
5776           a bit cleaner.  Affected file lib/silcsftp/silcsftp[_fs].h,
5777           lib/silcsftp/sftp_fs_memory.c and sftp_server.c.
5778
5779 Thu Oct 11 22:19:26 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5780
5781         * Changed the backup router adding and getting interfaces
5782           in the server.  The router that will be replaced by the
5783           specified backup router is now sent as argument.  Affected
5784           files silcd/serverconfig.[ch], silcd/backup_router.[ch], and
5785           silcd/server.c.
5786
5787         * Added silc_net_addr2bin_ne to return the binary form of
5788           the IP address in network byte order.  Affected files
5789           lib/silcutil/[unix/win32].silc[unix/win32]net.[ch].
5790
5791 Thu Oct 11 12:14:19 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5792
5793         * Check for existing server ID in silc_server_new_server
5794           and in silc_server_connect_to_router_final and remove the
5795           old entry if it exists.  Affected file silcd/packet_receive.c,
5796           silcd/server.c.
5797
5798         * Send the channel message always to only one router, either
5799           in upstream or downstream.  Affected file is
5800           silcd/packet_send.c.
5801
5802 Tue Oct  9 17:45:43 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5803
5804         * Wrote the definition of the backup resuming protocol to the
5805           protocol specification.
5806
5807         * Removed one redundant channel key generation from normal
5808           server during joining procedure.  Removed one redundant
5809           channel key sending from server to router during joining
5810           procedure.  Affected file silcd/command.c.
5811
5812         * Made minor bugfixes to the backup router resuming protocol.
5813           Affected file silcd/server_backup.c, server.c.
5814
5815 Mon Oct  8 16:47:42 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5816
5817         * Added --disable-asm configuration option.  Affected files
5818           configure.in.pre, lib/silcmath/mpi/configure.in.  A patch
5819           by salo.
5820
5821         * Implemented the backup resuming protocol that is used to
5822           resume the primary router position in the cell after the
5823           primary router comes back online.  Affected files
5824           silcd/server_backup.[ch], silcd/server, silcd/packet_receive.c,
5825           and silcd/server_util.[ch].
5826
5827 Sun Oct  7 12:29:25 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5828
5829         * Sleep two (2) seconds after sending QUIT command to server.
5830           Affected file lib/silcclient/command.c.
5831
5832         * Assure that if outgoing data buffer is pending do not force
5833           send any data.  Affected file silcd/packet_send.c.
5834
5835         * Assure that if outgoing data buffer is pending do not force
5836           send any data.  Affected file lib/silcclient/client.c.
5837
5838         * Implemented the backup router support when the primary router
5839           goes down.  The servers and routers can now use the backup
5840           router as new primary router without loosing connectivity.
5841
5842 Sat Oct  6 21:18:54 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5843
5844         * Added new SILC_IDLIST_STATUS_DISABLED flag for entries
5845           in the server to indicate disabled entry.  All data read
5846           from the connection will be ignored and no data is sent
5847           for entry that is disabled.  Affected files are
5848           silcd/idlist.h, silcd/server.c.
5849
5850 Fri Oct  5 00:03:29 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5851
5852         * Created SFTP client and server test programs in the
5853           lib/silcsftp/tests directory.
5854
5855 Wed Oct  3 23:31:42 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
5856
5857         * Implemented memory filesystem (virtual filesystem) for
5858           SFTP server.  Affected file lib/silcsftp/silcsftp_fs.h,
5859           sftp_fs_memory.c.
5860
5861 Sun Sep 30 22:10:57 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5862
5863         * Implemented the SFTP (SSH File Transfer Protocol) to the
5864           lib/silcsftp.  It includes SFTP client and SFTP server
5865           implementations.
5866
5867 Sun Sep 30 10:35:44 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5868
5869         * Moved lib/silccore/silcprotocol.[ch] to the
5870           lib/silcutil library.
5871
5872         * Added silc_buffer_format_vp and silc_buffer_unformat_vp to
5873           take variable argument list pointer as argument.  Affected
5874           file lib/silcutil/silcbuffmt.[ch].
5875
5876         * Added silc_buffer_set function that is used to set data
5877           to a SilcBuffer that is not allocated at all (SilcBufferStruct).
5878           Affected file lib/silcutil/silcbuffer.h.
5879
5880         * Changed various routines in the core library to use the new
5881           silc_buffer_set instead of allocating new buffer only for
5882           temporary purposes.
5883
5884         * Added 64-bit value formatting and unformatting support to the
5885           silc_buffer_[un]format routines.  Affected file is
5886           lib/silcutil/silcbuffmt.[ch].
5887
5888           Added also 64-bit macros: SILC_GET64_MSB and SILC_PUT64_MSB,
5889           to includes/bitmove.h.
5890
5891 Fri Sep 28 21:30:10 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5892
5893         * Fixed channel user mode saving in client library.  Affected
5894           file lib/silcclient/command[_reply].c.
5895
5896 Thu Sep 27 22:52:30 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5897
5898         * Defined the file transfer to the SILC Protocol.  Added
5899           new packet type SILC_PACKET_FTP and defined File Transfer
5900           Payload.  The mandatory file transfer protocol is SFTP
5901           (SSH File Transfer Protocol).  Affected file in addition
5902           of the internet draft is lib/silccore/silcpacket.h.
5903
5904         * Deprecated the SILC_PACKET_CELL_ROUTERS and defined new
5905           packet SILC_PACKET_RESUME_ROUTER instead.  The new packet
5906           is used as part of backup router protocol when the primary
5907           router of the cell is back online and wishes to resume
5908           the position as primary router.
5909
5910         * Redefined the MAC generation keys in the protocol.  The
5911           same key is not used anymore in both direction.  Both
5912           direction will now use different keys for sending and
5913           receiving.  This fixes a potential security flaw.  This
5914           change causes incompatibilities in the protocol.
5915
5916         * Redefined also the MAC computation from the packet.
5917           An packet sequence number is now added to the MAC
5918           computation.  This prevents possible replay attacks against
5919           the protocol.  This change too causes incompatibilities
5920           in the protocol.
5921
5922           Added `sequence' field to the SilcPacketContext to hold
5923           the current sequence number for the packet.
5924
5925 Wed Sep 26 20:15:22 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5926
5927         * Added `created' field to the SilcIDListData in the file
5928           silcd/idlist.h to indicate the time when the entry was
5929           created.
5930
5931         * Added `created' field to the SilcChannelEntry too.  Affected
5932           file silcd/idlist.h.
5933
5934         * Added `creation_time' aguments to all the announcement functions
5935           in the server.  If it is provided then only the entries that
5936           was created after the provided time frame are actually
5937           announced.  Affected file silcd/server.[ch].
5938
5939         * The protocol says that the Channel ID's IP address must be
5940           based on the router's IP address.  Added check for this in
5941           the silc_server_new_channel when processing incoming New Channel
5942           Payload.  Affected file silcd/packet_receive.c.
5943
5944         * Print out the correct version with --version in SILC client.
5945           Affected file irssi/src/silc/core/silc-core.c.
5946
5947 Mon Sep 24 17:19:00 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5948
5949         * Fixed WHOWAS command to check for completnes of the client
5950           entry always, not just when the command is coming from client.
5951           Affected file silcd/command.c.
5952
5953         * Added new function silc_server_packet_queue_purge to purge the
5954           outgoing data queue to the network.  After the function returns
5955           it is guaranteed that the outgoing packet queue is empty.
5956           Affected file silcd/packet_send.[ch].
5957
5958         * Purge the outgoing packet queue in the rekey protocol's final
5959           callback to assure that all rekey packets go to the network
5960           before quitting the protocol.  Affected file silcd/server.c.
5961
5962         * Added silc_client_packet_queue_parse as similar function as
5963           in server to the client library.  The affected file is
5964           lib/silcclient/client.c.
5965
5966 Sun Sep 23 15:15:53 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5967
5968         * Splitted silcd/server.c and created silcd/server_util.[ch]
5969           for utility functions.
5970
5971         * Added new socket flag SILC_SF_DISABLED to indicate that the
5972           connection is open but nothing can be sent to or received from
5973           the connection.  Affected file lib/silcutil/silsockconn.[ch].
5974           The checking for disabled socket is checked in the low level
5975           silc_socket_write and silc_socket_read functions.
5976
5977 Thu Sep 20 23:11:28 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5978
5979         * Allow only nicknames and channel names that fits into the
5980           7-bit unsigned char ASCII set.  Affected file silcd/command.c.
5981
5982 Thu Sep 20 18:04:12 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5983
5984         * When processing JOIN command reply in server check that if
5985           the channel exists in our global list we'll move it the local
5986           list.  Affected file silcd/command_reply.c.
5987
5988         * Fixed the check whether client is joined on the channel already
5989           in JOIN command.  Affected file lib/silcclient/command.c.
5990
5991         * Fixed the JOIN command reply to check whether the channel
5992           already exists.  Affected file lib/silcclient/command_reply.c.
5993
5994 Wed Sep 19 22:58:32 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
5995
5996         * Added silc_ske_status_string to map the SKE error numbers
5997           to readable strings.  The affected files are
5998           lib/silcske/silcske[_status].[ch].
5999
6000 Tue Sep 18 22:50:41 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6001
6002         * Do not show the private channels on the WHOIS channel list
6003           as it is not allowed by the protocol.  The affected file is
6004           silcd/server.c.
6005
6006 Sun Sep 16 12:32:58 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6007
6008         * Assure that the packet length digged from the actual packet
6009           is something sensible in the silc_packet_decrypt_rest_special
6010           in lib/silccrypt/silcpacket.c.
6011
6012         * Free and NULL the allocated pointer in silc_hmac_alloc if
6013           the HMAC allocation fails.  The affected file is
6014           lib/silccrypt/silchmac.c.
6015
6016         * Print the selected security properties to the log files in
6017           the server.  Affected file silcd/protocol.c.
6018
6019         * Add SKE's reference counter even if calling the completion
6020           callback manually.  Otherwise it goes negative, although it
6021           does not cause any problems.  The affected file is
6022           lib/silcske/silcske.c.
6023
6024         * Remove the client entry with short timeout after giving the
6025           KILL command.  Affected file lib/silcclient/command.c.
6026
6027         * Fixed to send error reply in WHOIS and IDENTIFY commands in
6028           case all found clients are already disconnected (WHOWAS would
6029           found them) in the server.  Affected file silcd/command.c.
6030
6031         * Update the last_receive (time of last data received) to be
6032           updated only when received private or channel message so that
6033           the idle time showed in WHOIS makes more sense.
6034
6035         * Added boolean field `valid' in to the SilcClientEntry in the
6036           client library to indicate whether the entry is valid or not.
6037           This fixes the nickname change bug on channel when changing
6038           the nickname to be same than the old (like nick to Nick) the
6039           nickname formatter doesn't set the new nick anymore to Nick@host.
6040           Affected file lib/silcclient/idlist.[ch].
6041
6042         * Now actually fixed the nickname changing on disconnection.
6043           Added new function silc_change_nick to the Irssi SILC Client.
6044           Affected file irssi/src/silc/core/client_ops.c,
6045           irssi/src/silc/core/silc-nicklist.[ch].
6046
6047 Sat Sep 15 13:29:17 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6048
6049         * Check that the public key exists in the GETKEY command before
6050           trying to encode it.  Affected file silcd/command.c.
6051
6052         * Print some notifications on received public keys with GETKEY
6053           command in the Irssi SILC Client.  Affected files are
6054           irssi/src/fe-common/silc/module-formats.[ch],
6055           irssi/src/silc/core/client_ops.c.
6056
6057         * Use IDENTIFY command to resolve the server information in the
6058           GETKEY command instead of INFO command.  Affected file
6059           lib/silcclient/command.c.
6060
6061         * All command reply functions in the client library now calls
6062           the pending command reply callbacks even if an error has
6063           occurred.  The server has done this a long time and now it was
6064           time to move the client library to this as well.  Now all
6065           errors can be delivered back to the pending command reply
6066           callbacks if necessary.  Affected files are
6067           lib/silcclient/command[_reply].[ch].
6068
6069         * Change the nickname on disconnection back to the username
6070           because in reconnect the server will enforce it to it anyway.
6071           Affected file irssi/src/silc/core/silc-servers.c.
6072
6073         * Fixed a config file parsing bug in the Irssi SILC client.
6074           Affected file irssi/src/silc/core/clientconfig.c.
6075
6076 Thu Sep 13 23:11:18 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6077
6078         * When printing the channel mode on JOIN, verify that the
6079           channel key and channel's HMAC are valid.  Affected file
6080           irssi/src/silc/core/client_ops.c.
6081
6082 Thu Sep 13 20:24:52 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6083
6084         * Added defines SILC_DEFAULT_CIPHER, SILC_DEFAULT_HMAC,
6085           SILC_DEFAULT_HASH and SILC_DEFAULT_PKCS in the file
6086           lib/silccrypt/[silccipher.h|silchmac.h|silchash.h|silcpkcs.h].
6087
6088         * Removed channel key rekey task deleting from the function
6089           silc_server_save_channel_key.  Affected file silcd/server.c.
6090           Added explicit timeout task context instead that is used to
6091           delete the task if we are registering a new task before the
6092           new task has elapsed.
6093
6094         * When channel key rekey occurs the client library now saves
6095           the old channel key for a short period of time (10 seconds) and
6096           is able to use it in case some is still sending channel
6097           messages encrypted with the old key after the rekey.  Affected
6098           file lib/silcclient/[idlist.h|client_channel.c].
6099
6100 Sun Sep  9 15:49:16 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6101
6102         * Added check to the silc_server_new_id_real to not accept
6103           new ID if it is the sender's own ID.  Affected file is
6104           silcd/packet_receive.c.
6105
6106         * Assure that we do not announce ourself or the one we've
6107           sending our announcements when we're router and are announcing
6108           servers to our primary router.  Affected file silcd/server.c.
6109
6110         * Fixed silc_server_command_identify_check_client to assemble
6111           correct WHOIS packet.  It send corrupted WHOIS packet and
6112           caused problem with router to router connections.  Affected
6113           file silcd/command.c.
6114
6115           Fixed also silc_server_command_whois_check the same way
6116           as for the IDENTIFY command.
6117
6118         * Added new SilcIDListStatus to the server in the SilcIDListData
6119           structure.   The status now includes the current status of
6120           the entry (like registered, resolved etc.).  Affected file
6121           silcd/idlist.[ch].  Defined a bunch of different status types
6122           as well.  This replaced the old boolean registered field as well.
6123
6124           Added resolve_cmd_ident field to the SilcClientEntry structure
6125           too so that if the entry is for example being resolved so
6126           another command may attach to the same pending command reply
6127           without requiring to resolve the same entry again.  This concept
6128           should optimize the WHOIS and the IDENTIFY resolving under
6129           heavy load by taking away unnecessary resolving for entries
6130           that are being resolved already.
6131
6132           Added support for adding multiple pending commands for one
6133           command idenfier.  Affected file silcd/command[_reply].[ch].
6134
6135         * Fixed WHOIS and IDENTIFY save to remove the cache entry
6136           before deleting the data.  Otherwise the hash table will have
6137           freed data in comparison functions.  Affected file is
6138           silcd/command_reply.c.
6139
6140         * Fixed silc_idlist_replace_client_id to add the new entry to
6141           the cache with NULL nickname.  Otherwise there will be invalid
6142           memory as the nickname after the nickname is freed.  Affected
6143           file silcd/packet_receive.c.
6144
6145         * Fixed the silc_idlist_get_clients_by_hash.  The entries was
6146           saved into wrong slots because the previous number of entries
6147           was not taken into account.  Affected file silcd/idlist.c.
6148           Fixed same thing in silc_idlist_get_clients_by_nickname too.
6149
6150         * If we are router and we receive JOIN notify to a channel that
6151           does not have any users then notified client is marked as the
6152           channel founder, as it is it.  The affected file is
6153           silcd/packet_receive.c
6154
6155         * Added to the extended hash table API's table_del_*ext functions
6156           the destructor as argument too, so that the caller can decide
6157           which destructor to use or whether to use destructor at all.
6158           Affected file lib/silcutil/silchashtable.[ch].
6159
6160         * Fixed ID Cache purging.  It actually deleted the entries from
6161           the hash table after the data was freed.  The hash table ended
6162           up comparing freed memory.  The affected file is
6163           lib/silccore/silcidcache.c.
6164
6165 Sat Sep  8 10:22:10 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6166
6167         * Fixed Irssi SILC client's KILL command's HELP syntax.
6168
6169         * The USERS command now resolves the detailed user information
6170           if the userinfo field is missing.  Affected file is
6171           lib/silcclient/command_reply.c.
6172
6173         * Do not print error in silc_file_read if the read file does
6174           not exist.  Just silently return NULL.  Affected file is
6175           lib/silcutil/silcutil.c.
6176
6177         * Fixed the silc_log_output to not wine about NULL filename
6178           and to not create some bogus " " filename.  Affected file is
6179           lib/silcutil/silclog.c.
6180
6181 Fri Sep  7 22:16:38 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6182
6183         * Fixed various printing bugs on the user interface in the
6184           Irssi SILC Client.  Minor changes that were forgotten from
6185           the release.
6186
6187 Fri Sep  7 17:28:37 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6188
6189         * Fixed the configure.in.pre and the compilation and distribution
6190           environment to support the new autoconf 2.52.  That version is
6191           now required to compile the CVS trunk.
6192
6193 Thu Sep  6 12:47:37 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6194
6195         * Renamed function silc_parse_nickname to silc_parse_userfqdn
6196           to generally parse user@fqdn format strings.  Affected file
6197           lib/silcutil/silcutil.c.
6198
6199         * Added nickname_format and nickname_force_format fields to the
6200           SilcClientParams structure.  The first one defines the format
6201           for the nicknames that the library will enforce if the receives
6202           multiple same nicknames.  The second one is boolean value and
6203           can be used to force the library to always enforce the format
6204           to the nicknames regardles whether there are multiple nicknames
6205           or not.  This configurable formatting was employed to flexibly
6206           support accessing multiple nicknames from the user interface.
6207           The userinterface can now set the nicknames to what ever format
6208           they prefer.  Affected file lib/silcclient/silcapi.h.
6209
6210           Added function silc_client_nickname_format to the file
6211           lib/silcclient/idlist.c.  It performs the nickname formatting.
6212
6213           Added new field `hostname´ to the SilcClientEntry context.
6214           It holds the hostname of the client.  Affected file is
6215           lib/silcclient/idlist.h.
6216
6217         * Irssi SILC Client sets the nicknames in nick@hostn format.
6218           Fe. priikone@otaku, priikone@otaku2 etc.  Affected file
6219           irssi/src/silc/core/silc-core.c.
6220
6221           The WHOIS printing now also shows both the real nickname and
6222           the formatted nickname so that user knows how to access the
6223           user if there are multiple same nicknames cached.  Affected
6224           file irssi/src/silc/core/client_ops.c.  Changed the WHOIS
6225           printing formatting too to take the hostname now as a separate
6226           argument.  The Affected file is
6227           irssi/src/fe-common/silc/modules-formats.[ch].
6228
6229         * Changed the silc_client_get_clients_local to accept the formatted
6230           nickname as argument.  It accepts the real nickname too but the
6231           formatted nickname can be used to find the true entry from
6232           multiple entries.  Affected file lib/silcclient/silcapi.h and
6233           lib/silcclient/idlist.c.
6234
6235         * Added nickname_format_parse field to the SilcClientParams.
6236           It is a callback function provided by the application to parse
6237           the nickname out of the formatted nickname string. The library
6238           calls it to get the nickname from the formatted string. Since
6239           the application generally knows better the format of the nickname
6240           string it parses it instead of the library, even though library
6241           encodes the formatted string.  If the callback function is not
6242           provided then the library will use the string as is.  The
6243           affected file is lib/silcclient/silcapi.h.
6244
6245         * All the nickname strings passed to the client library in
6246           commands are now expected to be formatted nickname strings.
6247           If the command does not support the formatted nickname string
6248           it will assume that the sent string is the actual nickname.
6249           Affected file lib/silcclient/command.c.
6250
6251 Tue Sep  4 22:31:28 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6252
6253         * Added public key authentication support to OPER and SILCOPER
6254           commands in the client library.  Affected file is
6255           lib/silcclient/command.c.
6256
6257 Tue Sep  4 12:39:17 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6258
6259         * Changed the get_auth_methdod client operation to be asynchronous.
6260           It can be async if the application resolves the authentication
6261           method from the server during the negotiation.  Added new
6262           SilcGetAuthMeth completion callback that the application will
6263           call after resolving the authentication method.
6264
6265           Added function silc_client_request_authentication_method that
6266           the application can use to resolve the authentication method
6267           from the server.  Added also SilcConnectionAuthRequest callback
6268           that the library will call after the server has replied.  The
6269           application can call this function if it does not know the
6270           current authentication method.
6271
6272           Affected files are lib/silcclient/client.c and
6273           lib/silcclient/silcapi.h.
6274
6275         * The Irssi SILC client now automatically resolves the authentication
6276           method incase any configuration information is not present (and
6277           currently there never is).  The affected file is
6278           irssi/src/silc/core/client_ops.c.
6279
6280         * Fixed public key authentication from the client library.
6281           Affected file lib/silcclient/protocol.c.  Changed also the
6282           protocol specification about the public key authentication in
6283           the connection authentication protocol.  The actual data to be
6284           signed is now computed with a hash function before signing.
6285
6286         * Fixed the public key authentication from the server as well.
6287           Affected file silcd/protocol.c.
6288
6289         * Removed the mlock()'s from the memory allocation routines.
6290           Affected file lib/silcutil/silcmemory.c.  The ./configure does
6291           not check anymore for the mlock().  Affected file is
6292           configure.in.pre.
6293
6294         * Fixed USERS command in server to allow the execution of the
6295           command for private and secret channels if the client sending
6296           the command is on the channel.  Affected file silcd/command.c.
6297
6298         * Fixed silc_client_get_clients_local to return the clients
6299           count correctly.  It could return wrong value.  Affected file
6300           lib/silcclient/idlist.c.
6301
6302 Mon Sep  3 20:09:59 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6303
6304         * Fixed the lib/silcmath/mpi/mpi.h to always use 32-bit data
6305           types.  The assembler optimizations seemed not to like 64-bit
6306           data types.  The assmebler optimizations thus are now enabled
6307           also for BSD systems as opposed to only enable them for Linux.
6308
6309         * Do not check for threads at all on BSD systems.  Affected
6310           file configure.in.pre.
6311
6312         * Removed -n and -h options from the Irssi SILC Client since
6313           they are not used in silc.
6314
6315         * Fixed the prime generation to assure that the first digit
6316           of the generated random number is not zero since our conversion
6317           routines does not like number strings that starts with zero
6318           digit.  If zero digit is seen the random number is regenerated.
6319           This caused some corrupted RSA keys when the zero first digit
6320           was met.  Affected file lib/silcmath/silcprimegen.c.
6321
6322 Sun Sep  2 17:17:24 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6323
6324         * Fixed WIN32 configuration in the ./configure script.
6325           Fixed to include xti.h on environments that has it.
6326           Patches by Carsten Ilchmann and andrew.
6327
6328 Sat Sep  1 00:29:33 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6329
6330         * Changed the silc_id_create_client_id to be collision
6331           resistant.  It is now assured that there cannot be created
6332           two same client ID's.  I suspect that some weird bugs in
6333           the server were actually caused by duplicate Client IDs.
6334           Affected file silcd/serverid.[ch].  A router receiving
6335           new ID now also assures and informs the sending server
6336           if the ID caused collision.
6337
6338         * Changed the silc_id_create_channel_id to also assure that
6339           there are no collisions.
6340
6341 Wed Aug 29 17:55:01 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6342
6343         * Statement about ignoring the Mutual Authentication flag when
6344           performing rekey with PFS was a bit misleading.  It is ignored
6345           if it was set in the initial negotiation, it cannot be even
6346           set in the rekey.  Fixed in the ke-auth draft.  Started the
6347           new versions of the protocol drafts in the doc/.
6348
6349 Sun Aug 26 14:59:15 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6350
6351         * Fixed a bug in silc_client_command_identify_save when saving
6352           new channel information.  The channel name was no duplicated
6353           and caused crash on exit.  Affected file is
6354           lib/silcclient/command_reply.c.
6355
6356 Fri Aug 17 23:07:45 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6357
6358         * Fixed the getkey command handling in the server.  Send just
6359           empty OK reply to the sender if the key could not be fetched
6360           (but everything else was ok, like the key just was not available).
6361           Changed the public key parameter to optional in the protocol
6362           specs so that empty OK reply can be sent.  Affected file
6363           silcd/command.c.
6364
6365           Added a message to Irssi SILC client to tell to user if the
6366           server did not return a public key.
6367
6368 Tue Aug 14 07:29:27 CEST 2001  Pekka Riikonen <priikone@silcnet.org>
6369
6370         * Fixed a channel key regeneration bug.  It registered new
6371           timeout tasks exponentially until all system resources were
6372           used.  Affected file silcd/server.c.
6373
6374 Sun Aug 12 20:48:14 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6375
6376         * Added the SILC Document generator to the scripts/silcdoc.
6377           It can be used to generate the Toolkit Reference Manual out
6378           of the source tree.  Internally it will also use the RoboDoc
6379           generator now imported in util/robodoc.
6380
6381 Sun Aug 12 12:28:17 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6382
6383         * Added couple of return's in rekey protocol if error orccurred
6384           during the protocol.  The execution must be terminated.
6385           Affected file silcd/protocol.c.  Also, terminate the protocol
6386           always with timeout.
6387
6388 Sat Aug 11 12:36:02 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6389
6390         * The client's Client ID was created initally from the wrong
6391           nickname (it could have been in format nick@host) in the
6392           silc_server_new_client.  Affected file silcd/packet_receive.c
6393
6394 Sat Aug 11 00:29:57 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6395
6396         * Added some SILC_LOG_ERROR's to various error conditions
6397           if client could not be added to ID cache.  Affected files
6398           silcd/packet_receive.c and silcd/server.c.
6399
6400         * When client's sock->user_data is freed, NULL also the
6401           client->router and client->connection pointers.  Added check
6402           for these pointers being NULL to various places around the
6403           code.  Affected file silcd/server.c.
6404
6405         * Added client->data.registered == TRUE checks to various
6406           places around the code to assure that unregistered client's
6407           are not handled when it is not allowed.  Affected file
6408           silcd/server.c.
6409
6410         * Added `bool registered' fields to all
6411           silc_idlist_[server|client]_get_* routines to indicate whether
6412           the fetched client needs to be registered or not.  Affected
6413           file silcd/idlist.[ch].
6414
6415         * Add your own entry as registered to the ID cache in the
6416           server.  Affected file server.c.
6417
6418         * Fixed a bug in silc_server_new_server.  The SilcServer was
6419           set as the new server's context instead of SilcServerEntry.
6420           This naturally caused some weird bugs.
6421
6422         * Added "updated" field the SilcChannelEntry which indicates
6423           the time since the channel entry was last accessed.  This
6424           can be used to determine whether it is necessary to
6425           announce the channel after backup resuming protocol.
6426           Affected files silcd/idlist.[ch].
6427
6428 Thu Aug  9 18:28:37 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6429
6430         * Do not delete the channel rekey task when adding it
6431           for in silc_server_create_channel_key.
6432
6433         * Changed the silc_server_create_channel_key to return
6434           TRUE or FALSE to indicate the success of the channel key
6435           creation.
6436
6437 Thu Jul 26 11:32:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6438
6439         * Fixed MSVC++ project files and added missing files to
6440           Makefiles under win32/.
6441
6442 Wed Jul 25 18:43:54 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6443
6444         * Do not add TCP_NODELAY flag if the operating system
6445           does not have it defined.  Affected files are
6446           lib/silcutil/[unix/win32]/silc[unix/win32]net.c.
6447
6448         * Fixed buffer overflow from Irssi SILC Client.  Affected
6449           file irssi/src/fe-common/core/themes.c.
6450
6451         * Fixed double free in client library in the file
6452           lib/silcclient/client.c when disconnecting from server.
6453
6454         * Applied double free patch from cras to Irssi SILC client.
6455           Affected files irssi/src/core/[modules/expandos].c
6456
6457         * Fixed the disconnection handling to Irssi SILC Client.
6458           The application must call silc_client_close_connection
6459           in ops->connect client operation in case of failure of
6460           the connection.  Affected file is
6461           irssi/src/silc/core/client_ops.c.
6462
6463         * Do not set sock->protocol to NULL in the function
6464           silc_client_close_connection after executing the protocol's
6465           final callback since the sock might not be valid anymore.
6466           Affected file lib/silcclient/client.c.
6467
6468 Wed Jul 25 16:04:35 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6469
6470         * Do not enable SILC_THREADS if the linking with libpthread
6471           did not happen.  Affected file configure.in.pre.
6472
6473         * Added notion to protocol specification that server must
6474           verify the sent authentication payload with CMODE when
6475           setting the channel founder key.  Implemented it to the
6476           server.  Affected file silcd/command.c.
6477
6478 Mon Jul 23 18:31:43 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6479
6480         * Added _EXTRA_DIST SILC distribution variable to the
6481           distributions file.  It is used to conditionally add extra
6482           files or directories to the specific distribution.  Affected
6483           files ./prepare, Makefile.am.pre and distributions.
6484
6485           Removed the `_' from the start of the distribution names.
6486           It is redundant.
6487
6488         * Added README.WIN32 for instructions to compile the Toolkit
6489           under WIN32.
6490
6491 Mon Jul 23 10:12:37 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6492
6493         * Fixed a double free in disconnection in the server.  Affected
6494           file is silcd/server.c.
6495
6496         * Fixed the lib/silcske/groups.c to work now also with GMP
6497           MP library.  The string conversion did not work when using
6498           specific base and the base is indicated in the string as well.
6499
6500         * Created win32/ directory which now includes MSVC++ specific
6501           stuff so that toolkit (DLLs) may be compiled with MSVC++.
6502           It will appear only in the toolkit distribution
6503
6504 Sun Jul 22 19:40:30 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6505
6506         * Changed the key material distribution function in case when
6507           the hash output is too short.  The data is now concatenated
6508           a bit differently than it used to.  Made the change to the
6509           SKE protocol specification.
6510
6511         * Added better GMP detection to configure.in.pre.  A patch
6512           by salo.
6513
6514 Fri Jul 20 13:16:00 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6515
6516         * Fixed a minor bug in SKE that might cause some problem on
6517           some platforms.  Affected file lib/silcske/silcske.c.
6518
6519         * Added the cookie checking for initiator in the SKE.  It checks
6520           that the responder returns the sent cookie unmodified.  The
6521           affected file is lib/silcske/silcske.c.  Added new SKE
6522           error type INVALID_COOKIE that can be sent during the
6523           negotiation.  Fixed some memory leaks as well.
6524
6525         * Added the "invalid cookie" error message to Irssi SILC client's
6526           message formats.
6527
6528 Thu Jul 19 21:44:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6529
6530         * Added `task_max' field to the SilcClientParams to indicate
6531           the maximum tasks the scheduler can handle.  If set to zero,
6532           default values are used.  Affected file lib/silcclient/silcapi.h.
6533
6534         * Fixed memory leaks in silc_client_close_connection.  Affected
6535           file lib/silcclient/client.c.
6536
6537         * Added silc_client_del_client_entry to client library to free
6538           all memory of given client entry.  Affected file is
6539           lib/silcclient/idlist.[ch].
6540
6541         * Added new functions silc_client_del_channel and
6542           silc_client_del_server to delete channel and server entries.
6543           Affected file lib/silcclient/[silcapi.h/idlist.c].
6544
6545         * Removed silc_client_del_client_by_id from silcapi.h.
6546
6547         * Fixed the INFO command to return the server's own info
6548           correctly when querying by Server ID.  Affected file is
6549           silcd/command.c.
6550
6551 Thu Jul 19 14:47:30 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6552
6553         * Removed the non-blocking settings in WIN32 code in the
6554           silc_sock_[read/write] and added SleepEx instead.  Affected
6555           file lib/silcutil/win32/silcwin32sockconn.c.  The availability
6556           of input data is now checked with FIONREAD and ioctlsocket.
6557
6558 Wed Jul 18 18:34:01 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6559
6560         * Call silc_schedule_task_del_by_context in the
6561           silc_protocol_cancel instead of silc_schedule_task_del_by_callback.
6562           Affected file lib/silccore/silcprotocol.c.
6563
6564         * Call silc_protocol_cancel for active protocols in the
6565           silc_server_close_connection if the funtion
6566           silc_server_free_sock_user_data has not been called.
6567           Affected file silcd/server.c.
6568
6569         * Generic tasks cannot be deleted using the del_by_fd
6570           task deleting function since generic tasks does not match
6571           any specific fd.  Affected file lib/silcutil/silcschedule.[ch].
6572
6573         * Added a notion to SILCOPER help file that the SILCOPER works
6574           only on router server, not on normal server.
6575
6576 Wed Jul 18 09:40:04 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6577
6578         * Added for WIN32 support for the new scheduler as well.
6579           Affected file lib/silcutil/win32/silcwin32schedule.c.
6580
6581         * Fixed the SHA1 implementation to work on various platforms.
6582
6583 Tue Jul 17 23:04:10 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6584
6585         * Rewrote the SILC Scheduler entirely.  Removed the old SILC Task
6586           API.  It is part of the scheduler now.  Everything else is
6587           as previously but some functions has changed their names.
6588           Checkout the lib/silcutil/silcschedule.h for the interface.
6589           Updated all applications to use the new interface.  Affected
6590           files are lib/silcutil/silcschedule.[ch].
6591
6592 Tue Jul 17 16:53:30 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6593
6594         * Found a bug in the SKE implementation.  The HASH value,
6595           specified by the protocol, was not computed correctly.  The
6596           public key of the responder was not added to the computation
6597           even though it is mandatory.  Affected file lib/silcske/silcske.c.
6598           This unfortunately causes incompatibilities with older
6599           clients and servers.
6600
6601         * Added WIN32 specific network init and uninit functions:
6602           silc_net_win32_init and silc_net_win32_uninit to init and uninit
6603           the Winsock2.  Affected file lib/silcutil/silcnet.h and
6604           lib/silcutil/win32/silcwin32net.c.
6605
6606         * Set the socket always to nonblocking mode on WIN32 after
6607           reading data or writing data.  Affected file is
6608           lib/silcutil/win32/silcwin32sockconn.c.
6609
6610 Mon Jul 16 22:55:26 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6611
6612         * Fixed various compilation problems under WIN32.  Affected
6613           files lib/silcutil/win32/silcwin32thread.c and
6614           lib/silcutil/win32/silcwin32schedule.c.
6615
6616         * Removed all _internal.h #includes from public header
6617           files.  Internal headers must never be included from
6618           public headers.
6619
6620           Removed also the lib/silcske/payload_internal.h file.
6621
6622         * All include files that may be needed (public and some others
6623           included by the public headers) by application developers are
6624           now copied to the ./includes directory.  It does not copy any
6625           internal headers.  Affected file Makefile.defines.pre and all
6626           Makefile.am's under lib/ and subdirs.
6627
6628 Thu Jul 12 17:49:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6629
6630         * Do not change the ~/.silc directory's permissions automatically.
6631           Affected file irssi/src/silc/core/clientutil.c.
6632
6633 Thu Jul 12 10:18:40 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6634
6635         * Do not cancel the protocol in silc_server_close_connection
6636           it might cause recursion.  Now cancelled in the function
6637           silc_server_free_sock_user_data.  Affected file silcd/server.c.
6638
6639         * Fixed the silc_server_remove_clients_by_server to regenerate
6640           the channel keys correctly finally.  Added also new function
6641           silc_server_remove_clients_channels to actually do it.
6642           Affected file silcd/server.c.
6643
6644         * Fixed the silc_server_new_channel to not crash by giving
6645           wrong router to the new channel.  Affected file is
6646           silcd/packet_receive.c.
6647
6648 Wed Jul 11 18:31:57 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6649
6650         * Added SilcClientParams structure to the lib/silcclient/silcapi.h
6651           which is given as argument to the silc_client_alloc now.
6652           It can be used to configure the client and set various parameters
6653           that affect the function of the client.
6654
6655         * The USERS command in server did not check whether the channel
6656           is private or secret.  Affected file silcd/command.c.
6657
6658         * Added new argument to the USERS command in protocol specification.
6659           The USERS command now can take the channel name as argument
6660           as well.  Added support for this in client and server and
6661           updated the protocol specs.
6662
6663         * Completed the GETKEY command in client. It can be now used
6664           to fetch also servers public key not only some clients.
6665           Affected files lib/silcclient/command[_reply].c.
6666
6667         * Added silc_client_get_server to return server entry by the
6668           server name.  Affected files lib/silcclient/silcapi.h and
6669           idlist.c.
6670
6671         * Redefined the IDENTIFY command in protocol specification to be
6672           more generic.  It now can be used to query information about
6673           any entity in the SILC Network, including clients, servers and
6674           channels.  The query may be based either the entity's name
6675           or the ID.  Added support for this in both client and server.
6676
6677           Affected files silcd/command.c and lib/silcclient/command.c
6678           and command_reply.c.
6679
6680         * Optimized the WHOIS and WHOWAS commands in the server. Removed
6681           the _from_client and _from_server functions.  Affected file
6682           silcd/command.c.
6683
6684         * Added silc_client_get_channel_by_id_resolve to the file
6685           lib/silcclient/silcapi.h to resolve channel information by
6686           its ID.  Added also silc_client_get_channel_by_id that
6687           does not resolve it from the server.
6688
6689 Tue Jul 10 18:05:38 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6690
6691         * Added SilcServerEntry context into the client library
6692           to represent one server.  The INFO command now allocates
6693           these to save the resolved server info.  For now on the
6694           client library will also keep information about servers,
6695           connected and resolved with INFO.
6696
6697           The INFO command now allocates the SilcServerEntry context
6698           and saves the server info there.  The COMMAND_REPLY in
6699           the INFO now returns the parameters to application in
6700           same order as defined in the protocol specification.
6701
6702           The entries are cached in the client->server_cache.
6703
6704         * The INFO command is now issued after received the Client ID
6705           from the server.  Affected file lib/silcclient/client.c.
6706
6707         * The CMODE_CHANGE notify may now return also an SilcServerEntry
6708           to the application as the mode changer might be server.
6709           It is guaranteed that NULL is not returned anymore to the
6710           application.  Affected file lib/silcclient/client_notify.c.
6711
6712           The ID Type is now also passed to the application so that
6713           it can check whether the returned entry is SilcClientEntry
6714           or SilcServerEntry.
6715
6716           Added new function silc_client_get_server_by_id to return
6717           the server entry by ID.  Affected files are the
6718           lib/silcclient/silcapi.h and lib/silcclient/idlist.c.
6719
6720         * Do not create the channel in the Irssi SILC Client when issuing
6721           the JOIN command but when received the sucessful JOIN command
6722           reply.  Otherwise the channel might get created even though we
6723           could not join it.  The Affected file is
6724           irssi/src/silc/core/[silc-channels.c/client_ops.c].
6725
6726         * Fixed a channel joining bug in router.  The router must also
6727           check the channel modes, invite and ban lists etc. when serving
6728           the JOIN command sent by normal server.  Affected file is
6729           silcd/command.c.  The router now resolves the client's
6730           information from the server who sent the JOIN command if it
6731           does not know it, and processes the JOIN command only after
6732           that.
6733
6734         * Changed the SilcCommandCb to take new argument; void *context2.
6735           Affected file lib/silccore/silccommand.h
6736
6737           The second argument in the command callbacks in the server now
6738           includes the SilcServerCommandReplyContext if the command was
6739           called as pending command callback from the command reply.
6740           Otherwise it is NULL. When called as pending the status of the
6741           command reply will be checked and if it was erronous the
6742           error will be sent to the original sender of the command.
6743           This way the client always receives the error messages even
6744           though the server was actually the one who received the error
6745           when it resent the command to router, for example.  Affected
6746           files silcd/command[_reply].[ch].
6747
6748         * Fixed sending WHOWAS command's error message to client if
6749           the requested client could not be found.  It was missing.
6750           silcd/command.c.
6751
6752         * Changed the CMODE and CUMODE commands reply arguments in the
6753           protocol specification.  The Channel ID is now sent in both
6754           of the commands to identify the channel.  Implemented this
6755           new feature to the client and server.  Affected files
6756           lib/silcclient/command_reply.c and silcd/command.c.
6757
6758         * Made better checks for invite and ban lists in the JOIN
6759           command in server.  Affected file silcd/command.c.
6760
6761 Mon Jul  9 18:28:34 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6762
6763         * The server now performs the incoming host IP/DNS lookup
6764           using the silc_socket_host_lookup and thus does not block
6765           the server anymore.  Affected file silcd/server.c.
6766
6767         * Completed the multi-thread support for SILC Scheduler in
6768           the lib/silcutil/silcschedule.c.
6769
6770         * Fixed the configure.in.pre to detect the pthread correctly
6771           on various systems.
6772
6773         * Fixed a deadlock in silc_task_queue_wakeup in the file
6774           lib/silcutil/silctask.c.
6775
6776 Mon Jul  9 13:40:03 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6777
6778         * Added new function silc_schedule_wakeup that is used in
6779           multi-threaded environment to wakeup the main thread's
6780           schduler. It needs to be used when a thread adds a new task
6781           or removes a task from task queues. After waking up, the
6782           scheduler will detect the task queue changes. If threads
6783           support is not compiled in this function has no effect.
6784           Implemented the wakeup mechanism to both Unix and WIN32
6785           systems.  Affected files are lib/silcutil/silcschedule.[ch],
6786           lib/silcutil/unix/silcunixschedule.c and the
6787           lib/silcutil/win32/silcwin32schedule.c.
6788
6789         * Added new function silc_task_queue_wakeup to wakeup the
6790           scheduler by the specified task queue.  Affected file
6791           lib/silcutil/silctask.[ch].
6792
6793         * The silc_socket_host_lookup_start now wakes up the scheduler
6794           after adding the timeout task.  Affected file is
6795           lib/silcutil/silcsockconn.c.
6796
6797         * The silc_socket_host_lookup is synchronous now if the threads
6798           support is not compiled in.  However, the callback is still
6799           called asyncronously through the scheduler, anyway.  Affected
6800           file lib/silcutil/silcsockconn.c.
6801
6802 Mon Jul  9 00:24:45 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6803
6804         * Added new function silc_socket_host_lookup to perform
6805           asynchronous IP and FQDN lookups for the socket connection.
6806           Affected files lib/silcutil/silcsockconn.[ch].
6807
6808 Sun Jul  8 18:44:53 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6809
6810         * Added SILC_MUTEX_DEFINE to define the mutex on environments
6811           that may or may not compile the mutex support in.
6812
6813           Changed the silc_mutex_alloc interface. It allocates the
6814           mutex now to the sent pointer and returns TRUE or FALSE.
6815
6816           Affected file lib/silcutil/silcmutex.h.
6817
6818         * Wrote the SILC Task Queue interface to support multi-threads.
6819           Affected file lib/silcutil/silctask.[ch].
6820
6821         * Wrote the SILC Scheduler to support multi-threads.  Affected
6822           file lib/silcutil/silcschedule.c.
6823
6824 Sun Jul  8 11:16:01 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6825
6826         * Implemented the SILC Mutex API and SILC Thread API for WIN32
6827           in lib/silcutil/win32/.
6828
6829 Sun Jul  8 00:18:15 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6830
6831         * Defined SILC Mutex API and SILC Thread API and implemented
6832           them for Unix.  Affected files are
6833           lib/silcutil/silcmutex.h, lib/silcutil/silcthread.h,
6834           lib/silcutil/unix/silcunixmutex.c and
6835           lib/silcutil/unix/silcunixthread.c.
6836
6837 Sat Jul  7 14:40:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6838
6839         * Fixed the silc_server_remove_clients_by_server's channel
6840           key re-generation.  The hash table handling was incorrect
6841           and would not work with many channels.  Affected file is
6842           silcd/server.c.
6843
6844         * Fixed some memory leaks around the server code.
6845
6846         * Rewrote the silc_server_get_users_on_channel to support IPv6
6847           based Client ID's.  Affected file silcd/server.c.
6848
6849         * Defined the SILC_MESSAGE_FLAG_SIGNED to the protocol
6850           specification.  However, a separate document must be written
6851           to define the detailed signing procedure and the payload
6852           associated with the flag.  Defined the flag to the
6853           lib/silccore/silcchannel.h as well.
6854
6855 Fri Jul  6 18:26:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6856
6857         * Changed the dynamic tables to static size tables in the
6858           lib/silccrypt/silchmac.c.
6859
6860         * Removed GCC dependencies from the code.  A patch by cras.
6861
6862 Fri Jul  6 09:39:35 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6863
6864         * Do not show the error "Error receiving packet bla bla"
6865           in server if it really was not an error (-2 means that reading
6866           is pending).  Affected file silcd/server.c.
6867
6868 Thu Jul  5 21:22:32 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6869
6870         * Fixed a possible crash in silc_server_remove_clients_by_server
6871           in silcd/server.c.  Fixed there also some memory leaks.
6872
6873         * Fixed the silc_idlist_replace_client_id.  It could replace
6874           wrong key in the hash table.  Affected file silcd/idlist.c.
6875
6876         * Do not check whether there are global users on the channel
6877           if the channel->global_users is FALSE.  Affected functions
6878           silc_server_remove_from_one_channel and
6879           silc_server_remove_from_channels in silcd/server.c.  Also,
6880           do not check if the removed client is local as we can be
6881           sure that global client was not removed from the channel
6882           and checking for global users is not needed.
6883
6884         * The silc_server_remove_clients_by_server now re-generates
6885           the channel keys correctly for those channels that had
6886           clients removed from them.  Affected file silcd/server.c.
6887
6888 Tue Jul  3 11:39:20 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6889
6890         * Found the reason of random crashes in the server.  We weren't
6891           ignoring the SIGPIPE signal (which can be sent in write())
6892           and it crashed the server.  Affected file silcd/silcd.c.
6893
6894 Fri Jun 29 20:05:25 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6895
6896         * Assure that sock->user_data is not NULL in the function
6897           silc_server_packet_send in silcd/packet_send.c.
6898
6899         * Disconnect the remote connection if it could not be added
6900           to any ID lists in the server.  The affected file is
6901           silcd/server.c.
6902
6903         * Check in silc_server_packet_send[_real/dest] that the
6904           socket is not disconnecting and ignore the data if it is.
6905           Affected file silcd/packet_send.c.
6906
6907         * Define inline to __inline on native WIN32 compilation.
6908           Affected file includes/silcwin32.h.
6909
6910         * Added some explicit type casts for inline code since MSVC
6911           require them.  Affected files lib/silcutil/silcbuffer.h,
6912           lib/trq/silcdlist.h and lib/trq/silclist.h.
6913
6914         * Print warning in log files from now on if the packet
6915           decryption fails.  Affected file silcd/server.c.
6916
6917 Thu Jun 28 21:30:39 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6918
6919         * Changed the `say' client operation's interface to accept
6920           new `type' argument to indicate the type of the message sent
6921           by the library.  The application may filter the library's
6922           messages according the type.  The affected file is the
6923           lib/silcclient/silcapi.h.
6924
6925         * Added two new functions to lib/silcclient/silcapi.h:
6926           silc_client_del_client and silc_client_del_client_by_id.
6927           Affected file lib/silcclient/idlist.c.
6928
6929         * Moved the clientincludes.h from includes/ to silc/ and
6930           serverincludes.h from includes/ to silcd/.
6931
6932         * The modes for the CMODE and CUMODE are now passed as
6933           uint32 for application with COMMAND_REPLY.  The affected
6934           file is lib/silcclient/command_reply.c.
6935
6936 Wed Jun 27 22:24:47 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6937
6938         * /WHOIS without arguments shows client's own information.
6939           Affected file lib/silcclient/command.c.
6940
6941         * Changed PING to not accept any arguments.  The specs
6942           says that client can ping only the connected server so
6943           requiring an argument is not needed.  Affected file is
6944           lib/silcclient/command.c.
6945
6946 Wed Jun 27 00:10:33 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6947
6948         * Fixed a fatal bug in private message sending and reception
6949           encryption and decryption when using private message keys.
6950           The implementation was incorrect and did not follow the
6951           specification.  It causd that some of the message were
6952           lost since it did not use the sending and receiving keys
6953           as the protocol suggests.  This has been fixed and will cause
6954           incompatibilities with older clients when sending private
6955           message encrypted with private message keys.  Affected files
6956           lib/silcclient/client_prvmsg.c, lib/silcclient/client_keyagr.c
6957           and various other in Irssi SILC Client.
6958
6959           Added `responder' boolean argument to the functions
6960           silc_client_add_private_message_key[_ske] to indicate when
6961           the key is added as responder or initiator of the key
6962           negotiation.
6963
6964 Tue Jun 26 19:23:07 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6965
6966         * Removed the silc_ske_check_version function and created
6967           a SilcSKECheckVersion callback.  Added also a function
6968           silc_ske_set_callbacks that is now used to set all SKE
6969           callbacks.  The callback functions are not given to
6970           the SKE functions anymore, but this function is used to
6971           set the callbacks.
6972
6973         * Fixed the WIN32 DLL generation in lib/Makefile.am.pre.
6974
6975         * Added `silc_version' argument to the silc_client_alloc
6976           to define the version of the application for the library.
6977           The library will use the version string to compare it
6978           against the remote host's (usually a server) version
6979           string.  Affected file lib/silcclient/silcapi.h
6980
6981         * Added the KE protocol context to Key Agreement context
6982           in client library so that we can abort the SKE if it
6983           is in process when we get timeout.  Affected file is
6984           lib/silcclient/client_keyagr.c.
6985
6986         * Do not resolve the client ID forever if it returns in the
6987           first time that such client does not exist.  This was done
6988           for example with private message.  Affected file is
6989           lib/silcclient/client_prvmsg.c.
6990
6991 Mon Jun 25 21:42:51 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6992
6993         * Do not add regex.h for WIN32.  The affected file
6994           includes/silcincludes.h.
6995
6996         * Added WIN32 DLL generation to lib/Makefile.am.pre.  It might
6997           not work yet 100%.  It generates the DLL's automatically
6998           when compiling with --with-win32 under cygwin.
6999
7000 Sun Jun 24 19:49:23 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7001
7002         * lib/contrib/regex.c is not compiled on WIN32.
7003
7004         * Added silc_net_get_socket_opt function to the
7005           lib/silcutil/silcnet.h.
7006
7007         * Added includes/silcwin32.h for WIN32 specific includes
7008           and definitions.
7009
7010         * Do not use ptime structure or any of the posix process
7011           functions on WIN32 in lib/silccrypt/silrng.c.
7012
7013         * Added silc_gettimeofday to provide generic function
7014           for struct timeval on all platforms.  Added the function
7015           to lib/silcutil/silcutil.h.
7016
7017 Sun Jun 24 12:19:52 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7018
7019         * Moved the lib/silccore/silcsockconn.[ch] to the utility
7020           library as they clearly belong there.  As a plus side we
7021           can make the actual socket connection routines platform
7022           specific.
7023
7024           Added also new generic function silc_socket_read and
7025           silc_socket_write (that used to be silc_packet_[read/write].
7026           The implementation of these are platform specific.
7027
7028         * Added WIN32 specific routines of silc_socket_[read/write]
7029           to lib/silcutil/win32/silcwin32sockconn.c.
7030
7031 Sat Jun 23 16:01:00 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7032
7033         * Added preliminary support for native WIN32 compilation under
7034           cygwin (using the -mno-cygwin option for GCC) to the
7035           ./configure.in.pre.  The --with-win32 now prepares the
7036           compilation for native WIN32.
7037
7038         * Rewrote the SILC Scheduler interface in the file
7039           lib/silcutil/silcschedule.h.  The scheduler is now context
7040           based and does not have anymore any global static scheduler.
7041           Moved the Unix scheduler to the lib/silcutil/unix/ directory
7042           and created lib/silcutil/win32 directory for WIN32 based
7043           scheduler.
7044
7045         * Added Unix specific network routines to the
7046           lib/silcutil/unix/silcunixnet.c and the old
7047           lib/silcutil/silcnet.c includes now only generic routines.
7048
7049           Added WIN32 specific network routines to the
7050           lib/silcutil/win32/silcwin32net.c.
7051
7052         * Added Unix specific utility functions from the
7053           lib/silcutil/silcutil.c to lib/silcutil/unix/silcunixutil.c.
7054
7055         * Added WIN32 SILC Scheduler to the file
7056           lib/silcutil/win32/silcwin32schedule.c. The code is of course
7057           untested.
7058
7059 Fri Jun 22 10:44:14 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7060
7061         * Do not handle JOIN notify in the server if the target client
7062           is not registered (idata->registered == FALSE).  The affected
7063           file is silcd/packet_receive.c.
7064
7065         * Update the nickrec->founder in event_cumode in the Irssi SILC
7066           client.  Affected file irssi/src/silc/core/silc-channels.c.
7067
7068         * Fixed the CUMODE_CHANGE notify handling in the server when
7069           server and router are announcing their clients on channels.
7070           Now the mode changes are saved and notified correctly.  The
7071           affected file is /silcd/packet_receive.c.
7072
7073         * Fixed silc_idlit_replace_[server/client/channel]_id functions.
7074           They really did not replace the cache entry in the ID Cache.
7075           Now they do that.  Affected file silcd/idlist.c.
7076
7077         * Fixed the KICK notify handling in the Irssi SILC client to
7078           update the channel records so that the kicked client does not
7079           appear to be on the channel.  The affected file is
7080           irssi/src/silc/core/silc-channels.c.
7081
7082         * Always update the conn->current_channel when executing command
7083           on a channel.  Affected file irssi/src/silc/core/silc-servers.c.
7084
7085         * Fixed the KILL notify handling in Irssi SILC client to remove
7086           the killed client on all channels.
7087
7088 Thu Jun 21 17:10:08 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7089
7090         * Fixed the silc_parse_command_line to remove extra spaces
7091           from the start and end of the arguments.  Affected file is
7092           lib/silcutil/silcutil.c.
7093
7094         * Cancel and free any active protocol in the function
7095           silc_server_close_connection.  Affected file silcd/server.c.
7096
7097         * Cancel and free any active protocol in the function
7098           silc_client_close_connction.  Affected file is
7099           lib/silcclient/client.c.
7100
7101         * Do not execute the KILL command for clients that are in
7102           history (ie. they are not in the network).  Affected file is
7103           silcd/command.c.
7104
7105         * Fixed KILL notify handling, client does not crash anymore.
7106           Affected file irssi/src/silc/core/silc-channels.c.
7107
7108         * Reduced the default packet buffer size from 2048 to 1024 in
7109           lib/silccore/silcpacket.c.
7110
7111         * Added SILC_SKE_STATUS_FREED SKE status type and a reference
7112           counter to the SKE context that is incresed when the SKE library
7113           performs async operation outside the library.  If the outside
7114           process frees the SKE context and FREED status will be set
7115           and the library will detect after the sync operation that the
7116           libary is freed.  The affected files are
7117           lib/silcske/silcske[_status].[ch].
7118
7119         * Resolve the client entry information in the function
7120           silc_client_channel_message to assure that NULL pointer is not
7121           passed as client entry to the application. */
7122
7123         * Fixed the task timeout calculation to assure that there is
7124           never negative timeouts.  The affected file is
7125           lib/silcutil/silcschedule.c.
7126
7127         * Fixed the channel user mode notification sending in server.
7128           It was sent point-to-point to the router (or to server by router)
7129           but it needs to be destined to a channel.  The routines now
7130           supports sending the channel user mode notifys to the channels
7131           when announcing clients and channels.  Affected files are
7132           silcd/server.c and silcd/packet_receive.c.
7133
7134         * Fixed the CHANNEL_CHANGE notify handling in the client libary.
7135           It did not actually replace the old channel entry in the cache.
7136           Affected file lib/silcclient/client_notify.c.
7137
7138 Tue Jun 19 22:10:36 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7139
7140         * Fixed a possible crash in silc_packet_send_prepare.  It now
7141           assures always that there is enough space in the buffer and
7142           at the tail area of the buffer (for MAC).
7143
7144           Fixed the inbound buffer reallocation in silc_packet_read.
7145           It was old code and did not handle the reallocation correctly.
7146           Affected
7147
7148           The affected file is lib/silccore/silcpacket.c.
7149
7150         * Fixed buffer overflow in silc_parse_nickname in the file
7151           lib/silcutil/silcutil.c.
7152
7153 Tue Jun 19 13:40:09 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7154
7155         * make install generates new server keys only if there is not
7156           keys already.
7157
7158 Mon Jun 18 18:49:07 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7159
7160         * Set SILC_MESSAGE_FLAG_NOREPLY when sending the away message.
7161           Added check that if the NOREPLY is set then we will not send
7162           the away message.  This avoids infinite loop of away messages
7163           if both clients are away.  The affected file is
7164           lib/silcclient/client_prvmsg.c.
7165
7166         * Fixed client crash if /NICK was given without arguments.
7167           Affected file lib/silcclient/command.c.
7168
7169         * Server does not send the invite list in INVITE command back
7170           to the client if the list was not altered.  Added this notion
7171           to the protocol spec as well.  Affected file silcd/command.c.
7172
7173           Fixed possible crash in INVITE command by checking the
7174           value of silc_server_get_client_route command.
7175
7176         * Fixed the INVITE notify type handling.  The arguments are now
7177           taken in correct order and client does not crash.  The affected
7178           file is irssi/src/silc/core/silc-channels.c.
7179
7180           Removed the "Inviting xxx to channel" message from the
7181           client library away and let the application handle it.
7182           Affected file lib/silcclient/command.c.  Added that message
7183           to Irssi SILC client's message formats.
7184
7185         * Fixed CMODE command crash in client.  It now checks the
7186           amount of arguments correctly and does not crash.  The affected
7187           file is lib/silcclient/command.c.
7188
7189         * Do not create new channel automatically in silc_channels_join
7190           but check whether the channel by that name already exists.
7191           Affected file irssi/silc/core/silc-channels.c.
7192
7193         * Do not send the SERVER_SIGNOFF to router if the disconnected
7194           entity was the router.  Affected file silcd/server.c.
7195
7196         * Added the handling of the SERVER_SIGNOFF notify to the Irssi
7197           SILC client as it was missing from there.
7198
7199           Added the handling of the KICK notify to the Irssi SILC client
7200           as it was missing.  Added "you have been kicked" message to
7201           Irssi SILC client's message modules formats.
7202
7203           Added the handing of the KILL notify to the Irssi SILC client
7204           as it was missing.  Added the kill message module formats
7205           as well.
7206
7207           The affected file is irssi/src/silc/core/silc-channels.c.
7208
7209         * The router did not save the channel mode the server announced.
7210           Affected file silcd/packet_receive.c.
7211
7212         * Fixed a possible crash in INFO command in server.  If the
7213           server did not provide the server info it crashed.  Affected
7214           file silcd/command.c.
7215
7216 Sun Jun 17 15:26:05 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7217
7218         * Fixed the GETKEY command in the server to check also the
7219           global list.  Otherwise the GETKEY would not work correctly
7220           in normal SILC server.  Affected file silcd/command.c.
7221
7222 Sat Jun 16 18:00:00 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7223
7224         * Fixed GETKEY crash, it crashed if the command did not succseed.
7225
7226 Tue Jun 12 21:36:18 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7227
7228         * Redefined the SILC MP API in lib/silcmath/silcmp.h. The API
7229           is now real and not just an macro interface to GMP.
7230
7231           Removed the entire GMP from the source tree and imported new
7232           NSS MPI library instead.  Reason for removing GMP is that it is
7233           extremely large and compiles extremely slow.  The NSS MPI
7234           is only a few files and compiles in less than 10 seconds.
7235           The speed is also about the same as GMP.  The MPI is imported
7236           to lib/silcmath/mpi.
7237
7238           If the system has GMP installed we will still use the GMP.
7239           If it is not then the NSS MPI will be compiled.
7240
7241 Mon Jun 11 18:07:24 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7242
7243         * Merged a long nickname (127 characters long) crash bugfix from
7244           Irssi CVS tree.  Affected file irssi/src/core/misc.c.
7245
7246         * Merged a freed memory reference bugfix from Irssi CVS tree.
7247           Affected file irssi/src/core/commands.c.
7248
7249 Sun Jun 10 16:08:35 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7250
7251         * Added the server's public key sving and verification to the
7252           server when performing the SKE.  This was missing and the
7253           remote server's (or router's) public key was accepted without
7254           checking whether we have it previously or trust it at all.
7255           Affected file silcd/protocol.c.
7256
7257 Sat Jun  9 20:17:30 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7258
7259         * Check in the silc_server_timeout_remote if protocol is active
7260           and make sure that the protocol's final callback is called so
7261           that all memory if freed.  Affected file silcd/server.c.
7262
7263 Sat Jun  9 12:51:27 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7264
7265         * silc_server_whois_send_reply crashed the server if the nickname
7266           was 127 characters long.  Affected file silcd/command.c.
7267
7268 Thu Jun  7 16:29:56 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7269
7270         * Added sanity check to the silc_server_new_client. If the hostname
7271           is provided inside username then check that the provided hostname
7272           really is the same as the resolved one.  If the hostname was not
7273           resolved then check it from the public key.  Affected file is
7274           silcd/packet_receive.c.
7275
7276         * Fixed a fatal bug in Irssi SILC client. Do not send QUIT command
7277           if the server disconnected us and the connection is not valid
7278           anymore.  Affected file irssi/src/silc/core/silc-channels.c.
7279
7280         * Moved the silc_client_[chmode|chumode|chumode_char] away from
7281           the library to the lib/silcutil/silcutil.[ch].
7282
7283 Thu Jun  7 08:57:16 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7284
7285         * Close log file after open.  Affected file
7286           lib/silcutil/silclog.c.
7287
7288         * Check whether sock == NULL in silc_client_send_packet and return
7289           if it is.  Affected file lib/silcclient/silcclient.c.
7290
7291         * Check rec->entry == NULL in the Irssi SILC Client before
7292           sending the channel message.  Affecte file is
7293           irssi/src/silc/core/silc-servers.c.
7294
7295 Tue Jun  5 08:08:21 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7296
7297         * Merged a splitted window bugfix from Irssi CVS tree.  The
7298           affected file is irssi/src/fe-text/textbuffer-view.c.
7299
7300         * Fixed the ME, ACTION and NOTICE printing in Irssi Client.
7301           It did not print nickname.
7302
7303         * Improved the distributions system a bit.
7304
7305 Mon Jun  4 17:57:16 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7306
7307         * Merged /WINDOW bugfix from irssi CVS tree. Affected file is
7308           irssi/src/fe-text/gui-window.c.
7309
7310         * Fixed a fatal bug in Irssi SILC client. Crashed if sent message
7311           to in-active server.  The affected file is
7312           irssi/src/silc/core/client_ops.c.
7313
7314         * Resolve the client in USERS command reply if the entry does
7315           not have username resolved.  The affected file is
7316           lib/silcclient/command_reply.c.  Also, changed the IDENTIFY
7317           command to WHOIS command to really resolve stuff.  The USERS
7318           is not used any more in any critical section so WHOIS can
7319           be used even though it might be slower than IDENTIFY.
7320
7321         * Changed the lib/silcutil/silchashtable.h header to ROBODoc
7322           format.
7323
7324 Sun Jun  3 14:21:32 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7325
7326         * Changed the protocol API a bit more consistent in the
7327           lib/silccore/silcprotocol.[ch].
7328
7329         * Changed the following headers to ROBODoc format:
7330
7331                 lib/silccore/silcpayload.h
7332                 lib/silccore/silcprotocol.h
7333                 lib/silccore/silcsockconn.h
7334
7335           All core library headers are now formatted.
7336
7337 Sat Jun  2 10:45:09 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7338
7339         * Fixed a bug in Irssi SILC client; do not show that you are
7340           server/router operator if you really are not.  Affected file is
7341           irssi/src/silc/core/client_ops.c.
7342
7343         * Renamed silc_command_free_payload to silc_command_payload_free.
7344           Affected file lib/silccore/silccommand.h
7345
7346         * Added silcmath.h to include the prototoypes of various routines
7347           in the lib/silcmath.  Removed the old modinv.h, mpbin.h and
7348           silcprimegen.h.
7349
7350         * Changed the following headers to ROBODoc format:
7351
7352                 lib/silccore/silcchannel.h
7353                 lib/silccore/silccommand.h
7354                 lib/silccore/silcid.h
7355                 lib/silccore/silcidcache.h
7356                 lib/silccore/silcmode.h
7357                 lib/silccore/silcnotify.h
7358                 lib/silccore/silcpacket.h
7359                 lib/silcmath/silcmath.h
7360
7361 Fri Jun  1 22:19:37 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7362
7363         * Added checking to the server code not to start the server if
7364           ciphers and stuff are not configured properly.  Affected files
7365           silcd/serverconfig.[h] and silcd/server.c.
7366
7367         * Changed the layout of the header files of the public interfaces
7368           in the SILC libraries.  The new layout supports ROBODoc
7369           documentation tool (and some others) so that it is easy to create
7370           a library reference manual.  All the other headers and source
7371           code must still follow the CodingStyle document.  Also source
7372           code must not include these ROBODoc stuffs, only the headers.
7373           Furthermore, all public interface headers must now be named
7374           by using `silc' prefix, example: silcapi.h, silccipher.h.
7375           Some files were renamed due to this.  All the other headers
7376           must not be used as public interfaces.  I will update the
7377           CodingStyle document later.  Changed following headers, so far:
7378
7379                 lib/silcclient/silcapi.h
7380                 lib/silccore/silcauth.h
7381                 lib/silccore/silcprivate.h
7382                 lib/silccrypt/silcdh.h
7383
7384 Fri Jun  1 10:28:09 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7385
7386         * Updated TODO.
7387
7388         * Removed silc_client_packet_send_flush from the client library
7389           as it is not needed.  Affected file lib/silcclient/client.[ch].
7390
7391         * Added printing of message of unresolved authentication method
7392           to the Irssi SILC client.  Added it to the module formats.
7393           Removed the same message from the client library.
7394
7395 Thu May 31 13:57:33 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7396
7397         * Added new distribution feature, DISTLABEL.  Every distribution
7398           can define own preprocessor label that can be used in the
7399           source code.  For example: #ifdef SILC_DIST_CLIENT.  Affected
7400           file distributions, acconfig.h.pre and prepare.
7401
7402 Tue May 29 22:16:40 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7403
7404         * Added Makefile.defines_int to include the actual definitions
7405           for Makefile.defines.in.  Tested the new distribution system,
7406           created distributions and tested installation.
7407
7408         * Added AWAY message printing to the Irssi SILC client.  Added
7409           the messages to the irssi/src/fe-common/silc/module-formats.[ch].
7410
7411         * Added SCONNECT command to call the SILC's CONNECT command.
7412           Cannot use CONNECT directly since Irssi uses that internally.
7413           Affected file irssi/src/silc/core/silc-servers.c.
7414
7415           Added ACTION local command.  It is same as ME command but takes
7416           the channel as mandatory argument.
7417
7418           Rewrote some of the Irssi's help files to suite for SILC
7419           protocol.
7420
7421 Mon May 28 19:05:22 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7422
7423         * Added Makefile.defines[.in] that should for now on be included
7424           in all Makefile.am file in the source tree.  That file includes
7425           all common compilation definitions for SILC source tree.
7426
7427 Mon May 28 10:30:51 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7428
7429         * Minor changes to the ./prepare script to change the package
7430           name according the distribution name to the configure.in.
7431
7432 Sun May 27 22:24:57 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7433
7434         * Created new distribution system.  Added file `distributions'
7435           that defines all the distributions that can be created out of
7436           the SILC source tree.  The ./prepare script now reads that
7437           file to determine how to prepare the distributions.  The
7438           first argument to the ./prepare is the name of the distribution
7439           and second is the version of the distribution.  If given
7440           without arguments it creates the default (toolkit) distribution
7441           with the default version (defined in ./prepare).
7442
7443           All Makefile.am files that are subject to the distributions
7444           are now named as Makefile.am.pre.  These are ./Makefile.am
7445           and lib/Makefile.am.  Others may be changed later.
7446
7447 Sun May 27 15:57:17 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7448
7449         * Added invite list, ban list, some key management and connection
7450           error message printing to module formats in the Irssi SILC client.
7451
7452         * Added new silc_client_set_away_message to set the away message
7453           that is back to the person who sent private message.  The
7454           affected file lib/silcclient/silcapi.h and the
7455           lib/silcclient/client_prvmsg.c.
7456
7457 Sun May 27 12:39:48 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7458
7459         * Fixed the private message sending in the Irssi SILC client,
7460           added local command KEY to the Irssi SILC client.
7461
7462           Added key management and key agreement message formats to the
7463           irssi/src/fe-common/silc/module-formats.[ch].
7464
7465           Added USERS (alias WHO) printing, server/router operator
7466           indication and LIST command printing to the module formats.
7467
7468 Sat May 26 17:43:42 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7469
7470         * Fixed channel joining notify handling, cumode notify handling
7471           from Irssi SILC client.
7472
7473         * Added SILC specific module-formats to the Irssi SILC client so
7474           that SILC specific message hilighting, colors etc is possible.
7475           Affected file irssi/src/fe-common/silc/module-formats.[ch].
7476
7477           Added channel mode, channel user mode, actions, notices,
7478           whois and whowas printing to the the module-formats.c.
7479
7480         * Fixed a bug in channel deletion in the server.  The channel
7481           is not left to the cache even if the channel founder auth mode
7482           is set when there are no users anymore on the channel.  Affected
7483           file silcd/server.c.
7484
7485         * The silc_net_localhost now resolves the entire hostname including
7486           the domain name.  Affected file lib/silcutil/silcnet.c.
7487
7488 Sat May 26 12:13:37 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7489
7490         * Changed the ask_passphrase client operation to be ascynchronous.
7491           It has now a completion callback and a context that the
7492           application must call after it has got the passphrase from
7493           the user.  Affected files lib/silcclient/silcapi.h,
7494           lib/silcclient/protocol.c, lib/silcclient/command.c and
7495           silc/client_ops.c.
7496
7497           Added SilcAskPassphrase callback that the application calls
7498           to deliver the passphrase to the library.
7499
7500         * Changed the SKE protocol's SilcSKEVerifyCb to be asynchronous.
7501           The public key verification and especially a certificate
7502           verification is asynchronous procedure.
7503
7504           Added new SILC_SKE_STATUS_PENDING status to indicate the
7505           request is pending and a callback will be called to finalize
7506           the request.
7507
7508           Added also SILC_SKE_STATUS_PUBLIC_KEY_NOT_PROVIDED status to
7509           indicate that remote end did not send its public key (or
7510           certificate), even though we require it.  Added check for this
7511           condition in the SKE.  This was a security bug, now fixed.
7512
7513           Defined new SilcSKEVerifyCbCompletion callback that is called
7514           when the verification process is completed.
7515
7516           The affected files lib/silcske/silcske_status.h and
7517           lib/silcske/silcske.[ch].
7518
7519         * Changed the verify_public_key client operation to be async
7520           as well.  Defined SilcVerifyPublicKey callback that is used to
7521           indicate the success of the public key verification process.
7522
7523           Changed the server and client to use the new async client
7524           operations.
7525
7526         * Changed the Irssi SILC client's internal scheduler to be called
7527           twice as many times as it used to be.  As a result the client
7528           should be a bit faster now.  Affected file is
7529           irssi/src/silc/core/silc-core.c.
7530
7531         * Added support to Irssi SILC client of asynchronous public key
7532           verification and passphrase inquiry.  Affected file is
7533           irssi/src/silc/core/silc-core.c.
7534
7535 Fri May 25 14:38:38 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7536
7537         * Do not say "You have left channel %s" in client library.
7538           Moved it to the application.  Affected files are
7539           lib/silcclient/command.c and silc/client_ops.c.
7540
7541         * Fixed silc_client_get_clients.  Command context was not
7542           duplicated and was freed memory in the callback.  Affected
7543           file lib/silcclient/idlist.c.
7544
7545         * Do not say "you are now talking..." on JOIN command in the
7546           client library.  The appliation must handle it.
7547
7548         * Do not say ".. changed topic to" in command reply in the
7549           client libary.  The application must handle it.
7550
7551         * Fixed TOPIC command sending in the client library.
7552
7553         * Fixed a memory leak in silc_client_command_free in the file
7554           lib/silcclient/command.c.
7555
7556 Thu May 24 19:08:55 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7557
7558         * Imported a modified version of Irssi client to the source tree.
7559           The Irssi will be used to create a new client called
7560           Irssi SILC.  Imported to irssi/.
7561
7562           Added silc_core_init_finish function to the Irssi.  Affected
7563           file irssi/configure.in.
7564
7565           A lot changes in the Makefile.ams around the irssi tree.
7566
7567 Tue May 22 22:23:49 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7568
7569         * Do not rehash if the new size is same as the old size of the
7570           hash table, in the silc_hash_table_rehash*.  The affected file
7571           lib/silcutil/silchashtable.c.
7572
7573         * Replaced hash_table_del_by_context calls from the server
7574           (when channel->user_list and client->channels) to the
7575           hash_table_del as it is sufficient and faster.
7576
7577 Tue May 22 17:27:16 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7578
7579         * Added silc_hash_table_list, silc_hash_table_get and the
7580           SilcHashTableList structure to provide an alternative way to
7581           traverse the hash table.  The affected files are
7582           lib/silcutil/silchashtable.[ch].
7583
7584         * Changed the server's idlist routines to use the hash table
7585           routines to optimize the code.
7586
7587 Mon May 21 21:46:20 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7588
7589         * Replaced the client entry's `channel' list and channel entry's
7590           `user_list' list to hash tables for optimized lookup.  Changed
7591           the code to use the hash table interface around the code.
7592           Affected file lib/silcd/idlist.[ch].
7593
7594         * Added `auto_rehash' boolean argument to the function
7595           silc_hash_table_alloc to indicate whether the hash table should
7596           auto-rehash when it thinks is appropriate time.  It will
7597           increase the hash table size if the there is twice as much
7598           entries in the table than the size of the table, and will
7599           decrease the size if there are twice as less entries than
7600           the size of the table.
7601
7602 Mon May 21 09:51:11 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7603
7604         * Fixed silc_xxx_get_supported to not crash at some circumstances.
7605
7606 Sun May 20 13:45:58 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7607
7608         * silc_idcache_purge_by_context deletes the entry now by context
7609           as it is supposed to do.  Affected file lib/silccore/idcache.c.
7610
7611         * Send the ERR_NO_SUCH_NICK in the WHOIS command reply if the
7612           client is not anymore valid (WHOWAS givens the info) and not
7613           the ERR_NO_SUCH_CLIENT_ID if the nickname still exists.
7614
7615 Sat May 19 16:30:03 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7616
7617         * Removed the `data' and `data_len' arguments from the ID Cache
7618           interfaces and added `name' argument.  ID Cache does not handle
7619           anymore the binary data only a names associated with given ID.
7620
7621         * When hashing a Client ID with silc_hash_id the entire ID is
7622           not hashed anymore, instead only the hash of the Client ID is
7623           hashed.  This way we can access the Client ID from the cache
7624           with Client ID but with the hash of the ID (which is a hash of
7625           the nickname) as well without any difference in performance.
7626
7627           Added also silc_idcache_find_by_id_one_ext to do one on one
7628           searching when we have the actual ID.  Added also function
7629           silc_hash_client_id_compare.  The affected files are
7630           lib/silccore/idcache.[ch] and lib/silcutil/silcutil.[ch].
7631
7632         * When hashing the name associated with a ID it is always done
7633           in lowercase.  This way we can access the cache without worrying
7634           about case-sensitivity, even though, for example nicknames are
7635           case sensitive.
7636
7637         * Fixed a bug in server with channel message sending.  It put
7638           wrong ID type as destination ID.  The affected file
7639           silcd/packet_send.c.
7640
7641         * silc_idcache_del_by_context now deletes from all hash tables
7642           by context.  Affected file lib/silccore/idcache.c.
7643
7644 Fri May 18 17:42:00 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7645
7646         * Changed the client library to use the new ID Cache interface.
7647           Changes around the source tree.
7648
7649         * Added silc_hash_table_rehash_ext to rehash with specific
7650           hash function.  Affected file lib/silcutil/silchashtable.[ch].
7651
7652         * Added silc_hash_string_compare to compare two strings in the
7653           hash table.  Affected file lib/silcutil/silcutil.[ch].
7654
7655 Fri May 18 11:18:45 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7656
7657         * Added new function silc_idcache_del_by_context into the
7658           lib/silccore/idcache.[ch].
7659
7660         * Changed the server's ID list routines to use the new ID Cache
7661           interface.  Changes around the source tree.
7662
7663 Fri May 18 08:35:31 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7664
7665         * Added silc_hash_table_del[_by_context]_ext functions in to the
7666           lib/silcutil/silchashtable.[ch].
7667
7668           Removed silc_hash_table_find_all* routines and added new
7669           silc_hash_table_find_foreach to replace them.
7670
7671           Added silc_hash_table_replace_ext function as extended
7672           replacing function.  Separated the simple hash table interface
7673           from the extended hash table interface in the file
7674           lib/silcutil/silchashtable.h.
7675
7676         * Fixed minor bugs and changed it to use some of the new
7677           hash table functions in lib/silccore/idcache.c
7678
7679 Thu May 17 18:15:12 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7680
7681         * Added new function silc_hash_table_find_all to return all keys
7682           in the hash table by the specified key.  As the hash table is
7683           collision resistant it also makes it possible to have several
7684           duplicate keys in the hash table.  This function may be used to
7685           find all of the keys from the hash.
7686
7687           Added user_context arguments to the SilcHashFunction,
7688           SilcHashCompare and SilcHashDestructor to deliver user specified
7689           context.
7690
7691           Added new fuctions silc_hash_table_find[_all]_ext to do
7692           extended lookup with specified hash and compare functions and
7693           specified user contexts.
7694
7695           Added new function silc_hash_table_add_ext to add the key
7696           with specified hash function and user context.
7697
7698           Added new function silc_hash_table_foreach to traverse all
7699           entrys in the hash table.  Added SilcHashForeach callback
7700           function.
7701
7702           Added new function silc_hash_table_del_by_context to delete
7703           the entry only if the context associated with the key matches.
7704
7705           Affected files are lib/silcutil/silchashtable.[ch].
7706
7707         * Removed silc_hash_[server/client/channel]_id and added just
7708           silc_hash_id to the lib/silcutil/silcutil.[ch].  Added also
7709           silc_hash_id_compare to compare two ID's using as the hash table
7710           comparison function.  Added also silc_hash_data to hash
7711           binary data and silc_hash_data_compare to compare it.
7712
7713         * Removed silc_idlist_find_client_by_hash as it is not needed
7714           anymore.  Affected file silcd/idlist.[ch].
7715
7716         * Rewrote the entire ID Cache system (in lib/silccore/idcache.[ch])
7717           to use internally the SilcHashTable.  The new ID Cache is a lot
7718           faster than the old one.  Some of the ID Cache interface was also
7719           rewritten and obsolete and stupid functions were removed.
7720
7721 Wed May 16 23:03:30 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7722
7723         * Added entry_count field to the SilcHashTable to keep the number
7724           of the entries in the table.  Implemented the function
7725           silc_hash_table_rehash.  Added new function
7726           silc_hash_table_count.  Affected file lib/silcutil/silchashtable.c.
7727
7728           Fixed a minor bug in silc_hash_table_free.
7729
7730         * Added silc_hash_string, silc_hash_uint, silc_hash_ptr,
7731           silc_hash_client_id, silc_hash_server_id and silc_hash_channel_id
7732           into the lib/silcutil/silcutil.[ch].
7733
7734 Wed May 16 20:02:47 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7735
7736         * Implemented a collision resistant hash table into the
7737           lib/silcutil/silchashtable[ch].  See the header and the source
7738           for the SilcHashTable API.
7739
7740 Tue May 15 22:05:46 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7741
7742         * Merged dotconf version 1.0.2 into lib/dotconf.
7743
7744 Sun May 13 19:32:09 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7745
7746         * Do not compile anything in lib/silcsim/* if the SIM support
7747           is not enabled.  The tree should now compile without problems
7748           under cygwin.
7749
7750 Thu May 10 22:49:51 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7751
7752         * Compiled the SILC under cygwin.  Compiled and tested briefly
7753           without problems.  More tests needed.  The SIMs didn't compile
7754           though.
7755
7756         * Added various #ifdef HAVE_* stuff to lib/silccrypt/silrng.c.
7757
7758         * Fixed possible crash in silc_get_username in the
7759           lib/silcutil/silcutil.c.
7760
7761 Tue May  8 09:04:03 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7762
7763         * Fixed a va_arg in silc/client_ops.c.
7764
7765         * Oops, RC5 routines were named AES and caused some problems
7766           when not using SIM's.  Affected file lib/silccrypt/rc5.c.
7767
7768 Sun May  6 13:59:48 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7769
7770         * Added new SilcIDIP structure into the lib/silccore/id.h and
7771           replaced the old `ip' fields from all SILC ID's to that type.
7772           This is a step towards IPv6 support.
7773
7774           The silc_id_get_len takes now the ID as an extra argument.
7775           The silc_id_id2str, silc_id_str2id and silc_id_dup now supports
7776           both IPv4 and IPv6 based ID's.
7777
7778           The affected files are lib/silccore/id.[ch] and other files
7779           around the tree using these routines.
7780
7781         * Removed the ID length arguments in server from various
7782           silc_server_send_notify_* routines -> they are not needed
7783           anymore.
7784
7785 Sat May  5 13:56:33 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7786
7787         * Fixed memory leak in silc_encode_pem_file in the file
7788           lib/silcutil/silcutil.c.
7789
7790 Thu May  3 21:23:50 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7791
7792         * Check minor version as well in the SKE.  Affected files are
7793           silcd/protocol.c and lib/silcclient/protocol.c.
7794
7795         * Added --identifier option to the server so that an identifier
7796           can be when creating the public key for the server.  Affected
7797           file is silcd/silcd.c.
7798
7799         * Fixed minor decoding bug in silc_pkcs_decode_identifier in
7800           lib/silccrypt/silcpkcs.c.
7801
7802 Wed May  2 20:50:49 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7803
7804         * Register default ciphers and stuff when using -C option with
7805           the server.  Affected file sildc/silcd.c.
7806
7807         * Put back the servers public key filename format, it is better
7808           than the new one.  For now, the client keys are saved with the
7809           new filename format.  The affected file silc/client_ops.c.
7810
7811         * Implemented the Cipher API for the rest of the ciphers that
7812           did not implement it or implemented it the wrong way.
7813
7814 Wed May  2 13:31:26 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7815
7816         * Register default ciphers and stuff when using the -S option
7817           in the client.  Affected file silc/silc.c.  Same also when
7818           creating new key pair with -C option.
7819
7820 Tue May  1 14:18:13 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7821
7822         * Fixed the silc_verify_public_key client operation function to
7823           save the public keys differently.  The fingerprint is now
7824           used as filename and not the hostname.  This way also the
7825           client keys are saved uniquely and not with hostnames.  The
7826           affected file is silc/client_ops.c.
7827
7828         * Trimmed the silc_hash_fingerprint function to remove extra
7829           whitespaces from the end of the fingerprint.  The affected
7830           file is lib/silccrypt/silchash.c.
7831
7832         * Updated TODO.
7833
7834         * Added silc_cipher_register_default function to register all
7835           default ciphers.  It can be used when configuration files
7836           does not exist and the application does not want any specific
7837           ciphers in any specific order.
7838
7839           The SilcDList is now used as silc_cipher_list dynamically
7840           allocated cipher list.  Removed the static list all together
7841           and now all ciphers must be allocated to the dynamic list.
7842           The silc_cipher_alloc routine was changed to check only the
7843           dynamic list.
7844
7845           All silc_cipher_* routines that used to return int returns
7846           now bool.
7847
7848           The affected files lib/silccrypt/silccrypt.[ch].
7849
7850         * The same thing was done to silc_hash_* as for silc_cipher_*
7851           routines.  Affected files lib/silccrypt/silchash.[ch].
7852
7853         * The same thing was done to silc_pkcs_* as for silc_cipher_*
7854           routines.  Affected files lib/silccrypt/silcpkcs.[ch].
7855           Added also silc_pkcs_[un]register[_default] functions.
7856           Removed the data_context from the PKCS API.
7857
7858         * Added silc_hmac_register_default function to register default
7859           hmacs.  Affected files lib/silccrypt/silchmac.[ch].  Added also
7860           SILC_ALL_HMACS macro that can be used with silc_hmac_unregister
7861           to unregister all hmacs at once.
7862
7863         * Register the default ciphers, hash functions, PKCSs and HMACs
7864           if client's configuration file does not exist.  The affected
7865           file silc/silc.c.
7866
7867         * The client did not load the hash functions from the SIM
7868           modules at all.  Added support for this.  Affected file is
7869           silc/clientconfig.c.
7870
7871         * When decoding public key with silc_pkcs_public_key_decode, check
7872           the supported algorithm only if PKCS are registered.  Affected
7873           file lib/silccrypt/silcpkcs.c.  The same was done with the
7874           silc_pkcs_private_key_decode.
7875
7876         * Fixed the SILC List routines to keep the list always in order.
7877           It used to change the list's order when traversing the list but
7878           not it preserves the order.  Affected file lib/trq/silclist.h.
7879
7880 Mon Apr 30 17:29:03 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7881
7882         * Added the client library to use the SilcSocketConnection's
7883           reference counter (by silc_socket_dup) to prevent the bug that
7884           the socket object may be freed underneath async operation.
7885
7886         * The name resolv library checking fixes in the configure.in.pre.
7887           The patch by salo.
7888
7889         * Created new version of the protocol drafts for future
7890           development. The -03 drafts are the ones that will be changed
7891           in the trunk now and the -02 will remain as they are.
7892
7893         * Send list of CUMODE notifys to the router when announcing
7894           the channel users to the router.  Affected file silcd/server.c.
7895           If the router receiving channel founder CUMODE for a channel
7896           that already has channel founder it will send CUMODE notify
7897           to the sender to remove the channel founder rights from the
7898           announced client.  Affected file silcd/packet_receive.c.
7899
7900         * The CUMODE notify may now use Server ID as well as the entity
7901           who changes the mode.  Updated protocool specs.
7902
7903         * Updated INSTALL and README files.
7904
7905 Sun Apr 29 23:17:50 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7906
7907         * New web pages in the http://silc.pspt.fi.  The pages was
7908           designed by salo.
7909
7910         * Updated CREDITS.
7911
7912 Sun Apr 29 13:33:41 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7913
7914         * Implemented the [DenyConnectin] config section in the server.
7915           Added silc_server_config_denied_conn to check whether incoming
7916           connection is denied.  Affected file silcd/serverconfig.[ch].
7917
7918         * Do not check the ports when checking the incoming configuration
7919           data if the port is 0, meaning any.  Affected file is
7920           silcd/serverconfig.c.
7921
7922 Fri Apr 20 18:58:43 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7923
7924         * Fixed buffer overflow in silc_string_compare in the file
7925           lib/silcutil/silcutil.c.
7926
7927         * Fixed double free in silc_server_command_leave in the file
7928           silcd/command.c.
7929
7930 Fri Apr 20 14:00:11 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7931
7932         * Fixed the version checking in the server.  Affected file is
7933           silcd/protocol.c.
7934
7935 Thu Apr 19 19:52:46 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7936
7937         * Fixed the configuration data fetching when accepting new
7938           connections in the server.  Affected file silcd/server.c.
7939
7940 Thu Apr 19 11:40:20 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7941
7942         * Added `sender_entry' argument to the function
7943           silc_server_packet_relay_to_channel so that we can check
7944           whether some destination actually belongs to the same route
7945           the sender belongs (ie, we must not resend the packet to the
7946           sender).  Affected file silcd/packet_send.[ch].
7947
7948         * Added `servername' field to the SilcClientEntry in the server
7949           to hold the name of the server where client is from.  Affected
7950           file is silcd/idlist.h.
7951
7952 Wed Apr 18 22:19:03 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7953
7954         * Moved the channel message encrypting in the router betwen
7955           router connections from silc_server_channel_message to the
7956           silc_server_packet_relay_to_channel since we want to check
7957           whether we have anybody channel before encrypting anything.
7958           Affected files silcd/packet_[receive/send].c.
7959
7960 Tue Apr 17 21:18:19 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7961
7962         * Fixed the [AdminConnection] server config section to support
7963           multiple entries.  Affected file silcd/serverconfig.c.
7964
7965         * Added support into the server to check the validity of the
7966           incoming connection before executing any KE or authentication
7967           protocols.
7968
7969         * The connection configuration is now saved to the KE and
7970           connection auth protocol contexts and not fetched anymore in
7971           the protocol.  Affected files silcd/server.c, silcd/protocol.[ch].
7972
7973         * The local hosts listenning address and port is also resolved
7974           now when starting the server.  We want to have the socket object
7975           to include the real address and port for the listener.  Added
7976           new function silc_net_check_local_by_sock into the files
7977           lib/silcutil/silcnet.[ch].
7978
7979         * Fixed a broadcast bug in server -> do not broadcast if we
7980           are standalone.
7981
7982         * Fixed a routing bug.  Do not route broadcast packets ever.
7983           Broadcast packets must be processed always and not routed since
7984           they may be destined to some other host than yourself and thus
7985           would get routed without no good reason.  Affected file is
7986           silcd/server.c.
7987
7988         * Added function silc_server_config_is_primary_route to check
7989           whether primary router connection has been configured (a router
7990           configuration that we are initiating).  If there is not, we
7991           will assume that there is only two routers in the SILC network
7992           and we will use the incoming router connection as our primary
7993           route.  Affected files silcd/serverconfig.[ch], silcd/server.c.
7994
7995         * Changed the order of the broadcasting.  Broadcast _after_ the
7996           packet has been processed not before.  Affected file is
7997           silcd/server.c.
7998
7999         * Fixed a [ClientConnection] parsing bug.  The port was never
8000           parsed correctly thus resulting to port 0.  Affected file
8001           silcd/serverconfig.c.
8002
8003         * Fixed silc_server_send_notify_args -> it ignored the `broadcast'
8004           argument and did not set the broadcast packet flag.  Affected
8005           file silcd/packet_send.c.  Fixed same bug in the function
8006           silc_server_send_notify as well.
8007
8008         * If we receive NEW_ID packet for our own ID in the server, ignore
8009           the packet.
8010
8011 Mon Apr 16 12:10:33 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8012
8013         * Updated TODO.
8014
8015         * Removed the nickname from the Private Message Payload.
8016           Updated the code and the protocol specs.
8017
8018         * Updated protocol specs for submitting to the IETF.
8019
8020         * Tweaked the Random Number Generator a bit.  Affected file
8021           lib/silccrypt/silcrng.c.  Exported a new function
8022           silc_rng_[global]_add_noise which can be used to add more
8023           noise to the RNG.
8024
8025 Sat Apr 14 16:21:32 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8026
8027         * Do not parse packets with different timeout when protocol
8028           is active -> may cause problem with rekey.  Affected file
8029           silcd/server.c.
8030
8031         * When server receives signoff notify it must not create
8032           new channel key if the client is on any channels since the
8033           sender of the signoff notify will create it.
8034
8035 Fri Apr 13 17:12:46 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8036
8037         * Added printing of error messages during SKE protocol from the
8038           failure packet sent by server during SKE.  Affected file
8039           silc/client_ops.c.
8040
8041         * Removed the client's failure_callback handling with timeout
8042           and handle it immediately when received.
8043
8044         * The SKE library returned wrong type in SUCCESS and FAILURE
8045           packets.  They must be 32 bit MSB not 16 bit MSB.
8046
8047 Fri Apr 13 00:09:08 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8048
8049         * Ok, rewrote the logic of the re-key and now it seems to work.
8050           I tested it on high traffic with frequent re-keys without
8051           problems.  Added hmac_receive (and renamed hmac to hmac_send)
8052           in SilcClientConnection in lib/silcclient/client.h and
8053           in SilcIDListData in silcd/idlist.h.  Also, removed the
8054           SilcPacketParserContext's cipher and hmac fields as they are
8055           not needed anymore and actually caused some problems when
8056           the ciphers and hmac's changed underneath the packet parser.
8057
8058 Thu Apr 12 14:42:51 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8059
8060         * If re-key protocol is active then process the incoming packets
8061           synchronously since we must assure that icoming packets encrypted
8062           with the old key is processed before the new keys is set to
8063           use.  This is true other packets than for REKEY packets.
8064           Affected file silcd/server.c.  The same was done to client library
8065           as well, affected file lib/silcclient/client.c.
8066
8067 Thu Apr 12 12:01:52 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8068
8069         * Fixed bug in client and server to accept the force send if
8070           the packet is send from silc_[server/client]_packet_process
8071           function.  Otherwise the packets are never delivered, oops.
8072
8073 Wed Apr 11 22:10:15 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8074
8075         * Disable force sending of packets when REKEY protocol is active.
8076           We must assure that no packet is sent directly when rekey is
8077           performed.  All packets must be sent through packet queue.
8078           Added macro SILC_SERVER_IS_REKEY to silcd/server.h and
8079           SILC_CLIENT_IS_REKEY to lib/silcclient/client.h.  Affected
8080           function is silc_[server/client]_packet_send_real to check
8081           the situation.
8082
8083         * Replaced the SIM paths from example config files to
8084           /usr/local/modules.  Also, make install creates now
8085           /usr/local/silc/logs directory to hold all the SILC server
8086           logs.
8087
8088 Wed Apr 11 16:59:59 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8089
8090         * Made the configure.in.pre work on Solaris.  Patch by salo.
8091
8092         * Made all ciphers compatible with non-x86 machines.  Defined
8093           CBC mode macros into lib/silccrypt/ciphers_def.h.
8094
8095 Tue Apr 10 20:32:44 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8096
8097         * Fixed the make install.
8098
8099 Tue Apr 10 16:20:34 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8100
8101         * When MAC computation fails the silc_packet_decrypt returned 0
8102           even though it was supposed to return -1.  Fixed this.  The
8103           affected file is lib/silccore/silcpacket.c.
8104
8105         * Do not replace the config files in /etc/silc (in make install)
8106           if they already exist.  Affected file ./Makefile.am.
8107
8108         * Do not send re-key packets immediately but through packet queue.
8109           Affected file silcd/protocol.c and lib/silcclient/protocol.c.
8110
8111         * Changed silc_net_check_host_by_sock to return FALSE if the
8112           IP/DNS could not be resolved.  Though, it returns the IP address
8113           now even if it could not resolve it (but returns also FALSE).
8114           Affected file lib/silcutil/silcnet.[ch].
8115
8116 Mon Apr  9 21:54:44 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8117
8118         * Added silc_pkcs_decode_identifier to decode the public key's
8119           identifier.  Affected file lib/silccrypt/silpkcs.[ch].
8120           Added also silc_pkcs_free_identifier.  Added also new context
8121           SilcPublicKeyIdentifier.
8122
8123         * Added -S option to the silc client.  It is used to dump the
8124           contents of the specified public key file.
8125
8126         * Changed the PKCS api to return the public key length when
8127           setting the public key.
8128
8129         * Fixed a fatal bug in the public and private key file loading.
8130           Affected file lib/silccrypt/silcpkcs.c.
8131
8132         * Execute the packet parsing for client with zero (0) timeout
8133           if the protocol is active.  Affected file silcd/server.c.
8134
8135 Sun Apr  8 19:30:56 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8136
8137         * Made the key generation options to the silcd program.  Added
8138           -C option, equivalent to client's option.
8139
8140         * Added new [ServerKeys] config section to the server.  It
8141           configures the server's public and private key.
8142
8143         * Defined generic Public Key Payload into the protocol
8144           specification to send specific type of public keys and
8145           certificates.
8146
8147         * Defined new command SILC_COMMAND_GETKEY to fetch a client's
8148           public key or certificate.
8149
8150         * Implemented the GETKEY command to the server and to the
8151           client library and on user interface.
8152
8153 Sun Apr  8 01:37:21 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8154
8155         * Made preliminary `make install' work.
8156
8157 Thu Apr  5 17:42:30 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8158
8159         * Added SilcServerRekey context into silcd/idlist.h.
8160
8161         * Added the PFS support as defined in the specification to the
8162           SKE protocol.  Affected files lib/silcske/*.c.
8163
8164         * Added `ske_group' field to the SilcServerRekey context to hold
8165           the number of the SKE group that is used with PFS in re-key.
8166           Affected file silcd/idlist.h.
8167
8168         * Added PFS re-key support to the server.  Affected file is
8169           silcd/protocol.c.
8170
8171         * Added silc_protocol_cancel to cancel execution of the next
8172           state of the protocol.  Affected file is
8173           lib/silccore/silcprotocol.[ch].
8174
8175         * Added the re-key support with and without PFS to the client
8176           library.  Re-key is performed once in an hour, by default.
8177
8178           Added new protocol type SILC_PROTOCOL_CLIENT_REKEY.
8179           Added silc_client_rekey_callback and silc_client_rekey_final.
8180           Affected files are lib/silcclient/protocol.[ch] and
8181           lib/silcclient/client.[ch].
8182
8183         * Removed the `hmac_key' and `hmac_key_len' fields from the
8184           SilcClientConnection structure; not needed.  Affected file is
8185           lib/silcclient/client.h.
8186
8187         * Updated TODO.
8188
8189 Wed Apr  4 16:32:31 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8190
8191         * Do not ask whether user wants to use the negotiated private key
8192           for private messages, just use it.  Affected file is
8193           silc/local_command.c.
8194
8195         * Added `send_enc_key' and `enc_key_len' fields to the
8196           SilcIDListData structure since they are needed in the re-key
8197           phase.  Affected file is silcd/idlist.[ch].
8198
8199         * Implemented the simple re-key protocol into the server.
8200           Affected files silcd/server.c and silcd/protocol.[ch].  The
8201           re-key will be performed once in an hour, by default.
8202
8203           Added new protocol type SILC_PROTOCOL_SERVER_REKEY.
8204           Added silc_server_rekey, silc_server_rekey_callback and
8205           silc_server_rekey_final.
8206
8207         * Removed Tunneled flag from the protocol.  Updated the code
8208           and the specifications.
8209
8210         * Adde `pfs' field to the SilcIDListData to indicate whether
8211           the PFS is to be performed in the re-key.  Affected file is
8212           silcd/idlist.h.
8213
8214 Tue Apr  3 21:52:42 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8215
8216         * Defined uint8, int8, uint16, int16, uint32, int32, uint64 and
8217           int64 of at least the xintXX size.  If void * is less that 4
8218           bytes uint32 * will be used.  Defined bool as boolean.
8219
8220         * Changed _ALL_ unsigned long and unsigned int to uint32,
8221           unsgined short to uint16 in the source tree.
8222
8223         * Fixed a fatal bug in silc_server_remove_clients_by_server.  Do
8224           not handle clients that has entry->data.registered == FALSE.
8225           They are not in the network anymore.  Affected file is
8226           silcd/server.c.
8227
8228 Tue Apr  3 16:39:19 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8229
8230         * Implemented the sending of the SERVER_SIGNOFF notify in the
8231           server.  Affected file is silcd/server.c.
8232
8233         * Added silc_server_send_notify_args into silcd/packet_send.[ch].
8234           Added also silc_notify_payload_encode_args into the
8235           lib/silccore/silcnotify.[ch].
8236
8237         * Implemented ther SERVER_SIGNOFF notify handling in the server.
8238           Affected file silcd/packet_receive.c.
8239
8240         * Implemented the SERVER_SIGNOFF notify handling in the client
8241           library.  Affected file lib/silcclient/client_notify.c.  Also,
8242           implemnted the printing of the SERVER_SIGNOFF info to the
8243           application.  Affected file silc/client_ops.c.
8244
8245         * The silc_idlist_del_server now returns TRUE or FALSE to indicate
8246           if the deleting was successful.  Affected file silcd/idlist.[ch].
8247
8248         * Added support for public key authentication in the connection
8249           authentication protocol in the client library.  Affected file
8250           lib/silcclient/protocol.c.
8251
8252         * Changed the server's silc_idlist_get_clients_by_* interface
8253           to support already allocated array so that new entries may be
8254           added to pre-allocated array.  Affected file silcd/idlist.[ch].
8255           This fixes some bugs with WHOIS, WHOWAS and IDENTIFY commands
8256           and command replies.
8257
8258         * All command reply functions in the server now calls the
8259           pending command callback even if error occured.  This way the
8260           error will be delivered to the client as well.  Affected files
8261           silcd/command.c and silcd/command_reply.c.
8262
8263         * Fixed INFO command to return local server's info if no server
8264           was provided.  Affected file lib/silcclient/command.c.
8265
8266         * Removed RESTART command for good.  Updated the code and the
8267           protocol specs.
8268
8269         * Rewrote parts of the task system.  It is a bit simpler now.
8270           Removed unsued task priorities. The affected files are
8271           lib/silcutil/silctask.[ch].
8272
8273 Mon Apr  2 20:02:33 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8274
8275         * Moved the USERS printing from the library to the application.
8276           Affected files lib/silcclient/command.c and silc/client_ops.c.
8277
8278 Mon Apr  2 13:13:23 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8279
8280         * Updated TODO.
8281
8282         * Added channel key re-key support.  The re-key is perfomed
8283           only by the router and is done once in an hour.  Added `rekey'
8284           field to the SilcChannelEntry in the server.  Affected files
8285           silcd/server.c and silcd/idlist.h.
8286
8287         * Added silc_task_unregister_by_context into the file
8288           lib/silcutil/silctask.[ch].
8289
8290 Sun Apr  1 19:49:34 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8291
8292         * Added SILC_UMODE_GONE mode to indicate when the client is not
8293           present in the SILC network.  Added also support to the local
8294           command AWAY that will set this mode.  Added support of showing
8295           "xxx is gone" in WHOIS command.  The USERS command shows the
8296           gone status as well.
8297
8298         * Fixed setting server and router operator privileges in the
8299           server's UMODE command.  Affected file silcd/command.c.
8300
8301         * Merged the SKE KE1 and KE2 payloads into one payload.  The
8302           new KE payload is equivalent to the old KE2 payload.
8303
8304           Cleaned up the SKE Start Payload parsing.  It now uses the
8305           simple buffer unformatting to do the parsing.  A lot faster
8306           now.
8307
8308           Added new Mutual Authentication flag (SILC_SKE_SP_FLAG_MUTUAL)
8309           to the SKE that is used to indicate whether both of the SKE
8310           parties should perform authentication.  By default only the
8311           responder performs authentication.  By setting this flag also
8312           the initiator must do authentication.  By default it is unset
8313           since in normal SKE case, client to server connection, only
8314           the responder should do authentication.  When doing SKE between
8315           two clients both should perform authentication.  Updated the
8316           code and the protocol specs.
8317
8318         * A little fix to IDENTIFY command in the server.  Search the
8319           client first by hash not nickname.  Affected file is
8320           silcd/command.c.
8321
8322         * Fixed the silc_client_close_connection to support closing
8323           the client to client connections wihtout deleting too much
8324           data.  Affected file lib/silcclient/client.c.
8325
8326         * Fixed a fatal bug in server and client; if KE1 or KE2 packets
8327           are received if protocol used to be active but is not anymore
8328           the application would crash due to NULL pointer dereference.
8329           Affected files silcd/server.c and lib/silcclient/client.c.
8330
8331         * Added `hash' field to the SilcClientConnection to include
8332           the hash function negotiated in the SKE protocol.
8333
8334         * Added new channel mode SILC_CMODE_FOUNDER_AUTH that is used
8335           to set the channel founder authentication data.  A client can
8336           claim the founder rights later by providing the authentication
8337           data to the CUMODE command using SILC_CUMODE_FOUNDER mode.
8338           This way the channel founder can regain the channel founder
8339           privileges even it is left the channel.  This works only on
8340           local server and the client must be connected to the same
8341           server to be able to regain the founder rights.  Updated the
8342           protocol specs accordingly.
8343
8344           Added support to the CMODE command in the client to set the
8345           founder auth data.  Read the README to see how to set it.
8346
8347           Added support to the CUMODE command to claim the founder
8348           rights.  Read the README to see how to do it.
8349
8350           Added support for the founder authentication to the Channel
8351           Entry in the server.  Affected file silcd/idlist.h.
8352
8353           Added support for the SILC_CMODE_FOUNDER_AUTH mode in the
8354           server's CMODE command.  Affected file silcd/command.c.
8355
8356         * Added the following new functions into lib/silccore/silcauth.[ch]:
8357           silc_auth_get_method and silc_auth_get_data.
8358
8359         * The server now saves the remote hosts public key to the
8360           SilcIDListData pointer.  Affected file silcd/protocol.c.
8361
8362         * The normal server now does not remove the channel entry from
8363           the cache if the founder authentication data is set.  It used
8364           to remove it if the founder was the last one on the channel on
8365           the server and left the channel.  The auth data is saved and
8366           if the channel is re-joined later the old entry is used with
8367           the old auth data.  Affected files silcd/command_reply.c and
8368           silcd/server.c.
8369
8370         * Removed the `pkcs' field from the SilcIDListData structure
8371           in the server; it is not used.  Affected file silcd/idlist.h.
8372
8373 Sat Mar 31 15:38:36 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8374
8375         * Fixed packet processing on slow links.  Partial packets were
8376           never re-processed because the incoming data buffer was cleared
8377           by the application.  Application must not directly clear the
8378           sock->inbuf, the packet processing routines handle it.  Fixed
8379           this in client library and in server.
8380
8381 Fri Mar 30 16:35:27 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8382
8383         * Fixed the WHOIS and IDENTIFY send reply function to really
8384           check whether to send list or just one entry.  Affected file
8385           silcd/command.c.
8386
8387         * Cleaned up the LEAVE command's channel key distribution.  The
8388           affected file silcd/command.c.
8389
8390         * Changed CMODE_CHANGE's <Client ID> to <ID Payload> as server
8391           can enforce the channel mode as well.  In that case the ID
8392           includes the ID of the server.  The code now enforces the
8393           mode change if the router have different mode than the server.
8394
8395         * The notify client operation with CMODE_CHANGE notify can now
8396           return NULL client_entry pointer if the CMODE was not changed
8397           by client.  Application must check for this.
8398
8399         * Added <Server ID> argument to INFO command to support server
8400           info fetching by Server ID.
8401
8402         * Added silc_server_announce_get_channel_users to get assembled
8403           packets of channel users of the specified channel.  Affected
8404           file silcd/server.[ch].
8405
8406         * Fixed bug in CHANNEL_CHANGE notify in the server.  The new ID
8407           was freed underneath the ID Cache.
8408
8409         * Re-announce clients when the server received CHANNEL_CHANGE
8410           notify from the router.  Affected file silcd/packet_send.c.
8411
8412 Thu Mar 29 19:10:28 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8413
8414         * Fixed a fatal bug when client does /join 1 2 3 4 5 6 the server
8415           crashed since it did not handle the fact that there is no cipher
8416           called "3" and didn't check the error condition.  Now fixed.
8417
8418         * Added SILC_MESSAGE_FLAG_REQUEST message flag as generic request
8419           flag.  It can be used to send message requests.
8420
8421 Thu Mar 29 12:26:25 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8422
8423         * Implemented the RESTART command in the client.
8424
8425         * Added SILC_MESSAGE_FLAG_NOTICE message flag for informational
8426           notice type messages.  Added notice printing to the user
8427           interface.
8428
8429         * The channel keys are not re-generated if the channel's mode
8430           is PRIVKEY, ie private key on the channel exists.  Affected
8431           files silcd/server.c and silcd/command.c.
8432
8433         * Fixed a little bug in channel message delivery when channel
8434           private keys are set in the server.  Affected file is
8435           silcd/packet_send.c.
8436
8437         * Changed the setting on channel->on_channel = TRUE from the
8438           silc_client_save_channel_key to the JOIN command reply.  The
8439           key payload is not received if the private channel key is set.
8440           Affected file lib/silcclient/command_reply.c and the
8441           lib/silcclient/client_channel.c.
8442
8443         * When the CMODE_CHANGE notify is sent and the channel private
8444           key mode is removed the channel key must be re-generated in
8445           other cells as well.  Added this support for the router in the
8446           silcd/packet_receive.c.
8447
8448         * Added new local command NOTICE to send notice message on
8449           channel.  Affected file silc/local_command.[ch].
8450
8451 Wed Mar 28 23:55:54 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8452
8453         * Added new local command ME to the client.  It is used to send
8454           message to a channel with SILC_MESSAGE_FLAG_ACTION to indicate
8455           some action.  Affected file silc/local_command.[ch].
8456
8457         * Changed channel_message and private_message client operations
8458           to deliver the message flags to the application.  Added also
8459           the `flags' arguments to the silc_client_send_channel_message
8460           and silc_client_send_private_message functions.  Affected file
8461           silcapi.h.
8462
8463 Wed Mar 28 20:50:47 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8464
8465         * Redefined the Private Message Payload to support private message
8466           keys and to support the new private message flags.  Updated
8467           the protocol specs.  Flags makes it possible to have for example
8468           CTCP style messages.
8469
8470         * Added new type SilcPrivateMessagePayload and defined an API
8471           for it in the lib/silcclient/silcprivate.[ch].
8472
8473         * Tested private message private keys successfully.  Tested the
8474           private message key set, unset and list commands with the new
8475           KEY command.
8476
8477         * Redefined the Channel Message Payload to include the channel
8478           message flags (equal with private message flags) to support
8479           for example CTCP style messages.
8480
8481         * Defined some of the message (for channel and private message)
8482           flags.  Updated the protocol specs and added the flags to the
8483           lib/silccore/silcchannel.h.  The type is SilcMessageFlags.
8484
8485 Wed Mar 28 15:52:36 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8486
8487         * Added SilcKeyAgreementStatus type to the key agreement routines
8488           to indicate the current status and error if one occured.
8489           The status types are defined in the lib/silcclient/silcapi.h.
8490
8491         * Added new local command KEY that is used to set and unset private
8492           keys for channels, set and unset private keys for private messages
8493           with remote clients and to send key agreement requests and
8494           negotiate the key agreement protocol with remote client.  The
8495           key agreement is supported only to negotiate private message keys,
8496           it currently cannot be used to negotiate private keys for channels,
8497           as it is not convenient for that purpose.
8498
8499         * Fixed a minor pending callback setting bug in the function
8500           silc_client_get_client_by_id_resolve, now the function works.
8501           Affected file lib/silcclient/idlist.c.
8502
8503         * Added function silc_net_get_local_port to get local bound
8504           port by socket.  Added to lib/silcutil/silcnet.[ch].
8505
8506         * Added `sockets' and `sockets_count' fields to the SilcClient
8507           object.  They hold the sockets of the listenning sockets in
8508           the client.  Listenning sockets may be for example the key
8509           agreement server.  Affected file lib/silcclient/client.[ch].
8510           Added functions the silc_client_add_socket and the
8511           silc_client_del_socket.  They are exported to the application
8512           as well.
8513
8514         * Added ~./silc/clientkeys to support other client's public keys.
8515
8516         * Renamed verify_server_key client operation to verify_public_key
8517           and added one argument to indicate the type of the connection
8518           (server, client etc.).
8519
8520 Tue Mar 27 22:22:38 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8521
8522         * Added silc_server_connection_auth_request to handle the
8523           incoming CONNECTION_AUTH_REQUEST packet.  Affected file is
8524           silcd/packet_receive.[ch].
8525
8526         * Added silc_server_send_connection_auth_request into the
8527           silcd/packet_send.c to send the connection auth request packet.
8528
8529         * Cleaned up the silcd/protocol.c a bit and fixed some memory
8530           leaks.
8531
8532         * Fixed the public key authentication in responder side in the
8533           server.  The `auth_data' pointer includes the SilcPublicKey
8534           not the path to the public key.  Affected file silcd/protocol.c.
8535
8536         * Implemented the public key authentication in the initiator side
8537           in the server.  Affected file silcd/protocol.c.
8538
8539         * Removed the [RedirectClient] config section from the server
8540           configuration.  Is not needed and I don't want to implement it.
8541
8542 Tue Mar 27 12:49:56 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8543
8544         * Cleaned up the CMODE command in the server.  It now works
8545           correctly and supports all the modes defined in the protocol.
8546           Affected file is silcd/command.c.
8547
8548         * Added `hmac_name' field to the SilcChannelEntry in the server
8549           to hold the default HMAC of the channel.  It can be set when
8550           creating the channel (with JOIN command).  Affected files
8551           silcd/idlist.[ch].
8552
8553         * Added <cipher> and <hmac> argument to the CMODE_CHANGE notify
8554           type to indicate the change of the current cipher and hmac
8555           on the channel.  Client can safely ignore the <cipher> argument
8556           (if it chooses to do so) since the CHANNEL_KEY packet will
8557           force the channel key change anyway.  The <hmac> argument is
8558           important since the client is responsible of setting the new
8559           HMAC and the hmac key into use.
8560
8561         * Fixed the CMODE command in the client library as well.
8562
8563         * Tested CMODE command in router environment successfully.
8564
8565 Mon Mar 26 14:39:48 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8566
8567         * Show the version of the remote client (or server) when connecting
8568           to the server.  It is logged to the log file.  Affected file
8569           is silcd/protocol.c.
8570
8571         * Fixed the KILLED notify handling in the client library.  The
8572           client must be removed from all channels when receiving the
8573           KILLED notify.
8574
8575           Also, do not remove the client entry when giving the KILL
8576           command but when the KILLED notify is received.
8577
8578         * Removed silc_idlist_find_client_by_nickname from the server.
8579           Not needed anymore.  Affected files silcd/idlist.[ch].
8580
8581         * Implemented the CHANNEL_CHANGE notify type handling to the
8582           server.  Affected file silcd/server.c.
8583
8584         * Updated TODO.
8585
8586 Mon Mar 26 12:11:14 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8587
8588         * Added silc_server_send_notify_invite to send the INVITE
8589           notify between routers.
8590
8591         * Implemented the INVITE command correctly to the server.
8592
8593         * Implemented the INVITE notify type handling in the server.
8594
8595         * Implemented the INVITE command to the client library and on the
8596           user interface.
8597
8598 Sun Mar 25 20:27:09 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8599
8600         * Added function silc_server_get_client_resolve to find the
8601           client entry by ID from all ID lists and then resolve it
8602           (using WHOIS) if it cannot be found.  Affected file is
8603           silcd/server.[ch].
8604
8605 Sun Mar 25 13:52:51 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8606
8607         * Implemented the BAN command to the client library.
8608
8609         * The JOIN command in the server now checks the invite list
8610           and the ban list.
8611
8612         * Changed the silc_command_reply_payload_encode_va and the
8613           silc_command_payload_encode_va to support that if argument is
8614           NULL it ignores and checks the next argument.  Affected file
8615           lib/silccore/silccommand.c.
8616
8617         * Added silc_server_send_notify_ban to send the BAN notify
8618           type between routers.
8619
8620         * Chaned the silc_notify_payload_encode to support that if
8621           argument is NULL it ignores and checks the next argument.
8622           Affected file lib/silccore/silcnotify.c.
8623
8624         * Tested ban lists in router environment successfully.
8625
8626 Sat Mar 24 14:47:25 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8627
8628         * Implemented BAN command to the server, in silcd/command.[ch].
8629
8630         * Removed the BAN and INVITE_LIST modes from the CMODE command
8631           in the server code.
8632
8633         * Added function silc_string_match to regex match two strings.
8634           Affected files lib/silcutil/silcutil.[ch].
8635
8636 Fri Mar 23 22:02:40 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8637
8638         * Redefined parts of the SilcChannelEntry in the server to support
8639           the new ban and invite lists.
8640
8641 Fri Mar 23 16:25:11 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8642
8643         * Redefined the INVITE command.  The same command can be used to
8644           invite individuals to the channel but also to manage the invite
8645           list of the channel (to add to and remove from the invite list).
8646           Updated the protocol specs.
8647
8648         * Added new command SILC_COMMAND_BAN that can be used to manage
8649           the ban list of the channel.  Updated the protocol specs.
8650
8651         * Removed the channel modes: the SILC_CMODE_BAN and the
8652           SILC_CMODE_INVITE_LIST as they were a bit kludge to be included
8653           in the CMODE command.  The equivalent features are now available
8654           using INVITE and BAN commands.  Updated the protocol specs.
8655
8656         * Added new SILC_NOTIFY_TYPE_BAN notify type to notify routers
8657           in the network about change in the current ban list.  The notify
8658           type is not used by the client.
8659
8660         * Redefined parts of the SILC_NOTIFY_TYPE_INVITE command to
8661           support the invite lists.
8662
8663 Thu Mar 22 22:52:23 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8664
8665         * Added new function silc_string_regexify that converts string
8666           including wildcard characters into regex string that can
8667           be used by the GNU regex library.  Added into the file
8668           lib/silcutil/silcutil.[ch].
8669
8670           Added silc_string_regex_combine to combine to regex strings
8671           into one so that they can be used as one regex string by
8672           the GNU regex library.  Added into the file
8673           lib/silcutil/silcutil.[ch].
8674
8675           Added silc_string_regex_match to match two strings.  It returns
8676           TRUE if the strings match.  Added into lib/silcutil/silcutil.[ch].
8677
8678 Thu Mar 22 15:29:42 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8679
8680         * Imported GNU regex to the soruce tree into lib/contrib.
8681           Fixed some compiler warning from the regex.c.
8682
8683 Wed Mar 21 15:27:58 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8684
8685         * Fixed MOTD command in the server to work in router environment.
8686
8687         * Fixed the MOTD command in the client library to support
8688           the server argument in the command.
8689
8690         * Added `nickname_len' argument to the silc_idlist_add_client
8691           in the server, as the `nickname' argument may be binary data
8692           (it may be hash).
8693
8694         * Added silc_idlist_get_channels to return all channels from
8695           the ID list.
8696
8697         * Implemented LIST command to the server.  Affected file is
8698           silcd/command.c.
8699
8700         * Implemented the LIST command to the client library and on the
8701           user interface.
8702
8703         * Added [<user count>] argument to the LIST command reply.
8704           With private channels the user count is not shown.
8705
8706         * Updated TODO and README.
8707
8708 Tue Mar 20 21:05:57 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8709
8710         * The client entry's data.registered must be TRUE even with
8711           global client entry on global client list.  The data.registered
8712           is used to check whether the client is anymore in the network,
8713           for example with WHOWAS command so it must be valid.
8714
8715         * Fixed the WHOWAS command in the server.  It now actually works
8716           in router environment.  Added function into silcd/command_reply.c
8717           silc_server_command_reply_whowas_save.
8718
8719         * Added silc_idlist_purge function to the silcd/idlist.c
8720           to periodically purge the ID Cache.
8721
8722         * Fixed INFO command in the server.  It works now in router
8723           environment.  Added <server name> argument to the INFO command
8724           reply.  Updated the protocol specs.
8725
8726         * Fixed minor bug in silc_idcache_purge to not purge if the
8727           expire value is zero.
8728
8729         * Fixed various bugs in WHOIS and IDENTIFY command handling as
8730           they were buggy because of the WHOWAS information.
8731
8732         * Fixed local command MSG to handle the async resolving of
8733           the remote client properly.  It used to fail the first MSG.
8734           Affected file silc/local_command.c.
8735
8736         * Added `data_len' field to SilcIDCache context.
8737
8738 Tue Mar 20 16:29:00 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8739
8740         * Update TODO.  Todo in commands in the server.
8741
8742 Tue Mar 20 15:45:14 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8743
8744         * Added new notify type SILC_NOTIFY_TYPE_UMODE_CHANGE that is
8745           used by routers as broadcast packet to inform other routers
8746           about the changed user mode.
8747
8748           Implemented the notify handling in the server.  Affected file is
8749           silcd/packet_receive.c.  Added the function
8750           silc_server_send_notify_umode to the silcd/packet_send.[ch].
8751
8752         * Added new generic Channel Payload and deprecated the New Channel
8753           Payload.  The New Channel Payload is now the generic Channel
8754           Payload.
8755
8756         * Added new argument `mode' to the silc_server_send_new_channel
8757           as it is required in the Channel Payload now.
8758
8759         * Renamed the SilcChannelPayload to SilcChannelMessagePayload
8760           and created a new and real SilChannelPayload to represent the
8761           new generic Channel Payload.  Implemented the encode/decode
8762           for Channel Payload.  Affected file lib/silccore/silcchannel.[ch].
8763
8764         * Added silc_server_get_client_channel_list to return the list
8765           of channels the client has joined for WHOIS command reply.
8766           Affected file silcd/server.[ch].
8767
8768         * Implemented the channel list sending in the WHOIS command reply
8769           in server and in the client.
8770
8771           Implemented the channel list displaying on the user interface
8772           as well.  Affected file silc/client_ops.c.
8773
8774         * Added silc_channel_payload_parse_list to parse list of Channel
8775           Payloads.  It returns SilcDList list of SilcChannelPayloads.
8776           Client for example can use this function to parse the list of
8777           channels it receives in the WHOIS command reply.  The caller
8778           must free the list by calling silc_channel_payload_list_free.
8779           Affected files lib/silccore/silcchannel.[ch].
8780
8781 Mon Mar 19 21:39:15 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8782
8783         * Added one new argument <user mode> to the WHOIS command reply
8784           to return the mode of the user in SILC.  Updated the protocol
8785           specs.
8786
8787           Implemented it to the server and client.
8788
8789 Mon Mar 19 18:43:06 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8790
8791         * Fixed the mode printing on the user interface on joining.
8792           Affected file silc/client_ops.c.
8793
8794         * Implemented the UMODE command and user modes in general to the
8795           client library and to the user interface.
8796
8797         * Implemented the UMODE command to the server.
8798
8799         * The server now sends UNKNOWN_COMMAND error status if client sends
8800           unknown command.  Affected file silcd/command.c.
8801
8802         * All server commands now handle the command identifier the right
8803           way when sending the command reply to the client.  The client can
8804           use to identify the command replies with the identifier.
8805
8806 Mon Mar 19 16:13:07 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8807
8808         * Added silc_server_get_client_route to resolve the route to
8809           the client indicated by the client ID.  Affected file is
8810           silcd/server.[ch].
8811
8812         * Added silc_server_relay_packet as general function to relay
8813           packet to arbitrary destination.  This deprecates functions
8814           like _send_private_message_key, _relay_notify etc.  Affected
8815           file is silcd/packet_send.[ch].
8816
8817           Removed silc_server_send_key_agreement,
8818           silc_server_send_private_message_key and
8819           silc_server_packet_relay_notify functions from the file
8820           silcd/packet_send.[ch].
8821
8822         * Updated TODO.
8823
8824         * Implemented the SILC_NOTIFY_TYPE_KILLED notify handling in the
8825           server.  Affected file silcd/packet_receive.[ch].
8826
8827         * Implemented the KILL command to the client.  Implemented the
8828           SILC_NOTIFY_TYPE_KILLED notify handling in the client library.
8829           Affected files lib/silcclient/command[_reply].c and
8830           lib/silcclient/client_notify.c.  Implemented the KILL notify
8831           printing in the user inteface.
8832
8833         * Fixed a lot silc_parse_nick memory leaks from the client
8834           library in the file lib/silcclient/command.c.
8835
8836         * Changed the silc_server_send_notify_on_channels's `sender'
8837           argument from SilcSocketConnection to SilcClientEntry to
8838           check the sender as entry and not as connection object and not
8839           to send to the client provided as argument.  The affected file
8840           is silcd/packet_send.[ch].
8841
8842         * The notify packets that are destined directly to the client used
8843           to not to be processed by the server.  Now changed that and the
8844           server processes all notify packets.  After relaying the packet
8845           to the client the notify packet is processed in the server.
8846
8847         * The silc_server_free_client_data now checks whether there is
8848           pending outgoing traffic for the client and purges the data to
8849           the network before removing the client entry.
8850
8851 Sun Mar 18 21:02:47 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8852
8853         * Added SILC_NOTIFY_TYPE_KILLED notify type.  It is sent when
8854           an client is killed from the SILC Network.  Updated the protocol
8855           specs accordingly.
8856
8857           Added new function silc_server_send_notify_killed to the
8858           silcd/packet_send.[ch].
8859
8860         * Added function silc_server_packet_relay_notify to relay notify
8861           packets that are destined directly to a client.  In this case
8862           the server does not process the notify packets but merely relays
8863           it to the client.  Affected file silcd/packet_send.[ch].
8864
8865           Added also silc_server_packet_process_relay_notify to check
8866           whereto relay the notify.  Affected file is
8867           silcd/packet_receive.[ch].
8868
8869         * Implemented the KILL command to the server.
8870
8871         * Updated TODO.
8872
8873         * Added the backup schema desgined last fall to the protocol
8874           specs for everyone to see.  The specification is in the
8875           *-spec-xx.txt draft and the packet type definitions for the
8876           backup routers is in *-pp-xx.txt draft.  Thusly, added also
8877           new packet type SILC_PACKET_CELL_ROUTERS.
8878
8879         * A big security problem in the implementation discovered.  The
8880           signoff of an client did not cause new channel key generation
8881           which it of course should've done.  The channel keys must be
8882           always re-generated when client leaves (or signoffs) the channel.
8883           The silc_server_remove_from_channels funtion now handles
8884           the channel key re-generation.
8885
8886         * Added `sender' argument to the silc_server_send_notify_on_channels
8887           to not to send the client provided as argument.  Affected file
8888           silcd/packet_send.[ch].
8889
8890 Fri Mar 16 15:52:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8891
8892         * Implemented OPER and SILCOPER commands into the server and
8893           the client library.
8894
8895         * Added silc_auth_verify and silc_auth_verify_data to verify
8896           the authentication directly from the authentication payload.
8897           It supports verifying both passphrase and public key based
8898           authentication.  Affected file lib/silccore/silcauth.[ch].
8899
8900         * Added `hash' field to the SilcIDListData structure.  It is the
8901           hash negotiated in the SKE protocol.  Affected file is
8902           silcd/idlist.[ch].
8903
8904         * Slight redesigning of the SilcAuthPayload handling routines.
8905           Do not send SilcPKCS but SilcPublicKey as argument.
8906
8907         * Implemented the public key authentication support to the
8908           serverconfig.  The public key is loaded from the provided path
8909           and saved as authentication data to void * pointer.  Thus,
8910           changed the unsigned char *auth_data to void *auth_data;
8911
8912         * Fixed SHUTDOWN command to send the reply before the server
8913           is shutdown. :)  Affected file silcd/command.c.
8914
8915         * Fixed fatal bug in CONNECT command.  The hostname was invalid
8916           memory and server crashed.  Affected file silcd/command.c.
8917
8918         * Fixed fatal bug in CLOSE command.  The server_entry became
8919           invalid but was referenced later in the command.  Affected file
8920           silcd/command.c.
8921
8922 Thu Mar 15 12:46:58 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8923
8924         * Fixed fatal bug in failure packet handling.  Server ignored
8925           the failure and thus crashed when it came.
8926
8927         * Updated TODO.
8928
8929 Wed Mar 14 20:37:35 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8930
8931         * Added new SILC_CF_LAG_STRICT command flag that strictly forces
8932           that the command may be executed only once in (about) 2 seconds.
8933           The old SILC_CF_LAG flag is same but allows command bursts up
8934           to five before limiting.
8935
8936           Added the support for CF_LAG and CF_LAG_STRICT flags to the
8937           server code.  Various commands now includes the CF_LAG_STRICT
8938           flag to disallow any kind of miss-use of the command.
8939
8940         * Fixed the silc_buffer_unformat to not to allocate any data
8941           if the length of the data is zero.  It used to allocate the
8942           length + 1.  Affected file lib/silcutil/silcbuffmt.c.
8943
8944 Wed Mar 14 16:10:30 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8945
8946         * Changed the format of AdminConnection configuration section
8947           in the server.  Added username of the admin to the format.
8948           Affected files silcd/serverconfig.[ch].
8949
8950           Added silc_server_config_find_admin into silcd/serverconfig.[ch]
8951           to return admin configuration data by host, username and/or
8952           nickname.
8953
8954 Wed Mar 14 13:18:16 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8955
8956         * Implemented WHOWAS command to the server.  Added the functions:
8957
8958           silc_server_command_whowas_parse,
8959           silc_server_command_whowas_send_reply,
8960           silc_server_command_whowas_from_client and
8961           silc_server_command_whowas_from_server
8962
8963         * Added <Client ID> argument to the WHOWAS command reply.  Updated
8964           the protocol specs accordingly.
8965
8966         * Implemented WHOWAS command and command_reply to the client
8967           library.
8968
8969           Implemented the WHOWAS printing on the user interface.
8970
8971 Tue Mar 13 22:17:34 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8972
8973         * Added new argument to the WHOWAS command reply, the real name.
8974           It is an optional argument.  Updated the protocol specs.
8975
8976         * Added SilcIDCacheDestructor callback that is registered when
8977           the SilcIDCache is allocated.  The callback is called when
8978           an cache entry in the ID Cache expires, or is purged from the
8979           cache.  Added into lib/silccore/idcache.[ch].
8980
8981           Added silc_idlist_client_destructor to the silcd/idlist.[ch]
8982           to destruct the client entries when the cache entry expires.
8983           Other ID Cache's in server and in the client library ignores
8984           the destructor.
8985
8986         * If the ID Cache entry's `expire' field is zero then the entry
8987           never expires.  Added boolean `expire' argument to the
8988           silc_idcache_add function in the lib/silccore/idcache.[ch].
8989           If it is TRUE the default expiry value is used.
8990
8991         * Added silc_server_free_client_data_timeout that is registered
8992           when client disconnects.  By default for 5 minutes we preserve
8993           the client entry for history - for WHOWAS command.
8994
8995 Tue Mar 13 13:26:18 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8996
8997         * Added support to the server to enforce that commands are not
8998           executed more than once in 2 seconds.  If server receives
8999           commands from client more frequently, timeout is registered
9000           to process the commands.  Affected file silcd/command.c.
9001           Added new function silc_server_command_process_timeout.
9002
9003         * Changed NICK_NOTIFY handling in client library to check that
9004           if the client's nickname was changed, so there is no need to
9005           resolve anything from the server.
9006
9007         * Removed error printing from the WHOIS and IDENTIFY commands.
9008           If error occurs then it is ignored silently in the client library.
9009           The application, however, may map the received error to
9010           human readable error string.  The application currently maps
9011           the NO_SUCH_NICKNAME error to string.
9012
9013         * Made the command status message public to the application.  Moved
9014           them from lib/silcclient/command_reply.c to
9015           lib/silcclient/command_reply.h.  The application can map the
9016           received command status to the string with the
9017           silc_client_command_status_message function.
9018
9019         * Added check to the server to check that client's ID is same
9020           as the Source ID in the packet the client sent.  They must
9021           match.
9022
9023 Tue Mar 13 12:49:21 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9024
9025         * Added dist-bzip hook to the Makefile.am to make bzip2
9026           compressed distributions.
9027
9028 Mon Mar 12 18:43:38 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9029
9030         * Server now enforces the maximum length for the nickname and
9031           the channel as protocol specification dictates.  128 bytes for
9032           nickname and 256 bytes for channel name.
9033
9034         * Moved the WHOIS printing to the application.  The client libary
9035           does not print out the WHOIS information anymore, the application
9036           must do it.  Renamed silc_client_command_reply_whois_print to
9037           the silc_client_command_reply_whois_save.
9038
9039           The client's idle time is also sent to the application now, and
9040           the idle is shown on screen.
9041
9042         * Added silc_client_command_reply_identify_save to save the
9043           received IDENTIFY entries.
9044
9045         * Do not check for channel private keys in message sending and
9046           reception if the channel does not have the PRIVKEY mode set.
9047           Affected file lib/silclient/client_channel.c.
9048
9049 Sun Mar 11 20:25:06 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9050
9051         * Fixed a minor bug if WHOIS and IDENTIFY command parsing that
9052           just surfaced after chaning the JOIN procedure.
9053
9054 Sun Mar 11 14:59:05 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9055
9056         * Added silc_client_get_clients_by_list to get client entries
9057           from Client ID list, that is returned for example by JOIN
9058           and USERS command replies.  The application should use this
9059           function for example when JOIN command reply is received to
9060           resolve the clients already on the channel (library does not
9061           do that anymore as USERS command reply is not used in the JOIN
9062           procedure anymore).  Affected files lib/silcclient/silcapi.h and
9063           lib/silcclient/idlist.c.
9064
9065         * JOIN command reply and USERS command reply returns now SilcBuffer
9066           pointers instead of unsigned char pointers when returning
9067           the client list and mode list.
9068
9069         * Added <Client ID> argument to the JOIN command reply, mainly
9070           for the server to identify for which client the command was
9071           originally sent.  Updated protocol specs accordingly.
9072
9073         * Added SilcDlist private_key pointer to the SilcChannelEntry
9074           in the client to support the channel private keys.  Affected
9075           file is lib/silcclient/idlist.h.
9076
9077         * Added SilcChannelPrivateKey argument to the function
9078           silc_client_send_channel_message so that application can choose
9079           to use specific private ke if it wants to.  If it is not provided,
9080           the normal channel key is used, unless private keys are set.
9081           In this case the first (key that was added first) is used
9082           as the encryption key.
9083
9084         * Implemented the support for channel private key handling.
9085           Implemented the following functions:
9086
9087           silc_client_add_channel_private_key,
9088           silc_client_del_channel_private_keys,
9089           silc_client_del_channel_private_key,
9090           silc_client_list_channel_private_keys and
9091           silc_client_free_channel_private_keys
9092
9093           Affected file lib/silcclient/client_channel.c.
9094
9095         * Added the support for the private keys in the channel message
9096           sending and encryption and in the message reception and
9097           decryption.  Affected funtions are
9098           silc_client_send_channel_message and silc_client_channel_message.
9099
9100 Sat Mar 10 21:36:22 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9101
9102         * Added SKE's key verify callback to the client library's
9103           KE protocol context. Affected files lib/silcclient/protocol.[ch].
9104
9105         * Removed the statement that server (or router) must send USERS
9106           command reply when joining to the channel so that the client
9107           knows who are on the channel.  Instead, the client list and
9108           client's mode list is now sent in the JOIN command reply to the
9109           client who joined channel.  This is better solution.
9110
9111         * Added function silc_server_get_users_on_channel and function
9112           silc_server_save_users_on_channel to the silcd/server.[ch].
9113
9114         * Removed function silc_server_command_send_users from the
9115           silcd/command.c.
9116
9117         * Do not show topic on the client library anymore.  The topic is
9118           sent in the command reply notify to the application and the
9119           application must show the topic now.
9120
9121 Sat Mar 10 00:07:37 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9122
9123         * Added client searching by nickname hash into the IDENTIFY and
9124           WHOIS commands in the server as they were clearly missing from
9125           them.  Affected file is silcd/command.c.
9126
9127         * Fixed a bug in private message receiving in the client library.
9128           The remote ID was freed and it wasn't supposed, now it is
9129           duplicated.
9130
9131 Fri Mar  9 12:40:42 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9132
9133         * Minor fix to the channel payload; allocate the data area, as it
9134           needs to be of specific length.
9135
9136         * If the key agreement port is zero then the operating
9137           system will define the bound port.  Affected files are
9138           lib/silcclient/silcapi.h and lib/silcclient/client_keyagr.c.
9139
9140         * Added new function silc_channel_payload_decrypt into the file
9141           lib/silccore/silcchannel.[ch].
9142
9143         * Moved the channel message etc, check from silc_packet_decrypt
9144           to applications.  The library calls now a generic
9145           SilcPacketCheckDecrypt callback which is to return TRUE or FALSE
9146           when the packet is either normal or special.  This was done to
9147           allow more wide range of checking that was not allowed when
9148           the code was in library.  Now applications can do virtually any
9149           checks to the packet and return to the library the decision how
9150           the packet should be processed.  Affected files are
9151           lib/silccore/silcpacket.[ch].
9152
9153           Added silc_server_packet_decrypt_check to the server and
9154           silc_client_packet_decrypt_check to the client library.
9155
9156         * Added silc_server_packet_send_srcdest into silcd/packet_send.[ch]
9157           to send with specified source and destination information.
9158
9159         * Channel message delivery between routers was broken after the
9160           channel key distribution was fixed earlier.  The channel key
9161           was used be to distributed to other routers as well which is not
9162           allowed by the protocol.  Now this is fixed and channel keys
9163           really are cell specific and the channel message delivery between
9164           routers comply with the protocol specification.
9165
9166         * Fixed various commands in server to check also the global list
9167           for the channel entry and not just the local list.  The affected
9168           file silcd/command.c.
9169
9170 Thu Mar  8 21:39:03 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9171
9172         * Added assert()s to buffer formatting and unformatting routines
9173           to assert (if --enable-debug) when error occurs.  Affected
9174           file: lib/silcutil/silcbuffmt.c.
9175
9176         * Changed to auto-reconnect to check whether the remote host is
9177           router and register the re-connect timeout if it is.  It used
9178           to check that whether we are normal server, but router must do
9179           auto-reconnect with another router as well.  Affected file
9180           silcd/server.c.
9181
9182         * Removed the [<key len>] option from CMODE command as the cipher
9183           name decides the key length, nowadays.  See the defined ciphers
9184           from the protocol specification.
9185
9186         * Added [<hmac>] option to the CMODE command to define the HMAC
9187           for the channel.  Added SILC_CMODE_HMAC channel mode.
9188
9189         * Added [<hmac>] option for the JOIN command so that user can
9190           select which HMAC is used to compute the MACs of the channel
9191           messages.
9192
9193         * Added Hmac field to the Channel Message Payload.  The integrity
9194           of plaintext channel messages are now protected by computing
9195           MAC of the message and attaching the MAC to the payload.  The
9196           MAC is encrypted.  Now, it is clear that this causes some
9197           overhead to the size of the packet but rationale for this is that
9198           now the receiver can verify whether the channel message decrypted
9199           correctly and also when private keys are set for the channel the
9200           receiver can decrypt the packet with several keys and check from
9201           the MAC which key decrypted the message correctly.
9202
9203         * Added silc_cipher_encrypt and silc_cipher_decrypt into the
9204           lib/silccrypt/silccipher.[ch].
9205
9206         * Added silc_hash_len to return the digest length into the
9207           lib/silcrypt/silchash.[ch].
9208
9209         * Rewrote parts of Silc Channel Payload interface in the
9210           lib/silccore/silcchannel.[ch].  The encode function now also
9211           encrypts the packet and parse function decrypts it.
9212
9213 Wed Mar  7 20:58:50 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9214
9215         * Fixed a minor formatting bug in the SKE's key material processing.
9216           It actually might have processed the keys wrong way resulting
9217           into wrong keys.
9218
9219         * Redefined the mandatory HMAC algorithms and added new algorithms.
9220           Added hmac-sha1-96 and hmac-md5-96 which are normal hmac-sha1
9221           and hmac-md5 truncated to 96 bits.  The mandatory is now
9222           hmac-sha1-96.  Rest are optional (including the one that used
9223           to be mandatory).  Rationale for this is that the truncated HMAC
9224           length is sufficient from security point of view and can actually
9225           make the attack against the HMAC harder.  Also, the truncated
9226           HMAC causes less overhead to the packets.  See the RFC2104 for
9227           more information.
9228
9229         * Added new [hmac] configuration section.  The SKE used to use
9230           the hash names (md5 and sha1) in the SKE proposal as HMCAS which
9231           is of course wrong.  The official names that must be proposed in
9232           the SKE are the ones defined in the protocol specification
9233           (hmac-sha1-96 for example).  The user can configure any hmac
9234           using any hash function configured in the [hash] section.  At
9235           least, the mandatory must be configured.
9236
9237           Rewrote the HMAC interface in lib/silccrypt/silchmac.[ch].
9238
9239         * Added HMAC list to the SKE proposal list.  It has now both
9240           hash algorithm list and HMAC list.  This makes the protocol
9241           incompatible with previous versions.  The SKE now seems to work
9242           the way it is supposed to work, for the first time actually.
9243
9244         * Defined plain Hash algorithms to the protocol specification.
9245           Added sha1 and md5.
9246
9247 Tue Mar  6 15:36:11 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9248
9249         * Implemented support for key agreement packets into the server.
9250           Added functions silc_server_key_agreement and
9251           silc_server_send_key_agreement.  Other than these functions,
9252           server has nothing to do with this packet.
9253
9254         * Added support for private message key packets into the server.
9255           Added functions silc_server_private_message_key and
9256           silc_server_send_private_message_key.
9257
9258         * Updated TODO.
9259
9260         * Changed the silc_[client|server]_protocol_ke_set_keys to be
9261           called in the protocol's final callback instead in the END
9262           protocol state.  This makes a little more sense and in the same
9263           time in client we can use the same protocol routines for normal
9264           key exchange and to key agreement packet handling as well.
9265
9266         * Added to both client's and server's KE protocol context the
9267           SilcSKEKeyMaterial pointer to save the key material.  We will
9268           bring the key material to the protocol's final callback by doing
9269           this.  The final callback must free the key material.
9270
9271         * Added SKE's packet_send callback into client's KE protocol
9272           context so that the caller can choose what packet sending function
9273           is used.  This way we can use different packet sending when
9274           doing normal SKE when doing key agreement packet handling (in
9275           the key agreement packet handling we do not want to encrypt
9276           the packets).
9277
9278         * Implemented the responder side of the key agreement routines
9279           in the client.  The client can now bind to specified port and
9280           accept incoming key negotiation.  The key material is passed
9281           to the application after the protocol is over.
9282
9283         * Implemented the processing of incoming Key Agreement packet
9284           in the client.  Added function silc_client_key_agreement to
9285           process the packet.
9286
9287         * Implemented the intiator side of the key agreement routines
9288           in the client.  The client can now initiate key agreement with
9289           another remote client.  The key material is passed to the
9290           application after the protocol is over.
9291
9292         * Created client_keyagr.c to include all the key agreement
9293           routines.
9294
9295         * Added macro SILC_TASK_CALLBACK_GLOBAL which is equal to the
9296           SILC_TASK_CALLBACK except that it is not static.
9297
9298         * Created client_notify.c and moved the Notify packet handling
9299           from the client.[ch] into that file.
9300
9301         * Created client_prvmsg.c and moved all private message and
9302           private message key routines from the client.[ch] into that file.
9303
9304         * Create client_channel.c and moved all channel message and
9305           channel private key routines from the client.[ch] into that file.
9306
9307         * Changed silc_client_get_client_by_id_resolve to resolve with
9308           WHOIS command instead of IDENTIFY command, in the file
9309           lib/silclient/idlist.c.
9310
9311 Mon Mar  5 18:39:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9312
9313         * Implemented the SKE's responder side to the Client library.
9314
9315         * When FAILURE is received to the protocol do not trust it
9316           blindly.  Register a timeout to wait whether the remote closes
9317           the connection as it should do it, only after that process the
9318           actual failure.  This was changed to both client and server.
9319
9320         * Added client_internal.h to include some of the structures
9321           there instead of client.h in lib/silcclient/.
9322
9323         * Added function silc_task_unregister_by_callback to unregister
9324           timeouts by the callback function.
9325
9326 Sat Mar  3 19:15:43 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9327
9328         * Some "Incomplete WHOIS info" errors has been appearing on the
9329           log files.  Took away the entry->userinfo check from WHOIS
9330           reply sending.  The entry->userinfo is now " " if client did not
9331           provide one.  I thought this was fixed earlier but something
9332           is wrong still.  Let's see if the error still appears.
9333
9334 Wed Feb 28 20:56:29 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9335
9336         * Fixed a minor bug in the login when the channel key is
9337           re-generated in the server.  It used to generate the key in
9338           wrong order and thus caused problems in the channel traffic.
9339
9340         * Fixed a minor bug in channel key distsribution after
9341           KICK command.  The key was not sent to the router even though
9342           it should've been.
9343
9344 Tue Feb 27 20:24:25 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9345
9346         * Added silc_ske_process_key_material_data as generic routine
9347           to process any key material as the SILC protocol dictates.  The
9348           function is used by the actual SKE library but can be used by
9349           applications as well.  This relates to the private message keys
9350           and the channel private keys since they must be processed the
9351           same way the normal SILC session keys.  The protocol dictates
9352           this.  Affected files: lib/silcske/silcske.[ch].
9353
9354           Added also silc_ske_free_key_material to free the
9355           SilcSKEKeyMaterial structure.
9356
9357         * Defined silc_cipher_set_key function to set the key for
9358           cipher without using the object's method function.  The affected
9359           files: lib/silccrypt/silccipher.[ch].
9360
9361         * Implemented silc silc_client_add_private_message_key,
9362           silc_client_add_private_message_key_ske,
9363           silc_client_del_private_message_key,
9364           silc_client_list_private_message_keys and
9365           silc_client_free_private_message_keys functions in the
9366           client library.
9367
9368           Added functions silc_client_send_private_message_key to send
9369           the Private Message Key payload and silc_client_private_message_key
9370           to handle incoming Private Message Key payload.
9371
9372         * Added Cipher field to the Private Message Key payload to set
9373           the cipher to be used.  If ignored, the default cipher defined
9374           in the SILC protocol (aes-256-cbc) is used.
9375
9376 Tue Feb 27 13:30:52 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9377
9378         * Removed lib/silcclient/ops.h file.
9379
9380           Redefined parts of the SILC Client Library API. Created new
9381           file silcapi.h that deprecates the ops.h file and defines the
9382           published Client Library API.  Defined also private message key
9383           API and channel private key API into the file.
9384
9385           This is the file that the application must include from the
9386           SILC Client Library.  Other files need not be included by
9387           the application anymore.
9388
9389         * Added new key_agreement client operation callback and also
9390           defined the Key Agreement library API for the application.
9391
9392 Tue Feb 27 11:28:31 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9393
9394         * Added new packet type: SILC_PACKET_KEY_AGREEMENT.  This packet
9395           is used by clients to request key negotiation  between another
9396           client in the SILC network.  If the negotiation is started it
9397           is performed using the SKE protocol.  The result of the
9398           negotiation, the secret key material, can be used for example
9399           as private message key.
9400
9401           Implemented the Key Agreement payload into the files
9402           lib/silccore/silauth.[ch].
9403
9404 Mon Feb 26 12:13:58 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9405
9406         * Redefined ciphers for the SILC protocol.  Added some new ciphers
9407           and defined the key lengths for the algorithms.  Changed the
9408           code accordingly.  The default key length is now 256 bits.
9409
9410         * Fixed SKE key distribution function silc_ske_process_key_material
9411           when the key length is more than 128 bits.  The default key
9412           length in SILC is now 256 bits.
9413
9414         * Added new command status type: SILC_STATUS_ERR_UNKOWN_ALGORITHM
9415           to indicate unsupported algorithm.
9416
9417         * Renamed rijndael.c to aes.c and all functions as well.
9418
9419         * Fixed a long standing channel key setting bug in client library.
9420           Weird that it has never surfaced before.
9421
9422         * Fixed bug in channel deletion.  If the entire channel is removed
9423           then it must also delete the references of the channel entry
9424           from the client's channel list as the client's channel entry and
9425           the channel's client entry share same memory.
9426
9427 Sun Feb 25 20:47:29 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9428
9429         * Implemented CONNECT and SHUTDOWN commands in the client.
9430
9431         * Implemented CLOSE command to the client.
9432
9433         * Added the function silc_idlist_find_server_by_name into the
9434           files silcd/idlist.[ch].
9435
9436           Added the function silc_idlist_find_server_by_conn into the
9437           files silcd/idlist.[ch].
9438
9439 Sat Feb 24 23:45:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9440
9441         * DIE command was renamed to SHUTDOWN.  Updated the both code
9442           and protocol specs.
9443
9444         * Defined SILC_UMODE_NONE, SILC_UMODE_SERVER_OPERATOR and
9445           SILC_UMODE_ROUTER_OPERATOR modes into lib/silccore/silcmode.h.
9446
9447         * Implemented CONNECT, CLOSE and SHUTDOWN commands to the server
9448           side.
9449
9450         * Added function silc_server_create_connection function to create
9451           connection to remote router.  My server implementation actually
9452           does not allow router to connect to normal server (it expects
9453           that normal server always initiates the connection to the router)
9454           so the CONNECT command is only good for connecting to another
9455           router.
9456
9457 Sat Feb 24 16:03:45 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9458
9459         * Added SILC_NOTIFY_TYPE_KICKED to indicate that the client
9460           or some other client was kicked from the channel.
9461
9462           Implemented the handling of the notify type to both client
9463           and server.
9464
9465           Implemented silc_server_send_notify_kicked to send the KICKED
9466           notify.  It is used to send it to the server's primary router.
9467
9468         * Implemented the KICK command into server and client.
9469
9470         * Added `query' argument to the silc_idlist_get_client function
9471           to indicate whether to query the client from server or not if
9472           it was not found.
9473
9474         * Added new command status type SILC_STATUS_ERR_NO_CHANNEL_FOPRIV
9475           to indicate that the client is not channel founder.
9476
9477         * Updated TODO.
9478
9479 Sat Feb 24 00:00:55 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9480
9481         * Removed the rng context from SilcPacketContext structure and
9482           changed that the packet routine uses the Global RNG API.
9483
9484 Fri Feb 23 11:22:57 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9485
9486         * Added support for quit message that client can "leave" on the
9487           channel when it quits the SILC.  It is ditributed inside the
9488           SILC_NOTIFY_TYPE_SIGNOFF notify type.
9489
9490           Added silc_server_free_client_data that will take the
9491           signoff message as argument.
9492
9493         * Changed SKE routines to use the silc_pkcs_sign/verify routines.
9494
9495 Thu Feb 22 23:05:36 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9496
9497         * Updated parts of the protocol specification to keep it up
9498           to date.
9499
9500 Thu Feb 22 15:08:20 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9501
9502         * Added List flag (SILC_PACKET_FLAG_LIST) to indicate list of
9503           payloads in one packet.
9504
9505         * Deprecated following packet types: NEW_ID_LIST, NEW_CHANNEL_LIST,
9506           NEW_CHANNEL_USER_LIST, SET_MODE and SET_MODE_LIST.  List packets
9507           use now the new List flag.
9508
9509         * Also deprecated the following packet types: REPLACE_ID,
9510           NEW_CHANNEL_USER and REMOVE_CHANNEL_USER packet types.
9511
9512         * Added list support for Notify packet in server.
9513
9514         * Added silc_server_send_notify_channel_change to send the
9515           CHANNEL_CHANGE notify type to replace channel ID's.  Deprecates
9516           the silc_server_send_replace_id.
9517
9518         * Added silc_server_send_notify_nick_change to send the
9519           NICK_CHANGE notify type.  Deprecates the function
9520           silc_server_send_replace_id.
9521
9522         * Added silc_server_send_notify_join to send the JOIN notify type.
9523           Deprecates the function silc_server_send_new_channel_user.
9524
9525         * Added silc_server_send_notify_leave to send LEAVE notify type.
9526           Deprecates the function silc_server_send_remove_channel_user.
9527
9528         * Added silc_server_send_notify_cmode and
9529           silc_server_send_notify_cumode to send CMODE and CUMODE notify
9530           types.  Deprecates the silc_server_send_set_mode function.
9531
9532         * Added SERVER_SIGNOFF notify type to indicate that server has
9533           quit.  This means that all clients on the channel from that
9534           server will drop.  This can be also used when netsplit happens.
9535
9536           Deprecated REMOVE_ID packet type since it is not needed anymore
9537           even from server.
9538
9539           Added silc_server_send_notify_server_signoff to send the
9540           SERVER_SIGNOFF notify type.  Deprecates the function
9541           silc_server_send_remove_id.
9542
9543           Added also silc_server_send_notify_signoff to send the
9544           SIGNOFF notify type.
9545
9546         * Employed the PKCS #1. It is the mandatory way to do RSA in the
9547           SILC protocol from this day on.  Changed the protocol
9548           specification as well.
9549
9550         * Added silc_server_send_notify_topic_set to send TOPIC_SET
9551           notify type.  It is used between routers to notify about
9552           topic changes on a channel.
9553
9554         * Added silc_id_dup into lib/silccore/id.[ch] to duplicate
9555           ID data.
9556
9557         * Partly updated the protocol specification to comply with the
9558           changes now made.  It is still though a bit outdated.
9559
9560         * The JOIN notify type now takes one extra argument <Channel ID>.
9561           The packet used to be destined to the channel but now the
9562           JOIN type may be sent as list thus it is impossible to
9563           destine it to any specific channel.  By adding this argument
9564           it is again possible.
9565
9566 Wed Feb 21 22:39:30 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9567
9568         * Added CREDITS file.  The CHANGES and CREDITS file will appear
9569           in the distribution as well.
9570
9571 Wed Feb 21 14:17:04 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9572
9573         * Implemented CMODE_CHANGE, CUMODE_CHANGE and TOPIC_SET notify
9574           types in the server's silcd/packet_receive.c.
9575
9576         * Implemented CMODE and CUMODE to work in router environment.
9577
9578         * Fixed minor encoding and decoding buglet from the
9579           lib/silccore/silcmode.c.
9580
9581         * Fixed buffer overflow from lib/silcclient/command.c in USERS
9582           command parsing.
9583
9584 Wed Feb 21 12:44:00 EET 2001  Mika Boström <bostik@lut.fi>
9585
9586         * Changed all SilcConfigServer* and silc_config_server* to
9587           SilcServerConfig* and silc_server_config*, respectively.
9588           Patch by Bostik.
9589
9590 Wed Feb 21 00:10:00 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9591
9592         * Associated the ID (client or server ID) to the Authentication
9593           Payload to avoid any possibility of forging.  Updated the
9594           protocol specification and the code accordingly.
9595
9596 Tue Feb 20 14:14:14 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9597
9598         * The RSA key length is now save to the RsaKey context in the
9599           key generation process in lib/silccrypt/rsa.c.  The key length
9600           is now used to figure out the maximum size of the block allowed
9601           to be encrypted/signed.
9602
9603         * Added silc_mp_mp2bin_noalloc into lib/silcmath/mpbin.[ch].  It
9604           is equivalent to the silc_mp_mp2bin but does not allocate any
9605           memory.
9606
9607         * Changed silc_mp_mp2bin API to take length argument.  If it is
9608           non-zero then the buffer is allocated that large.  If zero, then
9609           the size is approximated using silc_mp_sizeinbase, which however
9610           is not relieable.
9611
9612         * Created Global RNG API which is global RNG that application can
9613           initialize.  After initializing, any routine anywhere in the
9614           code (including library) can use RNG without allocating a new
9615           RNG object.  This was done to allow this sort of use of the
9616           RNG in code that has no chance to allocate RNG object.  All
9617           applications currently allocate this and many routines in the
9618           library use this.  Affected file lib/silccrypt/silcrng.[ch].
9619
9620         * Removed the RNG kludge from lib/silcmath/primegen.c and changed
9621           it to use the Global RNG API.
9622
9623         * Defined Authentication Payload into protocol specification that
9624           is used during SILC session to authenticate entities.  It is
9625           used for example by client to authenticate itself to the server
9626           to obtain server operator privileges.
9627
9628           Implemented this payload into the lib/silccore/silcauth.[ch].
9629           Implemented also routines for public key based authentication
9630           as the new protocol specification dictates.
9631
9632           Moved definitions of different authentication methods from
9633           lib/silccore/silcprotocol.h into lib/silccore/silcauth.h.
9634
9635         * Added silc_pkcs_encrypt, silc_pkcs_decrypt, silc_pkcs_sign,
9636           silc_pkcs_verify and silc_pkcs_sign_with_hash and
9637           silc_pkcs_verify_with_hash functions into the file
9638           lib/silccrypt/silcpkcs.[ch].
9639
9640 Mon Feb 19 19:59:28 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9641
9642         * The client entry's userinfo pointer must be always valid.
9643           Otherwise the [<unknown>] bug will surface beacuse the WHOIS
9644           will fail since it requires the userinfo.  Now, the userinfo
9645           is allocated as "" if actual userinfo does not exist.  Actually,
9646           it must exist and it is totally Ok to drop client connections
9647           that does not announce the userinfo.  However, we will make
9648           this workaround for now.
9649
9650         * Added silc_net_get_remote_port into lib/silcutil/silcnet.[ch]
9651           to return the remote port by socket.
9652
9653 Mon Feb 19 14:26:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9654
9655         * Changed SILC_SERVER_COMMAND_EXEC_PENDING macro to the name
9656           SILC_SERVER_PENDING_EXEC and added an new macro
9657           SILC_SERVER_PENDING_DESTRUCTOR which is called to free the
9658           data or when error occurs while processing the pending command.
9659
9660           Added new argument `destructor' into silc_server_command_pending
9661           and to the SilcServerCommandPending object.  This destructor is
9662           now called after calling the pending callback or if error occurs
9663           immediately.  If error occurs the actual pending callback won't
9664           be called at all - only the destructor.  The destructor may be
9665           NULL if destructor is not needed.
9666
9667           All this applies for client library code as well.  Similar
9668           changes were made there as well for the pending commands.
9669
9670           In the client, the application must now allocate the
9671           SilcClientCommandContext with the silc_client_command_alloc
9672           function.
9673
9674         * Added reference counter to the SilcServerCommandContext.  Added
9675           function silc_server_command_alloc and silc_server_command_dup
9676           functions.
9677
9678           Same type of functions added to the client library for the same
9679           purpose as well.
9680
9681         * Removed the cmd_ident from IDListData away since it is now
9682           global for all connections.  It is the command identifier used
9683           in command sending and with pending commands.  The affected file
9684           is silcd/idlist.h.
9685
9686         * Added reference counter to the SilcSocketConnection objecet to
9687           indicate the usage count of the object.  The object won't be
9688           freed untill the reference counter hits zero.  Currently only
9689           server uses this, and client ignores it.  The client must be
9690           set to use this too later.  The affected files are
9691           lib/silccore/silcsockconn.[ch].  Added also the function
9692           silc_socket_dup to increase the reference counter.
9693
9694           This was mainly added because it is possible that the socket
9695           is removed underneath of pending command or other async
9696           operation.  Now it won't be free'd and proper DISCONNECTING
9697           flags, etc. can be set to avoid sending data to connection that
9698           is not valid anymore.
9699
9700         * Added SILC_SET_DISCONNECTING to server.c when EOF is read from
9701           the connection.  After that it sets SILC_SET_DISCONNECTED.
9702           It is, however, possible that the socket data is not still freed.
9703           The silc_server_packet_process now checks that data is not
9704           read or written to connection that is DISCONNECTED.  The socket
9705           get's freed when the reference counter hits zero.
9706
9707 Mon Feb 19 00:50:57 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9708
9709         * Changed the client operation API: channel_message operation's
9710           `sender' is now the client entry of the sender, not the nickname
9711           and the `channel' is the channel entry, not the channel name.
9712
9713           In the private_message operation the `sender' is now also the
9714           client entry of the sender not the nickname.
9715
9716           Affected file is lib/silcclient/ops.h and all applications
9717           using the client operations.
9718
9719 Sat Feb 17 22:11:50 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9720
9721         * Moved the calling of ops->connect() from connect_to_server_final
9722           into receive_new_id functin since that is the point when the
9723           client is actually allowed to send traffic to network.  The
9724           affected file is lib/silcclient/client.c.
9725
9726 Sat Feb 17 13:15:35 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9727
9728         * When receiving NEW_CHANNEL_LIST, NEW_CHANNEL_USER_LIST,
9729           NEW_ID_LIST and SET_MODE_LIST packets, broadcast the list packet
9730           (if needs broadcasting) instead of broadcasting the packets one
9731           by one which would make a burst in the network traffic.
9732
9733         * Added `broadcast' argument to the functions in silcd/server.[ch]
9734           silc_server_create_new_channel[_with_id] to indicate whether
9735           to send New Channel packet to primary router.
9736
9737 Sat Feb 17 01:06:44 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9738
9739         * Added new function into the silcd/server.[ch] files:
9740           silc_server_create_new_channel_with_id to create new channel with
9741           already existing Channel ID.
9742
9743         * Added new packet type SILC_PACKET_SET_MODE_LIST into the file
9744           lib/silccore/silcpacket.h.  This packet is used t send list of
9745           Set Mode payloads inside one packet.  Server uses this to set
9746           the modes for the channels and clients on those channels, that it
9747           announced to the router when it connected to it.  The protocol
9748           specification has been updated accordingly.
9749
9750         * The silc_server_new_channel did not handle the packet coming
9751           from normal server as it normally does not send that.  However,
9752           when it announces its channels it does send it.  Implemented
9753           the support for that.
9754
9755         * Added SILC_ID_CHANNEL_COMPARE macro to compare to Channel ID's
9756           into the file lib/silccore/id.h.
9757
9758 Fri Feb 16 23:57:29 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9759
9760         * Fixed memory leaks in the functions silc_idlist_del_client,
9761           silc_idlist_del_channel and silc_idlist_del_server in the file
9762           silcd/idlist.c.  All of those leaked like a sieve.
9763
9764         * Fixed some small memory leaks in the client's function
9765           silc_client_notify_by_server.
9766
9767         * Added functions into silcd/server.c: silc_server_announce_clients,
9768           silc_server_announce_channels and silc_server_announce_server.
9769           These functions are used by normal and router server to announce
9770           to its primary router about clients, channels and servers (when
9771           router) that we own.  This is done after we've connected to the
9772           router.
9773
9774           These functions effectively implements the following packet types:
9775           SILC_PACKET_NEW_CHANNEL_LIST, SILC_PACKET_NEW_CHANNEL_USER_LIST
9776           and SILC_PACKET_NEW_ID_LIST.
9777
9778         * Added new functions into the silcd/packet_receive.[ch]:
9779           silc_server_new_id_list, silc_server_new_channel_list and
9780           silc_server_new_channel_user_list to handle the incoming
9781           NEW_ID_LIST, NEW_CHANNEL_LIST and NEW_CHANNEL_USER_LIST packets.
9782
9783         * Added support of changing Channel ID in the function
9784           silc_server_replace_id.  If the server that announces a channel
9785           to the router already exists in the router (with same name but
9786           with different Channel ID), router is responsible to send
9787           Replace ID packet to the server and force the server to change
9788           the Channel ID to the one router has.
9789
9790         * Added new notify type SILC_NOTIFY_TYPE_CHANNEL_CHANGE to notify
9791           client that the Channel ID has been changed by the router.  The
9792           normal server sends this to the client.  Client must start using
9793           the new Channel ID as the channel's ID.
9794
9795           Implemented handling of this new type into lib/silcclient/client.c
9796           into the function silc_client_notify_by_server.
9797
9798         * Added new function silc_idlist_replace_channel_id into the files
9799           silcd/idlist.[ch] to replace the Channel ID.
9800
9801 Fri Feb 16 14:14:00 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9802
9803         * Call silc_server_command_identify_check always when processing
9804           the IDENTIFY command in silcd/command.c
9805
9806 Thu Feb 15 20:07:37 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9807
9808         * Added new packet type SILC_PACKET_HEARTBEAT that is used to
9809           send keepalive packets.  The packet can be sent by clients,
9810           servers and routers.
9811
9812           Added function silc_socket_set_heartbeat into the file
9813           lib/silccore/silcsockconn.[ch] to set the heartbeat timeout.
9814           If not set, the heartbeat is not performed.  The actual
9815           heartbeat is implemented in the low level socket connection
9816           library.  However, application is responsible of actually
9817           sending the packet.
9818
9819           Added silc_server_send_heartbeat to send the actual heartbeat
9820           packet into silcd/packet_send.[ch].  Server now performs
9821           keepalive with all connections.
9822
9823         * Added silc_task_get_first function into lib/silcutil/silctask.c
9824           to return the timeout task with shortest timeout.  There was a bug
9825           in task unregistration that caused problems.  TODO has been
9826           updated to include that task system must be rewritten.
9827
9828         * The client library will now resolve the client information when
9829           receiving JOIN notify from server for client that we know but
9830           have incomplete information.
9831
9832         * Rewrote parts of silc_server_remove_from_channels and
9833           silc_server_remove_from_one_channel as they did not remove the
9834           channel in some circumstances even though they should've.
9835
9836         * Encryption problem encountered in server:
9837
9838           The LEAVE command used to send the Channel Key packet to the
9839           router immediately after generating it.  However, the code
9840           had earlier sent Remove Channel user packet but not immediately,
9841           ie. it was put to queue.  The order of packets in the router
9842           was that Channel Key packet was first and Remove Channel User
9843           packet was second, even though they were encrypted in the
9844           reverse order.  For this reason, MAC check failed.  Now, this
9845           is fixed by not sending the Channel Key packet immediately but
9846           putting it to queue.  However, this is more fundamental problem:
9847           packets that are in queue should actually not be encrypted
9848           because packets that are sent immediately gets encrypted
9849           actually with wrong IV (and thus MAC check fails).  So, packets
9850           that are in queue should be encrypted when they are sent to
9851           the wire and not when they put to the queue.
9852
9853           However, the problem is that the current system has not been
9854           designed to work that way.  Instead, the packet is encrypted
9855           as soon as possible and left to the queue.  The queue is then
9856           just purged into wire.  There won't be any fixes for this
9857           any time soon.  So, the current semantic for packet sending
9858           is as follows:
9859
9860           o If you send packet to remote host and do not force the send
9861           (the packet will be in queue) then all subsequent packets to the
9862           same remote host must also be put to the queue.  Only after the
9863           queue has been purged is it safe again to force the packet
9864           send immediately.
9865
9866           o If you send all packets immediately then it safe to send
9867           any of subsequent packets through the queue, however, after
9868           the first packet is put to queue then any subsequent packets
9869           must also be put to the queue.
9870
9871           Follow these rules and everything works fine.
9872
9873 Thu Feb 15 14:24:32 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9874
9875         * Added new function silc_server_remove_clients_by_server to
9876           remove all client entries from ID list when the server connection
9877           is lost.  In this case it is also important to invalidate all
9878           client entires as they hold the invalid server entry.  This
9879           fixes fatal bug when server has lost connection and will reconnect
9880           again.
9881
9882 Wed Feb 14 16:03:25 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9883
9884         * Made some sanity checks to silc_server_daemonise like to check
9885           whether the requested user and group actually exists.
9886
9887         * Added sanity check to SKE's silc_ske_responder_finish to check
9888           that the public and private key actually is valid.
9889
9890         * Invalidate the client's nickname when receiving Replace ID
9891           packet and the Client ID is being replaced.  This means that the
9892           server will query the nickname if someone needs it (client)
9893           a bit later.
9894
9895         * Sort the ID Cache in client library when the ID Cache data
9896           has changed (needs sorting).
9897
9898         * Do not allow for SILC client to create several connections to
9899           several servers.  The client does not support windows right now
9900           and generating multiple connections causes weird behaviour.
9901
9902           Irssi-silc client does support windows and can handle several
9903           connections without problems, see: www.irssi.org and SILC plugin.
9904
9905         * Fixed some places where client was added to the IDList.  The
9906           rule of thumb is following (in order to get everything right):
9907           If the client is directly connected local client then the
9908           `connection' argument must be set and `router' argument must be
9909           NULL to silc_idlist_add_client function.  If the client is not
9910           directly connected client then the `router' argument must
9911           bet set and the `connection' argument must be NULL to the
9912           silc_idlist_add_client function.
9913
9914         * The funtion silc_server_packet_send_local_channel actually did
9915           not check whether the client was locally connected or not.  It
9916           does that now.  Fixed a bug related to LEAVE command.
9917
9918         * Fixed Remove Channel User payload parsing bug in server's
9919           silcd/packet_receive.c.  Fixed a bug related to LEAVE command.
9920
9921         * The server's silc_server_save_channel_key now checks also the
9922           global ID list for the channel as it might not be in the local
9923           list.  Fixed a bug related to LEAVE command.
9924
9925         * Is this the end of the [<unknown>] buglet that has been lurking
9926           around for a long time?  A little for loop fix in server's
9927           silc_server_command_whois_parse that is used by both IDENTIFY
9928           and WHOIS command.  At least, this was a clear bug and a cause
9929           of one type of [<unknown>] buglet.
9930
9931         * WHOIS and IDENTIFY commands call the function
9932           silc_server_command_[whois/identify]_check function even if
9933           we are not router server.
9934
9935 Tue Feb 13 19:55:59 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9936
9937         * Added --with-gmp configuration option.  If set the GMP
9938           is always compiled in the SILC source tree.  If not set then
9939           it is checked whether the system has the GMP3 installed.  If
9940           it has then the GMP won't be compiled (the system's headers
9941           and library is used), if it doesn't have it then the GMP is
9942           compiled in the SILC source tree.
9943
9944 Mon Feb 12 11:20:32 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9945
9946         * Changed RSA private exponent generation to what PKCS #1
9947           suggests.  We try to find the smallest possible d by doing
9948           modinv(e, lcm(phi)) instead of modinv(e, phi).  Note: this is
9949           not security fix but optimization.
9950
9951 Sun Feb 11 18:19:51 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9952
9953         * Added new config entry [Identity] to fork the server and run
9954           it as specific user and group.  A patch from Bostik.
9955
9956         * Imported Dotconf configuration library into lib/dotconf.
9957           This will be used to create the SILC configuration files later.
9958           It will appear in the distsribution after this commit.
9959
9960 Sat Feb 10 21:13:45 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9961
9962         * A big code auditing weekend happening.  Auditing code for
9963           obvious mistakes, bugs and errors.  Also, removing any code
9964           that is obsolete.
9965
9966           Removed files for being obsolete:
9967
9968           o lib/silcutil/silcbuffer.c (the buffer interface is entirely in
9969           inline in the file lib/silcutil/silcbuffer.h)
9970
9971           o lib/silcutil/silcbufutil.c (the header has inline versions)
9972
9973           Changed code to fix possible error conditions:
9974
9975           o The buffer formatting routines now check that the destination
9976           buffer really has enough space to add the data.  This applies for
9977           both buffer formatting and unformatting
9978           (lib/silcutil/silcbuffmt.[ch]).  Also, the entire buffer
9979           unformatting was changed to accomodate following rules:
9980           XXX_*STRING_ALLOC will allocate space for the data into the pointer
9981           sent to the function while XXX_*STRING will not allocate or copy
9982           the data into the buffer.  Instead it sets the pointer from the
9983           buffer into the pointer sent as argument (XXX_*STRING used to
9984           require that the pointer must be allocated already).  This change
9985           makes this whole thing a bit more consistent and more optimized
9986           (note that the data returned in the unformatting with XXX_*STRING
9987           must not be freed now).  The routines return now -1 on error.
9988
9989           o Tried to find all code that use buffer_format and buffer_unformat
9990           and added return value checking to prevent formatting and
9991           especially unformatting errors and possible subsequent fatal
9992           errors.
9993
9994           o Changed ske->x and ske->KEY to mallocated pointers in
9995           lib/silcske/silcske.h.  Fixed possible data and memory leak.
9996
9997           o Added return value checking to all *_parse* functions.  Fixed
9998           many memory leaks as well.
9999
10000           o Added length argument to silc_id_str2id in lib/silccore/id.[ch]
10001           so that buffer overflows would not happen.  All code now also
10002           checks the return value as it can fail.
10003
10004 Mon Feb  5 20:08:30 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10005
10006         * Added reconnection support to server if the normal server looses
10007           its connection to the router (for example if router is rebooted).
10008           The server performs normal reconnection strategy implemented
10009           to the server.  Affected file silcd/server.c.
10010
10011 Sun Feb  4 13:18:32 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10012
10013         * Added new packet type SILC_PACKET_SET_MODE that is used to
10014           distribute the information about changed modes (for clients,
10015           channels and clients channel modes) to all routers in the
10016           network.  Updated the protocol specification accordingly.
10017
10018           Added functions into silcd/packet_send.c and
10019           silcd/packet_receive.c: silc_server_send_set_mode,
10020           silc_server_set_mode.
10021
10022           Added new files silcmode.[ch] into lib/silccore that implements
10023           the encoding and decoding of Set Mode Payload.  Added new type
10024           SilcSetModePayload.  Moved the definitions of different modes
10025           from lib/silccore/silcchannel.h into lib/silccore/silcmode.h.
10026
10027 Sat Feb  3 15:44:54 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10028
10029         * Oops, a little mistake in server's connection authentication
10030           protocol.  The protocol is not ended with FAILURE but with
10031           SUCCESS if the authentication is Ok. :)  Affected file is
10032           silcd/protocol.c.
10033
10034         * Implemented NICK_CHANGE notify handling in server in the file
10035           silcd/packet_receive.c  The NICK_CHANGE notify is distributed to
10036           the local clients on the channel.  After the changing nickname
10037           in router environment snhould work and the [<unknown>] nickname
10038           should appear no more.
10039
10040           The silc_server_replace_id function that receives the Replace ID
10041           payload now sends the NICK_CHANGE notify type also in the file
10042           silcd/packet_receive.c
10043
10044         * Changed WHOIS and IDENTIFY command to support the maximum amount
10045           of arguments defined in protocol specs (3328 arguments).  This
10046           fixed a bug that caused problems when there were more than three
10047           users on a channel.
10048
10049 Fri Feb  2 11:42:56 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10050
10051         * Added extra parameter, command identifier, to the
10052           silc_client_send_command so that explicit command identifier
10053           can be defined.
10054
10055           Changed that ID list routines uses specific command identifier
10056           when sending WHOIS/IDENTIFY requests to the server so that they
10057           can be identified when the reply comes back.
10058
10059           Affected files lib/silcclient/command.[ch],
10060           lib/silcclient/client.c and lib/silcclient/idlist.[ch].
10061
10062         * Added `sender' argument to silc_server_packet_send_to_channel
10063           to indicaet the sender who originally sent the packet to us
10064           that we are now re-sending.  Ignored if NULL.  Affected file
10065           silcd/packet_send.[ch].
10066
10067         * Added some server statistics support in silcd/server_internal.h
10068           SilcServerStatistics structure and around the server code.  Also
10069           send some nice statistics information when client is connecting
10070           to the client.
10071
10072 Thu Feb  1 23:31:21 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10073
10074         * Fixed channel ID decoding in server's JOIN command reply in
10075           silcd/command_reply.c
10076
10077         * Fixed braodcasting of replace ID payload to not to send it if
10078           we are standalone server in silcd/packet_receive.c.
10079
10080         * Fixed all channel message sending routines to not to send
10081           packets to clients that has router set, since they are routed
10082           separately in the same function earlier.  Affects file
10083           silcd/packet_send.c and all channel packet sending functions.
10084
10085         * In USERS reply, res_argv[i] are not allocated, the table
10086           is allocated.  Thus changed that free the table, not its
10087           internals.
10088
10089         * In server's whois_check and identify_check if the client is
10090           locally connected do not send any WHOIS commands - they are not
10091           needed.
10092
10093 Thu Feb  1 21:32:27 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10094
10095         * Fixed some minor bugs in client when sending WHOIS command.  The
10096           arguments was in wrong order.
10097
10098         * Removed statis function add_to_channel from server in
10099           silcd/command.c that was previously used with the joining but
10100           is obsolete now.
10101
10102         * Tested USERS command in router environment successfully with two
10103           routers, two servers and two clients.
10104
10105 Thu Feb  1 00:54:26 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10106
10107         * Reorganized the USERS command and command reply in client library
10108           in lib/silcclient/command.c and lib/silcclient/command_reply.c.
10109           When the command is given by user we register a pending command
10110           callback that will reprocess the command after the reply has been
10111           received from the server.  When reprocessing the packet we then
10112           display the information.  Thus, the USERS information is displayed
10113           now in the command callback instead of in the command reply
10114           callback.  The processing of the command is same as previously
10115           when server has sent the command reply in the JOINing process.
10116
10117         * Added to USERS command in silcd/command_reply.c to join the client,
10118           we didn't use to know about, to the channel after we've created
10119           a client entry for it.  Also, for clienet we did know already still
10120           check whether it is on the channel or not and add it if not.
10121
10122         * Removed silc_server_command_join_notify as the function and its
10123           use was obsolete.
10124
10125 Tue Jan 30 22:39:15 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10126
10127         * Changed the client's pending command handling to the same as the
10128           server's pending command handling.  It is also now possible to
10129           execute command reply functions from other command reply
10130           function as the function callbacks for commands and command
10131           replies are one and same.  The pending commands are not static
10132           list anymore, it is mallocated SilcDList in lib/silcclient/client.h
10133           in client connection context.  Thus, pending commands are server
10134           connection specific as it is convenient.
10135
10136           Changed the function silc_client_command_pending and
10137           silc_client_command_pending_del and added new function
10138           silc_client_command_pending_check.  Removed the
10139           SILC_CLIENT_CMD_REPLY_EXEC, and SILC_CLIENT_PENDING_COMMAND_CHECK
10140           macros.
10141
10142         * Added cmd_ident, current command identifier, to the client
10143           connection context in lib/silcclient/client.h to keep track on
10144           command identifiers used in command sending.  Client's command reply
10145           function handling now supports the mandatory command identifiers.
10146
10147         * Added SILC_CLIENT_COMMAND_EXEC_PENDING macros to all command reply
10148           funtions in client to fully support pending command callbacks.
10149
10150         * NOTE: the name_list in USERS (old NAMES) command is NOT sent anymore
10151           as one of the arguments to the application in the command reply
10152           client operation.
10153
10154         * NOTE: The FORWARDED flag is depracated.  It used to be depracated
10155           before first releasing SILC but came back.  Now it is removed again
10156           and should come back nomore.  The FORWARDED flag was used only
10157           by the JOINing procedure by forwarding the command packet to router.
10158           Now, the JOINing procedure has been changed to more generic (due
10159           to various router environment issues) and FORWARDED is not needed
10160           anymore for anything.  The protocol specification is yet to be
10161           updated.
10162
10163           Now, removed silc_server_packet_forward from server and the flag
10164           SILC_PACKET_FORWARDED from lib/silccore/silcpacket.h.
10165
10166 Tue Jan 30 00:05:05 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10167
10168         * Renamed NAMES command to USERS command.  The NAMES was named that
10169           due to historical reasons.  Now it is renamed.  Also, rewrote
10170           parts of the USERS command.  The nickname list is not sent anymore
10171           by the server.  Only Client ID and mode lists are sent in the USERS
10172           command.  Changed this also to the protocol specification.
10173
10174           The client now resolves the names and stuff after it receives
10175           the USERS list from the server when joining to the channel.
10176
10177         * WHOIS and IDENTIFY commands has been changed to support multiple
10178           Client ID's per command.  One can now search for multiple users
10179           in the network by sending only one WHOIS or IDENTIFY command.
10180           Changed the code and the protocol specifications.
10181
10182         * Removed silc_server_command_identify_parse and changed that IDENTIFY
10183           uses silc_server_command_whois_parse to parse the request. */
10184
10185         * If normal server, do not parse the WHOIS and IDENTIFY requests
10186           before sending it to the router.  Saves some time.
10187
10188 Sun Jan 28 16:19:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10189
10190         * Fixed JOIN command on client library.  Wrong number of arguments
10191           used to crash the client.
10192
10193         * Added silc_server_channel_has_global function to check whether
10194           channel has global users or not.
10195
10196         * Added silc_server_channel_has_local function to check whether channel
10197           has locally connected clients on the channel.
10198
10199         * The silc_server_remove_from_one_channel now checks whether the
10200           channel has global users or not after given client was removed from
10201           the channel.  It also checks whether the channel has local clients
10202           on the channel anymore.  If it does not have then the channel entry
10203           is removed as it is not needed anymore.
10204
10205         * The silc_server_notify now checks on JOIN notify whether the joining
10206           client is one of locally connected or global.  If it is global then
10207           the channel has now global users on the channel and that is marked
10208           to the channel entry.  Also, it now saves the global client to
10209           global list who is joining and JOINs it to the channel.  This is
10210           for normal server, that is.
10211
10212           Changed silc_server_send_notify_on_channel,
10213           silc_server_packet_relay_to_channel and
10214           silc_server_packet_send_to_channel check if we are normal server
10215           and client has router set (ie. global client) do not send the
10216           message to that client, as it is already routed to our router.
10217
10218         * Implemented LEAVE notify type handling in silc_server_notify
10219           function.
10220
10221         * Tested LEAVE command in router environment successfully.  Tested
10222           with two routers, two servers and two clients.
10223
10224         * Updated TODO.
10225
10226         * idlist_find_xxx_by_id routines now dumps the ID on the debug mode.
10227
10228         * Implemented SIGNOFF notify type handling in silc_server_notify
10229           function.
10230
10231         * silc_server_remove_id now removes the client entry from all channels
10232           it has joined and thusly sends SIGNOFF notify type.
10233
10234         * Rewrote the NAMES list generation in server by removing two excess
10235           loops.  The lists are created now inside one loop.
10236
10237 Sat Jan 27 22:34:56 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10238
10239         * silc_server_remove_channel_user checks now also global list
10240           for channel and client.
10241
10242         * silc_server_new_channel_user checks now both local and global
10243           list for channel and client.  Fixed a bug in client id decoding.
10244           Used to decode wrong buffer.
10245
10246         * silc_server_channel_message checks now both local and global
10247           list for channel entry.
10248
10249         * Tested channel joining (hence JOIN) in router environment
10250           successfully.  Tested with two routers, two servers and two
10251           clients.
10252
10253         * Tested channel message sending in router environment successfully.
10254
10255 Thu Jan 11 03:22:57 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10256
10257         * Added silc_server_save_channel_key into server.[ch] to save the
10258           received channel key in Channel Key payload processing. It is
10259           also used in JOIN command reply handling.
10260
10261           Equivalent function silc_client_save_channel_key added into
10262           client.[ch] into client library.
10263
10264         * Changed JOIN command reply to send information whether the channel
10265           was created or not (is existing already) and the channel key
10266           payload.  Changed protocol specs accordingly.
10267
10268         * Fixed bugs in WHOIS and IDENTIFY command reply sending when
10269           the request was sent by ID and not by nickname.  Crashed on
10270           NULL dereference.
10271
10272 Sat Dec 23 21:55:07 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10273
10274         * Fixed a bug in Client library.  IDENTIFY and WHOIS reply functions
10275           now correctly save the received data.
10276
10277         * silc_server_free_sock_user_data now notifies routers in the
10278           network about entities leaving the network.
10279
10280           At the same time implemented functions silc_server_remove_id
10281           and silc_server_send_remove_id to receive and send REMOVE_ID
10282           packets.  The packet is used to notify routers in the network
10283           about leaving entities.  The ID removed will become invalid in
10284           the network.
10285
10286         * Added function silc_idlist_del_server into server. Removes and
10287           free's server entry from ID list.
10288
10289         * silc_server_private_message function now checks, if we are router,
10290           that the destination ID really is valid ID, naturally.
10291
10292         * In router when NEW_ID packet is received (for new client) the
10293           hash of the Client ID is saved in the ID Cache but the
10294           client->nickname is set to NULL, instead of putting the hash
10295           to it as well.
10296
10297           IDENTIFY command now also checks that client->nickname must be
10298           valid. If it is not if will request the data from the server who
10299           owns the client.  Added new function
10300           silc_server_command_identify_check.
10301
10302         * Added silc_command_set_command into lib/silccore/silcommand.[ch]
10303           to set the command to already allocated Command Payload.
10304
10305         * Tested private message sending in router environment with two
10306           routers, two servers and two clients.  Fixed minor bugs and now
10307           it works fine.
10308
10309         * Fixed segfault from client's NAMES command. Used to crash if
10310           not on any channel.
10311
10312         * Forwarded packets must not be routed even if it is not destined
10313           to the receiver.  Changed server code comply with this.
10314
10315 Sun Dec 17 14:40:08 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10316
10317         * Added `require_reverse_mapping' boolean value to ServerParams
10318           structure. If TRUE (not default) the server will require that
10319           the connecting host has fully qualified domain name.
10320
10321           If the reverse mapping is not required and hostname could not be
10322           found the IP address is used as hostname.
10323
10324 Sat Dec 16 17:39:54 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10325
10326         * Implemented version string checking to both client and server.
10327           The check is incomplete currently due to the abnormal version
10328           strings used in development version of SILC.
10329
10330         * Changed all command functions in server to use the new
10331           CHECK_ARGS macro.
10332
10333 Fri Dec 15 15:55:12 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10334
10335         * Changed char *data to unsigned char *data in ID Cache system to
10336           support binary data as ID Cache data. Changed code to support
10337           binary data in lib/silccore/idcache.c.
10338
10339         * Renamed silc_server_packet_relay_command_reply to
10340           silc_server_command_reply as it is normal packet receiving
10341           function. Rewrote the function to accept command replys for
10342           servers and not only for clients.
10343
10344         * Mark remote router always as registered server if we are connecting
10345           to it.  Otherwise, commands sent by the router to us are ignored.
10346
10347         * All ID List find routines now returns the ID Cache Entry pointer
10348           as well if requested.
10349
10350         * WHOIS command works now in router environment, tested with two
10351           routers, two servers and two clients.
10352
10353         * Cleaned up and rewrote IDENTIFY command. IDENTIFY should work now
10354           in router environment (as it is almost equivalent to WHOIS) but
10355           hasn't been tested thoroughly.  Added new functions:
10356
10357           silc_server_command_identify_parse
10358           silc_server_command_identify_send_reply
10359           silc_server_command_identify_from_client
10360           silc_server_command_identify_from_server
10361
10362         * Disabled route cache adding because adding two different ID's with
10363           same IP replaces the old cache entry thus giving wrong route.
10364           The entry->router->connection is always the fastest route anyway
10365           so route cache may not be needed.  Of course, new routes maybe
10366           established after receiving the ID when the entry->router->connection
10367           might not be anymore the most optimal.
10368
10369 Thu Dec 14 15:55:35 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10370
10371         * Add route cache for received ID for fast routing.
10372
10373         * Added silc_server_packet_route to route received packet on router
10374           that is not destined to us.
10375
10376         * Renamed silc_server_get_route to silc_server_route_get.
10377
10378         * Added id_string and id_string_len fields into SilcServer to
10379           include encoded ServerID for fast comparing without excess
10380           encoding of the ID's.
10381
10382         * Cleaned up WHOIS command on server side. Added following static
10383           functions:
10384
10385           silc_server_command_whois_parse
10386           silc_server_command_whois_check
10387           silc_server_command_whois_send_reply
10388           silc_server_command_whois_from_client
10389           silc_server_command_whois_from_server
10390
10391         * Added macro SILC_SERVER_COMMAND_CHECK_ARGC to check mandatory
10392           arguments in command replies. All command functions should be
10393           updated to use this macro.
10394
10395 Sun Dec 10 23:52:00 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10396
10397         * Minor typo fixes on command reply handling on server.
10398
10399 Tue Nov 28 11:05:39 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10400
10401         * Added silc_server_command_add_to_channel internal routine to add
10402           the client to the channel after router has created the channel and
10403           sent command reply to the server.
10404
10405         * Added generic silc_server_send_command to send any command from
10406           server.
10407
10408         * Use static buffer with ID rendering instead of duplicating data.
10409
10410 Mon Nov 27 21:39:40 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10411
10412         * Fixed a channel user mode bug when joining to a channel server gave
10413           everybody channel founder rights, oops.
10414
10415         * We mark ourselves as the router of the incoming server connection
10416           if we are router ourselves.  This way we can check in some packet
10417           sending functions whether it is locally connected server.  For
10418           incoming router connections we put NULL.
10419
10420         * For router sending packets locally means now always sending the
10421           packet cell wide; to local clients and local servers.  For normal
10422           server sending packet locally means sending it to only local
10423           clients.
10424
10425         * Fixed the JOIN command to really work in router environment.  If the
10426           channel is created it is always created by the router.  Router is
10427           also responsible of making the initial joining to the channel,
10428           sending JOIN notify to the sending server and distributing
10429           NEW_CHANNEL and NEW_CHANNEL_USER packets.  Hence, if the channel
10430           does not exist server doesn't do anything else but forward the
10431           command to the router which performs everything.
10432
10433         * Added silc_server_send_channel_key function to send the Channel Key
10434           payload.
10435
10436         * Added silc_server_create_channel_key to create new channel key.  The
10437           channel key is now re-generated everytime someone joins or leaves
10438           a channel, as protocol dictates.  Note: channel->key_len is the
10439           key length in bits.
10440
10441 Wed Nov 22 22:14:19 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10442
10443         * Splitted server.[ch] finally.  Created now packet_send.[ch] and
10444           packet_receive.[ch] to separate packet sending and receiving
10445           routines.  The server.[ch] now includes everything else including
10446           actual packet processing (writing and reading data) and other
10447           server issues.
10448
10449           Renamed silc_server_private_message_send_internal to
10450           silc_server_send_private_message.  The routine is still though
10451           used only to relay private messages as server does not send
10452           private messages itself.
10453
10454           Renamed silc_server_new_channel to silc_server_create_new_channel
10455           and added new function sicl_server_new_channel that handles the
10456           incoming New Channel packet.  Added also new sending function
10457           silc_server_send_new_channel to send New Channel Payload.
10458
10459         * Added new function silc_server_notify to process incoming notify
10460           packet to the server/router. Server may then relay the notify
10461           to clients if needed.
10462
10463         * Added new function silc_server_new_channel_user to process incoming
10464           New Channel User packet.  Router will redistribute the packet and
10465           send JOIN notify to its local clients and locally connected servers
10466           if needed.  Normal server will send JOIN notify to its local client
10467           on same channel when received this packet.  Added also corresponding
10468           sending function silc_server_send_new_channel_user to sent the
10469           payload.
10470
10471         * Added boolean route argument to send_notif_to_channel and
10472           packet_send_to_channel functions to attempt to route the packet
10473           if it is TRUE and send only locally if it is FALSE.
10474
10475 Tue Nov 21 19:49:31 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10476
10477         * silc_server_replace_id now broadcasts the received replace ID
10478           packet if it is not broadcast packet already. The router must
10479           broadcast to inform other routers about changed ID.
10480
10481         * Added backpointer to server's router into SilcServer context in
10482           silcd/server_internal.h.
10483
10484         * Fixed silc_server_packet_broadcast to send correct broadcast
10485           packets.
10486
10487         * The channel key is now distributed to the local client as soon
10488           as it is received from the router (in router environment) so that
10489           no other packet may be sent for the channel until client has
10490           received the key.
10491
10492         * silc_server_remove_channel_user now broadcasts the received
10493           Remove Channel User packet if it is not broadcast packet already.
10494           The router must broadcast to inform other routers about removed
10495           channel user.
10496
10497         * Added users field into SilcPacketContext that is a reference count
10498           of the context.  One can increase the reference count by calling
10499           silc_packet_context_dup which is now changed to just increase the
10500           reference count instead of duplicating the data.  The reference
10501           count is decresed by calling silc_packet_context_free that will
10502           free the data after the reference count hits zero.
10503
10504           For now on the packet context and everything allocated into it
10505           (including the raw packet from network) must be freed by calling
10506           the new silc_packet_context_free function.  Added also new function
10507           silc_packet_context_alloc that must be used now to allocate the
10508           context.  This also means that if a routine is asynchronous from
10509           silc_[client/server]_packet_parse_type the packet context must
10510           be duplicated by calling silc_packet_context_dup.  Otherwise it
10511           gets free'd after silc_[client/server]_packet_parse_type returns.
10512           Also, one must remember that if packet is duplicated then its
10513           reference count must be decresed by calling the free function as
10514           many times as it was duplicated.
10515
10516         * Changed SilcBuffer field from protocol contexts to SilcPacketContext
10517           from both client and server.
10518
10519 Mon Nov 20 23:47:03 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10520
10521         * Made joining to a channel working in router environment.
10522
10523         * Cleaned up JOIN command on server side and create function
10524           silc_server_command_join_channel internal routine to make the
10525           joining happen.
10526
10527 Thu Nov  9 21:12:39 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10528
10529         * Changed silc_command_pending list to SilcDList.  Also, added
10530           `ident' field to SilcServerCommandPending structure to identify
10531           the reply and to call correct callback.
10532
10533           Added silc_server_command_pending_check function to replace the
10534           corresnponding macro.  The silc_command_pending list is not
10535           extern anymore.
10536
10537         * Added silc_command_set_ident into lib/silccore/silccommand.[ch]
10538           to set identifier to previously allocated Command Payload.  It
10539           is used to set identifier for command when resending Command
10540           Payload.
10541
10542         * Added silc_command_payload_encode_payload to encode Command
10543           Payload buffer from SilcCommandPayload structure.
10544
10545         * Added silc_argument_payload_encode_payload to encode Argument
10546           payload buffer from SilcArgumentPayload structure.
10547
10548 Wed Nov  8 21:03:28 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10549
10550         * Changed WHOIS command to support router connection on server side.
10551           The whois request is always sent to router unless the server is
10552           standalone server.  After server has received the reply from the
10553           router will it send the reply to the client.
10554
10555         * Added silc_server_packet_broadcast into silcd/server.[ch] to
10556           broadcast received broadcast packet.  The function is used only
10557           by router.  The broadcast packet is always sent to the router's
10558           primary route.
10559
10560         * Added silc_id_render function in lib/silcutil/silcutil.[ch] to
10561           render given ID to printable string, for log files for example.
10562
10563 Tue Nov  7 22:14:19 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10564
10565         * Made basic router to router connections working.  At least they
10566           can now connect to each other but nothing really works the way
10567           they are supposed - yet.
10568
10569         * Added new initiator token to RouterConnection configuration
10570           file in silcd/serverconfig.[ch].  It is used to tell whether we
10571           are the initiator to the remote router or whether we'll expect
10572           the other end to connect.
10573
10574         * Moved registering of listener task to silc_server_init, hence
10575           the server starts listenning as soon as it is run, even if it
10576           does not have connections to other routers.  Let's see how well
10577           this will work.
10578
10579         * Changed default connection retry timeouts for more suitable in
10580           silcd/server.h.
10581
10582         * Removed cipher and such arguments from silc_idlist_add_client
10583           and silc_idlist_add_server prototypes from silcd/idlist.[ch].
10584           Added new function silc_idlist_add_data to add the keys and stuff
10585           to any ID entry.
10586
10587         * Added SilcIDListData structure and added it to SilcClientEntry
10588           and SilcServerEntry as their first field in the structure.  This
10589           way we can explicitly cast the ID entries to the SilcIDListData
10590           structure and get common data for the entries.  In past, we had
10591           to first check what type of connection it is and then cast it to
10592           correct ID entry type.  Now, we can directly cast the opaque
10593           pointer to the SilcIDListData (no matter what ID entry it actually
10594           is) and get the data needed.
10595
10596 Mon Nov  6 21:56:12 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10597
10598         * Wow, found a bug in scheduler.  The scheduler uninitialized itself
10599           in some circumstances even if threre were timeout tasks, though not
10600           IO tasks, but tasks anyway.  Now fixed.
10601
10602         * Defined SilcServerConnection structure to hold connection specific
10603           stuff about directly connected servers and routers.  The definition
10604           is currently in silcd/server_internal.h.  I thought about having
10605           a bit more important role fro this struct but for now it is used
10606           only when connecting to other server (or router actually).
10607
10608         * Added connecting retry support in server when connecting to
10609           router(s).  The retry feature implement exponential backoff
10610           algorithm.  Also, added SilcServerParams structure to hold default
10611           parameters for server.  For now, it include these retry settings
10612           and are hard coded.  After server is moded to be as Silc Server
10613           Library this structure will be more important.
10614
10615 Sun Nov  5 22:28:44 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10616
10617         * Changed client librarys channel->clients table to SilcList and
10618           changed code accordingly.
10619
10620 Thu Nov  2 16:28:01 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10621
10622         * Changed client's channel table to SilcList and changed code
10623           accordingly.  Also changed SilcChannelClientEntry to include back-
10624           pointer to the channel so that client entry can use that structure
10625           as list as well and we have fast cross-reference to the channel.
10626           This change dramatically decreased the complexity of channel
10627           handling with client entry and vice versa (removed one extra
10628           loop when searching for channel entry from many functions).
10629
10630         * Changed server->sim from table to SilcDList and changed code
10631           accordingly.
10632
10633         * NAMES command can now be used from user interface.  It will show
10634           the user list on the channel, neatly.
10635
10636         * Added realname pointer to SilcClientEntry in lib/silcclient/idlist.h.
10637           Code now saves realname of the user if it becomes available.
10638
10639         * Renamed configure.in to configure.in.pre and made ./prepare
10640           script to automatically add correct version string to
10641           configure.in which it creates from configure.in.pre.
10642
10643 Wed Nov  1 17:21:26 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10644
10645         * NAMES command reply now shows users mode with the nickname when
10646           joining to channel.
10647
10648         * Moved silc_client_ch[u]mode[_char] functions from
10649           silc/clientutil.[ch] to lib/silcclient/client.[ch].  Though, that
10650           place sucks, they are utility functions and should be in some
10651           other file.
10652
10653         * Fixed some unsigned int's to unsigned short's.  Patch by cras.
10654
10655         * Fixed contrib/getopt*.[ch] to not require config.h.  Patch by
10656           cras.
10657
10658 Tue Oct 31 20:10:37 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10659
10660         * Updated README.
10661
10662         * Added TRQ (efficient deque and list library) into lib/trq.  This is
10663           a very good list library that is currently used in the SILC.  Defined
10664           SilcList API over the library because I didn't like the API very
10665           much.  See lib/trq/silclist.h for the API and examples of how to
10666           use the API.  Fixed various places in the code to use the new
10667           SilcList API. The SilcList is meant for lists that has a structure
10668           already defined as a list.  It is not suitable to add just some
10669           context to the list (in TRQ, the context is the list actually).
10670
10671           So, I defined SilcDList that can be used for the purpose where
10672           predefined list structure does not exit.  This can be used as
10673           such list.  Now some context just can be added to the SilcDList.
10674           Currently this list is not used in the SILC just yet, though there
10675           are a lot places where this can replace dynamically allocated
10676           tables and I will fix these places, later, to use SilcDList.
10677           See lib/trq/silcdlist.h for SilcDList (they are all inline functions,
10678           and use TRQ internally).
10679
10680           Also fixed some annoying warning messages that the original TRQ
10681           code generated.  Also minor changes to TRQ's Makefile.in.
10682
10683         * Added support for querying by Client ID to both WHOIS and
10684           IDENTIFY commands into server, as required by the protocol.
10685
10686         * Removed method function pointers from SilcBuffer structure. They
10687           weren't used to anything and just increased the context size for
10688           no good reason.  This change also made silc_buffer_alloc and
10689           silc_buffer_free functions inline functions.
10690
10691         * Disabled command flooding detection support until it's fixed so
10692           that it accepts commands in but does not execute them more than once
10693           in two seconds.
10694
10695         * Added silc_net_localhost(), to return local hostname, into
10696           lib/silcutil/silcnet.[ch].  Also added client->hostname pointer
10697           that must be initialized before calling silc_client_init.
10698
10699         * Added new function: silc_server_send_notify_on_channels to send
10700           notify messages to all channels client has joined.  It is assured
10701           that the message is sent only once per client.
10702
10703         * Moved silc_log_format (from lib/silcutil/silclog.[ch] into
10704           lib/silcutil/silcutil.[ch] as silc_format function.  The new
10705           function is generic and is used by server as well, not only by
10706           the logging routines.
10707
10708         * Added new SKE status type: SILC_SKE_STATUS_BAD_VERSION to indicate
10709           the provided version string was not acceptable.  Added new function:
10710           silc_ske_check_version into lib/silcske/silcske.h.  The function
10711           must be implemented by the application (client or server) and it
10712           does not reside in the SKE library.  The function checks the version
10713           string remote end sent.
10714
10715         * Added back pointers (to opaque context and to SilcSocketConnection)
10716           into SilcPacketContext structure into lib/silccore/silcpacket.h.
10717
10718         * Added silc_packet_context_dup into lib/silccore/silcpacket.[ch] to
10719           duplicate packet context structure.
10720
10721         * Changed `notify' client operation to send same arguments as client
10722           receives from server except for ID's.  ID's are mapped to correct
10723           ID entry and that is returned.  Also, if channel entry is not sent
10724           by server but the notify is for channel the channel entry is sent
10725           to application (otherwise application doesn't know that it is for
10726           channel (library gets it from packet's Destination ID)).
10727
10728         * Added silc_client_remove_from_channels into client library to
10729           remove a client from all channels it has joined to.  Used when
10730           received SIGNOFF notify from server.  Added also new function
10731           silc_client_replace_from_channels to replace old ID entry with
10732           new ID entry on all channels.  Used when received NICK_CHANGE
10733           notify from server.
10734
10735         * Fixed ID Cache list handling in silc_idlist_get_client in
10736           lib/silcclient/idlist.c.  Also, added silc_idlist_get_client_by_id
10737           to get (or query) client by ID.
10738
10739         * Updated TODO list.
10740
10741         * Added connection authentication status message defined by the
10742           protocol: SILC_CONN_AUTH_OK and SILC_CONN_AUTH_FAILED and added the
10743           support for these into the code in client and server side.
10744
10745         * Added generic function silc_client_send_command to send any command
10746           with variable argument list.  Application should use this function
10747           to send commands if the command functions provided by the library
10748           does not suite for the application's user interface needs.
10749
10750         * Added new `failure' client operation.  Application is notified about
10751           received failure packet if client is executing a protocol.  In this
10752           case the protocol's execution has failed.
10753
10754         * Added SKE's end notify to send the SKE_SUCCESS notify message that
10755           is required by the protocol.
10756
10757         * Added SILC_PROTOCOL_STATE_FAILURE to indicate received failure
10758           packet from remote.  SILC_PROTOCOL_STATE_ERROR indicates local
10759           error at our end.
10760
10761         * Added status flag to SilcSKE object to indicate realtime status
10762           of the SKE protocol.
10763
10764         * Application receives now exactly same command reply arguments as
10765           the library receives from server.  However, if ID is received the
10766           corresponding ID entry is returned to the application (eg. Client
10767           ID is mapped to correct SilcClientEntry entry and that is returned).
10768           Changed command_reply client operation due to this change.
10769
10770         * Changed all ID's in commands and in command replys as ID Payloads.
10771           Change affected both client and server side codes.
10772
10773           All ID's sent in SILC network (with execption of ID's in SILC
10774           Packet header) are sent in ID Payload to support variable length
10775           ID's.
10776
10777         * Server now notifies nick changes and notifies all clients on
10778           the channels about the new nickname (about the new Client ID,
10779           actually).
10780
10781         * Implemented CMODE command to change channel modes. Supports all
10782           channel modes defined by the protocol specs except ban and invite
10783           lists. (Also, private channel key mode is supported but support for
10784           setting private channel key in client is missing, thus, this mode
10785           has no effect on client side (except that server requires that the
10786           client uses private channel key and normal channel traffic does not
10787           work anymore)).
10788
10789           Also, invite mode works per se, but INVITE command does not work
10790           yet correctly, so you can set channel as invite only channel but
10791           inviting clients to the channel does not work (it is yet to be
10792           thought what's the best way to do it).
10793
10794         * Added new command SILC_COMMAND_CUMODE to change user mode on the
10795           channel.  Defined user modes: CHANNEL_FOUNDER and CHANNEL_OPERATOR.
10796           Implemented CUMODE command to change user's mode on the channel.
10797           Supports all modes defined by the protocol specs.
10798
10799         * Added NAMES command reply to return users modes on the channel.
10800
10801         * Removed unnecessary and slow ciphers from lib/silccrypt.
10802
10803         * Set SO_KEEPALIVE option to connection sockets by default.
10804
10805         * Added new command reply status: SILC_STATUS_USER_NOT_ON_CHANNEL.
10806
10807         * Added notify types: MOTD, CMODE_CHANGE and CUMODE_CHANGE.  Also,
10808           redefined the Notify Payload into protocol specs.
10809
10810         * Added silc_id_payload_parse_id to get ID directly from raw
10811           ID payload data.
10812
10813 Mon Oct  9 20:57:02 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10814
10815         * Changed SILC_COMMAND_IDENTIFY in protocol specification to
10816           accept searching by Client ID as well.
10817
10818         * Added support for LEAVE and SIGNOFF notify types in client library.
10819
10820         * Added silc_id_payload_parse_data into lib/silccore/silcpayload.[ch]
10821           to parse ID Payload from raw data.
10822
10823 Sun Oct  8 19:33:08 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10824
10825         * Added flags parameter into silc_ske_assemble_security_properties
10826           function in lib/silcske/silcske.[ch].
10827
10828         * Changed notify client operation to fit better for notify messages
10829           sent by server.  The notify payload received from server is now
10830           passed to the application (after parsing it to SilcNotifyPayload).
10831           It is application's responsibility to retrieve the arguments
10832           from the payload and show the message the way it wants.  The message
10833           sent by server is implementation specific.
10834
10835         * Changed public keys to comply with the protocol specification.
10836           Old public keys are not supported anymore and are not compatible.
10837
10838         * Removed nickname from Channel Payload as the latest draft removed
10839           it.  The client must resolve the nickname from the NAMES command
10840           reply received when it joined the channel.
10841
10842           Also, changed all channel_xxxx_payload to channel_payload_xxxx.
10843
10844 Sat Oct  7 21:55:01 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10845
10846         * Fixed some errors in protocol specification drafts.
10847
10848         * Created lib/silccore/silcnotify.c to implement Notify Payload
10849           encoding and decoding, lib/silccore/silcpayload.[ch] to implement
10850           generic payloads described by protocol specifications.  The file
10851           includes implementations for ID Payload and Argument Payload.
10852
10853         * Changed Command Payload implementation to use the new Argument
10854           Payload.  Changed command_xxxx_payload to command_payload_xxxx
10855           to comply with SILC coding conventions.
10856
10857         * Added suppport for Argument Payload handling in Notify Payload
10858           implementation as protocol requires it.  Added the new support
10859           into server and client lib as well.
10860
10861 Thu Oct  5 21:16:28 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10862
10863         * Added support for multiple nicknames on same channel.  [n] is
10864           added locally to the nickname if there are more than one same
10865           nicknames on the channel.
10866
10867         * Server now sends all nicknames that matched WHOIS request.
10868           Client also shows the list received from server.
10869
10870         * Added TOPIC command to client side.  User can now set and show
10871           current topic on channel.
10872
10873         * Added MOTD command to client and server.  Also, server sends the
10874           motd when client connects to the server.
10875
10876         * Changed version strings to comply ISO 8601.
10877
10878 Wed Oct  4 23:29:06 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10879
10880         * Fixed protocol error handling in client library.  It should now
10881           cope even if the SKE fails for some reason.
10882
10883         * Made new protocol specification drafts for submitting to IETF.
10884
10885         * Implemented TOPIC command to server in silcd/command.c.
10886
10887         * Added two new notify types into lib/silccore/silcnotify.h:
10888           SILC_NOTIFY_TYPE_NICK_CHANGE and SILC_NOTIFY_TYPE_TOPIC_SET to
10889           notify nickname change and topic setting/change on a channel.
10890
10891         * API change of command_reply operation in client library.  The
10892           application gets now the status type received from server as well.
10893
10894 Sat Sep 30 16:57:42 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10895
10896         * Removed the function just added to lib/silcutil/silcschedule.[ch].
10897
10898         * Cras fixed and optimized the packet handling even further and
10899           it should work now.  Minor change to the prototype of function
10900           silc_packet_receive_process in lib/silccore/silcpacket.[ch].
10901
10902 Sat Sep 30 08:48:47 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10903
10904         * Added new function into lib/silcutil/silcschedule.[ch]:
10905           silc_schedule_with_fd to select() a specified fd.  The function
10906           returns after timeout expires or data arrives or goes.  The
10907           function is used by packet routines to wait that all data is
10908           received from network.
10909
10910         * Fixed data reading from network in lib/silccore/silcpacket.c.
10911           The code now assures that all data is read from the fd and then
10912           continues packet processing.  This was a bug fix since the code
10913           used to drop some data in some circumstances.
10914
10915         * Added new function into lib/silcclient/client.[ch]:
10916           silc_client_start_key_exchange to start key exchange after
10917           connection has been established to server.  The code internally
10918           now uses this funtion but its main purpose was to provide it
10919           for applications that perform their own connecting.  After
10920           application has created a connection it merely calls this
10921           function to start the key exchange between client and server.
10922           The library takes care of everything else after that.
10923
10924           Updated also lib/silcclient/README to explain the usage of
10925           this new function.
10926
10927         * Do not send to application information that connection has
10928           been established.  Application gets notified it by connect
10929           operation anyway.
10930
10931 Thu Sep 28 23:40:19 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10932
10933         * Applied cras's patch to add silc_schedule_one function.  The
10934           function runs scheduler once and returns.
10935
10936         * Fixed the scheduler after cras messed it up.  The timeout
10937           handling works now as it's supposed to work.
10938
10939         * Added into lib/silccore/ silcnotify.h to include notify
10940           message types support.  Changed silc_server_send_notify*
10941           functions, in server.[ch], to support those new notify types.
10942           Added the support for the notify types into client library,
10943           as well.  Added new notify client operation into ops.h in
10944           lib/silcclient/.
10945
10946         * Changed silc_server_packet_send_to_channel to send normal
10947           packets instead of just channel message packets.  The function
10948           is now used to send the notify packets to channels.  It is not
10949           used to send channel message packets anymore, as server never
10950           sends them anymore.
10951
10952         * Added explicit casting into lib/silcutil/silcbuffmt.c to few
10953           va_arg()s as it seems to require it nowadays.  I guess, if SILC
10954           is compiled with older va_arg() the new code should work anyway.
10955
10956 Wed Sep 13 18:10:14 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10957
10958         * Splitted core library.  Core library (lib/silccore) includes
10959           now only SILC protocol specific core (and common) components.
10960           Created new utility library (lib/silcutil) that includes more
10961           generic purpose stuff.  The stuff for util library was taken
10962           from the old core library.  This was minor and easy split.
10963
10964         * Created SILC Client Library (lib/silcclient) that includes
10965           implementation of the SILC client without user interface.  This
10966           was major move from silc/ directory.  The code has been changed
10967           so that it is transparent towards the user interface.  The
10968           silc/ directory includes now the same user interface as before
10969           and it uses the new client library.  Read lib/silcclient/README.
10970           Basicly, the client library performs everything else related
10971           to SILC except user interface handling.  Also, configuration
10972           files are considered to be part of user interface and library
10973           does not handle them.
10974
10975           This change also changed a lot of structures, function naming etc.
10976           Most important change was that SilcClientWindow object was
10977           renamed to SilcClientConnection in the client library.  Created
10978           also new file lib/silcclient/ops.h.  Also added new files
10979           silc/local_command.[ch] and silc/client_ops.[ch].
10980
10981           All these changes were made to make it easier for user interface
10982           designers to create what ever user interface for the SILC client
10983           they want.
10984
10985           It is also expected that the server will be moved to lib
10986           directory as well and SILC Server Library will be created;
10987           sometimes in the future.
10988
10989         * Removed Local commands from lib/silccore/silccommand.h as
10990           they are application specific and new client library does not
10991           handle any of those anymore.
10992
10993         * Several functions moved to lib/silcutil/silcutilc.[ch] from
10994           old client implementation in silc/.
10995
10996         * Added support for callback functions in SILC_LOG_* macros.
10997           Application can now set its own callbacks that will be called
10998           instead of using the default functions that will always print
10999           the debug messages to stderr (or stdout).  Also, debugging can
11000           now be disabled by setting silc_debug to FALSE and re-enabled by
11001           setting it to TRUE.  Note, that logging will still work even
11002           if debugging is disabled.
11003
11004           New functions in lib/silcutil/silclog.[ch]: silc_log_set_callbacks,
11005           silc_log_reset_callbacks, silc_log_set_debug_callbacks and
11006           silc_log_reset_debug_callbacks.
11007
11008         * To enable debugging in silc client one must give now -d
11009           option on command line.
11010
11011         * Changed silc_schedule_init to automatically allocate task queues
11012           if they are not allocated before calling it.
11013
11014 Thu Sep  7 10:49:33 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11015
11016         * Added GMP 3.1 into math library.
11017
11018 Sun Aug 20 21:27:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11019
11020         * Added SILC_PACKET_REMOVE_CHANNEL_USER to remove a client from
11021           a channel in SILC network.  The packet is used by servers and
11022           routers to notify other routers that user has left a channel.
11023           This little feature was missing until now.  Added the feature
11024           to protocol specification as well.
11025
11026           Added functions: silc_server_send_remove_channel_user and
11027           silc_server_remove_channel_user into server.[ch].
11028
11029         * Added SILC_PACKET_REKEY and SILC_PACKET_REKEY_DONE into
11030           lib/silccore/silcpacket.h.  However, they are not implemented
11031           yet.
11032
11033 Sat Aug 19 23:04:16 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11034
11035         * Fixed joining to a channel and sending channel messages
11036           between server and router.  The channel message sending should
11037           now work inside a cell.
11038
11039 Tue Jul 25 20:46:13 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11040
11041         * Fixed the private message sending between server and router.
11042           The private message sending should now work inside a cell.
11043
11044         * Added silc_server_replace_id into server.[ch] to replace
11045           existing ID in the SILC network.
11046
11047         * Added silc_idlist_find_server_by, silc_idlist_replace_client_id
11048           and silc_idlist_replace_server_id into idlist.[ch] in server.
11049
11050 Mon Jul 24 18:33:31 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11051
11052         * Fixed the server to server connections.  Server can again now
11053           connect to router.  Router to router connections probably does
11054           not work just yet.
11055
11056 Thu Jul 20 13:15:01 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11057
11058         * Added dynamic protocol registering support.  Now protocols can
11059           registered and unregistered on the fly.  Patch by cras.
11060
11061 Wed Jul 19 19:08:46 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11062
11063         * Added lib/contrib directory to hold routines that some platforms
11064           don't have but are needed by SILC.
11065
11066         * Added getopt.c, getopt1.c and getopt.h from GNU C library
11067           into lin/contrib to provide getopt() and getopt_long() for
11068           those who don't have it.
11069
11070 Tue Jul 18 20:41:20 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11071
11072         * Added AWAY command to client.  When away message is set and
11073           client receives a private message packet the client automatically
11074           replies to the sender with the away message.
11075
11076         * Fixed a bug in lib/silcmath/mpbin.c: silc_mp_mp2bin.  This
11077           bug seemed to be the cause of recent problems when compiling
11078           with gcc-2.95.
11079
11080         * Added version detection support to SKE protocol specification
11081           and added the new changes to the SKE implementation as well.
11082           There were other minor changes in the SKE protocol as well.
11083
11084           Many changes in lib/silcske/silcske.[ch] and in
11085           lib/silcske/payload.[ch].
11086
11087         * Added ^U functionality, clear input line.  Patch from cras.
11088
11089 Mon Jul 17 23:33:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11090
11091         * Mainly small bugfixes on core library.  Fixed some debugging
11092           logging and buffer overflow in silclog.c.
11093
11094         * Updated config.sub and config.guess on the distribution tree.
11095
11096 Sat Jul 15 15:33:48 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11097
11098         * Added command lagging support in server. Client may execute
11099           commands now only once in two seconds.
11100
11101 Thu Jul 13 22:10:21 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11102
11103         * Optimized packet reception. MAC computation and checking is now
11104           also more optimized.  A lot previously duplicated code is now
11105           used as generic by both client and server.
11106
11107         * Fixed key pair generation in clientutil.c
11108
11109 Wed Jul 12 18:28:07 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11110
11111         * Added into lib/silccore/silcbufutil.[ch] new function;
11112           silc_buffer_realloc.
11113
11114         * Moved generic packet sending/encryption functions to
11115           lib/silccore/silcpacket.[ch] from client and server.  Some
11116           rewriting of the functions.
11117
11118         * Moved all generic packet reception/decryption functions to
11119           lib/silccore/silcpacket.[ch] from client and server.  The
11120           packet processing is now much cleaner in both client and server.
11121           These were major changes in both client and server.
11122
11123         * Created many common functions in server to do packet sending.
11124           Previously code were duplicated a lot, this has been removed
11125           with these changes.
11126
11127 Tue Jul 11 20:27:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11128
11129         * Rewrote major parts of the ID cache system.  Don't know
11130           whether it is better now or not but at least the API is more
11131           cleaner now.
11132
11133         * Major rewrite on ID cache stuff on client because of the ID
11134           cache API changes.  Added idlist.c to client.
11135
11136         * Also major rewrite on ID cache stuff on server as well.
11137           Major rewrite of idlist.[ch]. SilcXXXList's are now named
11138           SilcXXXEntry's.  We won't keep anymore idlist specific pointers
11139           in hand, instead they are all put into the ID cache system now.
11140           All server_idlist_* routines uses ID cache now instead of
11141           traversing its own lists (those lists does not exist anymore).
11142           SilcIDList though still exists.  Also, SilcXXXEntry's are
11143           now pointers.
11144
11145 Sun Jul  9 15:19:24 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11146
11147         * Finally made the SKE implementation compliant to the protocol
11148           specification.  All mp integers are now binary encoded as
11149           opposed being HEX encoded.
11150
11151         * Added lib/silcmath/mpbin.[ch].  Encoding mp intergers to and
11152           from binary data.
11153
11154         * Added into lib/silccore/silcutil.[ch] PEM encoding/decoding
11155           functions: silc_[encode/decode]_pem.  Also added function
11156           silc_encode_pem_file to PEM encode with newlines ('\n') for
11157           saving into a file.
11158
11159         * SILC public keys are now encoded either PEM or binary.  Same
11160           option is for private keys as well.  By default private keys
11161           are binary encoded and public keys PEM encoded.  Silly HEX
11162           encoding were removed.
11163
11164         * Added into lib/silccrypt/silchash.[ch] silc_hash_fingerprint
11165           function to create fingerprints.
11166
11167         * Fixed a bug in SHA1; does not change the original data anymore.
11168
11169         * Partly implemented INFO command on client and server side.
11170           Fixed CLEAR command.  Changes to SERVER command; show current
11171           server(s) when giving command without arguments.  Added
11172           VERSION command to client.
11173
11174         * Added check to server that unregistered connections cannot
11175           execute commands (unless it is specificly allowed).
11176
11177 Thu Jul  6 18:12:24 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11178
11179         * Fixed screen refresh.
11180
11181         * Fixed channel joining bug from client.  On some circumstances
11182           client tried to join to a channel it had already joined.
11183
11184         * Added public key verification process into client's protocol.c.
11185           The client now verifies the public key from user and saves
11186           it into ~./silc/serverkeys/ directory.
11187
11188           Added into: clientutil.[ch]: silc_client_verify_server_key.
11189
11190         * Changed SKE protocol's silc_ske_initiator_finish function
11191           to accept callback function that verifies the received public
11192           key.  Removed old silc_ske_verify_public_key function.
11193
11194 Wed Jul  5 19:19:02 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11195
11196         * Added into silcpkcs[ch]: silc_pkcs_public_key[_data]_set and
11197           silc_pkcs_private_key[_data]_set.
11198
11199         * Made the password and public authentication more cleaner in
11200           server's protocol.c.
11201
11202         * Removed historic and obsolete protocol `channel_auth' from
11203           both client and server.
11204
11205         * Removed wrong way of sending command status messages from
11206           server to client in server's command.c.  The old way violated
11207           protocol specification.
11208
11209           Changes to silccore/silccommand.[ch]: removed
11210           silc_command_encode_status_payload -> not needed anymore,
11211           changed silc_command_encode_payload_va to accept extra
11212           argument on variable argument list.  The argument type must
11213           now be provided to the function.  Also, added new function:
11214           silc_command_encode_reply_payload_va which is same as
11215           normal command_encode_payload_va except command status type
11216           is provided as extra argument.
11217
11218 Tue Jul  4 18:26:39 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11219
11220         * Added ~./silc directory handling.  The directory includes the
11221           public and private keys for the client.
11222
11223           Added silc_client_check_silc_dir, silc_client_create_identifier
11224           and silc_client_load_keys.
11225
11226         * Implemented SILC protocol compliant public key.  Added public
11227           and private key saving to and loading from files.
11228
11229           Added into silcpkcs.[ch]: silc_pkcs_encode_identifier,
11230           silc_pkcs_public_key_encode[_data], silc_pkcs_public_key_decode,
11231           silc_pkcs_private_key_encode[_data], silc_pkcs_private_key_decode,
11232           silc_pkcs_public_key_alloc, silc_pkcs_public_key_free,
11233           silc_pkcs_private_key_alloc and silc_pkcs_private_key_free.
11234
11235           Implemented: silc_pkcs_save_[public/private]_key[_data] and
11236           silc_pkcs_load_[public/private]_key.
11237
11238 Mon Jul  3 18:51:27 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11239
11240         * Added silc_server_get_route (route.[ch]) to get connection
11241           data for the fastest route for given ID.
11242
11243         * Implemented INVITE command on client and server.  The command
11244           were re-defined in the SILC Protocol Specification and the
11245           implementation now complies with the specification.
11246
11247         * Implemented PING command on client and server.
11248
11249         * Implemented NAMES command on client and server.  The server side
11250           supports currently only normal server not router server yet.
11251           Some changes to NAMES definition in SILC protocol specification.
11252
11253 Sun Jul  2 18:23:01 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11254
11255         * Implemented LEAVE command on client and server.
11256
11257         * Previously deprecated SILC_PACKET_FORWARDED flag is now in use
11258           again.  This change was made to the protocol as well.  Server
11259           should not violate the protocol specification anymore.
11260
11261 Fri Jun 30 14:03:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11262
11263         * Added SOCKS4 and SOCKS5 support to SILC client.  SOCKS5
11264           was tested.  SOCKS4 was not but should work anyway.