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