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