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