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