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