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