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