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