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