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