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