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