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