updates.
[crypto.git] / CHANGES
1 Thu Feb 15 16:50:34 EET 2007  Pekka Riikonen <priikone@silcnet.org>
2
3         * Fixed per scheduler data input buffer in packet engine.  Use
4           list of inbufs instead of just one so that multiple streams
5           can do partial reads to different buffers.  Affected file is
6           lib/silccore/silcpacket.c.
7
8 Wed Feb 14 17:05:38 EET 2007  Pekka Riikonen <priikone@silcnet.org>
9
10         * Fixed packet wrapper stream API to support encoder/decoder
11           for packets, and to handle partial reading correctly.  Fixed
12           also inbuf size checking in reading to have enough space before
13           reading.  Affected files are lib/silccore/silcpacket.[ch].
14
15         * Rewrote file transfer in client library.  Affected files are
16           in lib/silcclient/.
17
18         * Added TCP/UDP listener (internal) API to client library to have
19           generic way of dealing with listeners.  Fixed Key Agreement and
20           file transfer to use it.  Affected files are in lib/silcclient/.
21
22         * Fixed SKE to process SUCCESS packets synchronously and to call
23           completion synchronously.  Affected file is lib/silcske/silske.c.
24
25         * Fixed pthread rwlock detection.  Affected file includes/silc.h.in.
26
27         * Implemented SILC_ATTRIBYUTE_PHONE_NUMBER.  Affected files are
28           lib/silccore/silcattrs.[ch].  SILC Protocol version 1.3 change.
29
30 Fri Feb  2 22:24:11 EET 2007  Pekka Riikonen <priikone@silcnet.org>
31
32         * Added support for SILC protocol version 1.3 NEW_CLIENT packet
33           to client library.  Affected file is
34           lib/silcclient/client_register.c.
35
36         * Serialize NICK and JOIN commands to avoid problems locally
37           with changing ID while joining to channel.  Affected file is
38           lib/silcclient/command.c.
39
40         * Fixed entry resolving while handling incoming JOIN notify.
41           Handle properly cases, in re-processing of notify packets, where
42           the IDs may become invalid while resolving the entry (like nick
43           change).  Entry is invalid if it doesn't have nickname, and such
44           entries are not delivered to application anymore.  These fixes
45           problems of not seeing JOINs when remote user changes nickname
46           at the same time.  Affected files are in lib/silcclient/.
47
48 Thu Feb  1 18:35:58 EET 2007  Pekka Riikonen <priikone@silcnet.org>
49
50         * Added support for computing message payload MAC in new way
51           (SILC Protocol version 1.3).  Bakcwards support for old way
52           remains.  Affected files are lib/silccore/silcmessage.[ch].
53
54 Sat Jan 27 22:37:30 EET 2007  Pekka Riikonen <priikone@silcnet.org>
55
56         * Added SilcRwLock API, a read/write lock.  Affected files are
57           lib/silcutil/silcmutex.h and in lib/silcutil/[unix|win32|symbian]/.
58
59 Wed Jan 24 18:55:21 EET 2007  Pekka Riikonen <priikone@silcnet.org>
60
61         * Merged Irssi SVN (irssi 0.8.11).  Affected files in apps/irssi/.
62
63 Tue Jan 23 16:05:27 EET 2007  Pekka Riikonen <priikone@silcnet.org>
64
65         * The silc_schedule_set_listen_fd now returns boolean value.
66           Fixed FD task adding to check correctly for already added
67           FD tasks.  Added stricter error checking for FD scheduling
68           with epoll().  Affected files are lib/silcutil/silcschedule.[ch]
69           and lib/silcutil/unix/silcunixschedule.c.
70
71         * The silc_stream_set_notifier now returns boolean value.  Changed
72           all streams to support and check for the error condition.
73           Affected files are in lib/silcutil/.
74
75         * Fixed SKE library session aborting and deletion.  Affected
76           file are lib/silcske/silcske.c.
77
78 Tue Jan 16 18:22:08 EET 2007  Pekka Riikonen <priikone@silcnet.org>
79
80         * Implemented PKCS #1 with appendix with hash OID in the
81           signature.  Affected files are lib/silccrypt/silcpkcs1.[ch],
82           lib/silccrypt/silchash.[ch] and
83           lib/silcasn1/silcasn1[_encode|decode].[ch].
84
85 Sun Jan 14 23:12:41 EET 2007  Pekka Riikonen <priikone@silcnet.org>
86
87         * Added support for Version (V) SILC public key identifier.
88           Affected files are lib/silccrypt/silcpk.[ch].
89
90 Tue Jan  9 19:37:51 EET 2007  Pekka Riikonen <priikone@silcnet.org>
91
92         * Rewrote connection auth request in client library.  It is now
93           done automatically by the library and the resolved method given
94           as a hint to get_auth_method client operation.  Affected files
95           are lib/silcclient/.
96
97 Wed Jan  3 18:06:33 EET 2007  Pekka Riikonen <priikone@silcnet.org>
98
99         * Added silc_packet_stream_wrap into lib/silccore/silcpacket.[ch].
100           It can be used to wrap SilcPacketStream into SilcStream.
101
102         * Fixed %p formatting from silc_snprintf.  Affected file is
103           lib/silcutil/silcsnprintf.c.
104
105         * Ported SFTP library to new utility library.  Ported also
106           the SFTP testers.  Affected files in lib/silcsftp/.
107
108 Tue Jan  2 17:18:46 EET 2007  Pekka Riikonen <priikone@silcnet.org>
109
110         * Added lib/silcutil/silcsnprintf.[ch].  Added in addition
111           of silc_snprintf, silc_vsnprintf, silc_asprintf and
112           silc_vasprintf.
113
114 Sat Dec 30 23:23:17 EET 2006  Pekka Riikonen <priikone@silcnet.org>
115
116         * Added preliminary Symbian support.  Changes around the source
117           tree.  The symbian/ directory now includes Carbide.c++ project
118           files to compile the sources.
119
120         * Added silc_snprintf.  Affected files are
121           lib/silcutil/silcstrutil.[ch].
122
123 Thu Dec 21 18:01:51 EET 2006  Pekka Riikonen <priikone@silcnet.org>
124
125         * Changed SILC_FSM_[CONTINUE|YIELD|WAIT|FINISH] enums to
126           macros.  SILC_FSM_CONTINUE macro now immediately calls the
127           next state instead of first returning back to FSM.  Helps
128           in debugging crashes etc.
129
130           Removed FSM Semaphores.  Introduced FSM Event which is
131           asynchronous event.   Affected files are in lib/.
132
133         * Added epoll(7) support to SILC Scheduler.  It is used by default
134           if it is available.  Affected files are
135           lib/silcutil/silcschedule.[ch],
136           lib/silcutil/unix/silcunixschedule.c.
137
138 Tue Dec 19 20:39:35 EET 2006  Pekka Riikonen <priikone@silcnet.org>
139
140         * Added CTR mode to AES.  Simplified cipher implementation API
141           more.  Affected files are in lib/silccrypt/.
142
143 Sun Dec 17 16:46:55 EET 2006  Pekka Riikonen <priikone@silcnet.org>
144
145         * Removed `detach' client operation.  The detachment data is
146           now delivered in SILC_COMMAND_DETACH command reply to
147           application.  Affected file in lib/silcclient/.
148
149         * Rewrote resuming/detaching in client library.
150
151         * Added boolean encryption indicator for silc_cipher_set_key.
152           Affected files lib/silccrypt/silccipher.[ch].
153
154 Wed Dec 13 18:05:50 EET 2006  Pekka Riikonen <priikone@silcnet.org>
155
156         * Added silc_likely and silc_unlikely macros for GCC branch
157           prediction optimizations.  Affected file lib/silcutil/silctypes.h.
158
159         * Added assembler AES optimization.  Cleaned up the SILC Cipher
160           implementation API.  Affected files are in lib/silccrypt/.
161
162 Tue Dec 12 18:56:14 EET 2006  Pekka Riikonen <priikone@silcnet.org>
163
164         * Changed back the SILC_FSM_THREAD_WAIT operation to not
165           continue to next state if thread is finished already.  That
166           check is not done anymore.  Affected files are
167           lib/silcutil/silcfsm.[ch].
168
169 Sun Dec 10 13:54:52 EET 2006  Pekka Riikonen <priikone@silcnet.org>
170
171         * Removed silc_packet_[get|set]_ciphers and
172           silc_packet_[get|set]_hmacs.  Added silc_packet_set_keys that
173           handle REKEY_DONE packet sending in rekey.  Affected files
174           are lib/silccore/silcpacket.[ch].
175
176         * Added silc_fsm_is_started.  Affected files are
177           lib/silcutil/silcfsm.[ch].
178
179         * Added settings sign_channel_message, sign_private_message
180           and key_exchange_rekey_pfs to SILC Client.  Added UDP transport
181           support for key agreement in /KEY command. Affected files
182           in apps/irssi/src/silc/core/.
183
184         * During SILC Client initialization forward log messages to
185           stderr.   Affected files in apps/irssi/src/silc/core/.
186
187 Thu Dec  7 19:07:21 EET 2006  Pekka Riikonen <priikone@silcnet.org>
188
189         * Added silc_ske_get_key_material.  Affected files are
190           lib/silcske/silcske.[ch].
191
192         * Added silc_packet_stream_is_udp.  Affected files are
193           lib/silccore/silcpacket.[ch].
194
195         * Added SKE packet retransmission support with UDP transport.
196           Affected file is lib/silcske/silcske.c.
197
198 Sun Dec  3 22:00:12 EET 2006  Pekka Riikonen <priikone@silcnet.org>
199
200         * Added silc_socket_stream_is_udp.  Affected file is
201           lib/silcutil/silcsocketstream.[ch].
202
203         * Added UDP transport support to packet engine.  Affected file
204           is lib/silccore/silcpacket.c.
205
206         * Added silc_socket_stream_is_udp.  Affected file is
207           lib/silcutil/silcsocketstream.[ch].
208
209 Sat Nov 18 11:33:03 EET 2006  Pekka Riikonen <priikone@silcnet.org>
210
211         * Added silc_packet_send_va[_ext] to send variable argument
212           formatted buffers.  Affected files lib/silcore/silcpacket.[ch].
213
214         * Timeout freelist garbage collection added to scheduler.
215           Affected file lib/silcutil/silcschedule.c.
216
217 Thu Nov  9 18:12:15 EET 2006  Pekka Riikonen <priikone@silcnet.org>
218
219         * Added silc_show_public_key_file to
220           lib/silcapputil/silcapputil.[ch].
221
222         * Added SILC_STR_ADVANCE support for buffer unformatting.
223           Affected file lib/silcutil/silcbuffmt.c.
224
225 Tue Nov  7 18:04:36 EET 2006  Pekka Riikonen <priikone@silcnet.org
226
227         * Added silc_string_split to lib/silcutil/silcstrutil.[ch].
228
229         * Added silc_mutex_assert_locked to lib/silcutil/silcmutex.h.
230
231         * silc_fsm_continue[_sync] now cancels erlier timeout set with
232           silc_fsm_next_later.  Affected file lib/silcutil/silcfsm.c.
233
234 Sat Nov  4 21:50:37 EET 2006  Pekka Riikonen <priikone@silcnet.org
235
236         * Added SILC_STR_FUNC to buffer format API.  Affected files
237           are lib/silcutil/silcbuffmt.[ch].
238
239         * Added silc_buffer_[s]enlarge to lib/silcutil/silcbuffer.h.
240
241         * No more memory allocation for message payload parsing.
242           Pre-allocated buffer can be used with message payload encoding.
243           Affected files lib/silccore/silcmessage.[ch].
244
245 Fri Oct 27 21:01:26 EEST 2006  Pekka Riikonen <priikone@silcnet.org
246
247         * Added silc_buffer_sunformat and silc_buffer_sunformat_vp
248           to silcutil/silcbuffmt.[ch].
249
250 Sun Oct 22 13:03:07 EEST 2006  Pekka Riikonen <priikone@silcnet.org
251
252         * Added SILC_STR_BUFFER to format and unformat SilcBuffer.
253           Affected file lib/silcutil/silcbuffmt.[ch].
254
255         * Removed silc_schedule_signal_[un]register and
256           silc_schedule_signal_call.  Added silc_schedule_task_add_signal
257           to add signal task.  Only one callback per signal may be
258           added.  The signals are now automatically called back to
259           caller.  Affected files lib/silcutil/silcschedule.[ch] and
260           silcutil/[unix/win32]/silc[unix/win32]schedule.c.
261
262         * Added silc_time_msec and silc_time_usec to silcutil/silctime.[ch].
263
264         * Added SilcSKEParams for SKE parameters and simplied even more
265           the SKE interface.  Affected files are lib/silcske/silcske.[ch].
266           Added support for IV included and session port handling with
267           UDP/IP connections.
268
269         * Added Secure ID (SID) support with IV Included flag (for UDP/IP)
270           in lib/silccore/silcpacket.[ch].  Added silc_packet_set_sid
271           which is called after every rekey when IV Included flag is used.
272           See SILC specifications for details.
273
274 Thu Oct 19 10:03:03 EEST 2006  Pekka Riikonen <priikone@silcnet.org
275
276         * Added lib/silcapputil and moved SILC application specific
277           utility routines from the generic util library lib/silcutil
278           to the new library.  Removed lib/silcidcache and moved that
279           to lib/silcapputil as well.
280
281 Tue Sep 19 00:14:11 EEST 2006  Pekka Riikonen <priikone@silcnet.org>
282
283         * Added SILC_STR_ADVANCE.  Affected file is
284           lib/silcutil/silcbuffmt.[ch].
285
286         * The silc_buffer_strformat preserves buffer locations now.
287
288         * Added lib/silcutil/silcatomic.h for atomic operations.
289
290 Sat Sep 16 11:23:06 EEST 2006  Pekka Riikonen <priikone@silcnet.org>
291
292         * Added lib/silchttp, SILC HTTP server, a very simple HTTP
293           server.
294
295         * Fixed MIME deocing when data portion is not present.
296           Affected file lib/silcutil/silcmime.c.
297
298 Wed Jul 19 12:06:38 EEST 2006  Pekka Riikonen <priikone@silcnet.org>
299
300         * Moved lib/silccore/silcidcache.[ch] to lib/silcutil/.
301
302         * Added IV Included support to packet routines, to allow
303           packet sending and receiving on UDP/IP.  Affected files are
304           lib/silccore/silcpacket.[ch].
305
306         * Added SILC_FSM_YIELD.  Affected files lib/silcutil/silcfsm.[ch].
307
308 Tue Jul 18 20:10:28 EEST 2006  Pekka Riikonen <priikone@silcnet.org>
309
310         * Added UDP support to network and socket stream library.
311
312 Sat Jun 24 22:33:18 EEST 2006  Pekka Riikonen <priikone@silcnet.org>
313
314         * Added conditional variables.  New files are
315           lib/silcutil/silcondvar.h and platform specific implementations.
316
317 Thu Jan  5 20:02:31 CET 2006 Patrik Weiskircher <pat@icore.at>
318
319         * make sure session->hostname and session->port are valid before the
320           application callback is done, since things will go wrong if the
321           application immediately calls silc_client_file_receive. Affected
322           file lib/silcclient/client_ftp.c.
323           Patch received from Stefan Siegel <stesie@brokenpipe.de>, thanks!
324
325 Fri Dec 30 22:54:21 EET 2005  Pekka Riikonen <priikone@silcnet.org>
326
327         * New SILC PKCS API enabling support for other public keys
328           and certificates, lib/silccrypt/silcpkcs.[ch], silcpk.[ch].
329
330         * Separated SILC Public Key Payload routines from the PKCS API
331           to lib/silccore/silcpubkey.[ch].
332
333 Wed Dec 28 13:55:22 EET 2005  Pekka Riikonen <priikone@silcnet.org>
334
335         * Added SILC Key Repository library, lib/silcskr.
336
337         * Added SILC Server library, lib/silcserver.
338
339 Mon Dec 19 18:04:24 EET 2005  Pekka Riikonen <priikone@silcnet.org>
340
341         * MIME objects in attributes now use SilcMime.  Affected files
342           are lib/silccore/silcattrs.[ch].
343
344 Sat Dec 17 20:13:31 EET 2005  Pekka Riikonen <priikone@silcnet.org>
345
346         * Synchronize semaphore posting for real threads in FSM.
347           Affected files are lib/silcutil/silcfsm.c, silcfsm_i.h.
348
349 Mon Nov 28 17:06:54 EET 2005  Pekka Riikonen <priikone@silcnet.org>
350
351         * Added silc_file_set_nonblock.  Affected file is
352           lib/silcutil/silcfileutil.h.
353
354         * Added silc_fd_stream_file to lib/silcutil/silcfdstream.[ch].
355
356 Sat Nov 26 16:13:40 EET 2005  Pekka Riikonen <priikone@silcnet.org>
357
358         * FSM based implementation of SILC SKE.  Simpler interface also.
359           Affected files are in lib/silcske/.
360
361         * Added SilcBool type.  Affected file lib/silcutil/silctypes.h.
362
363 Sat Nov 19 17:34:51 EET 2005  Pekka Riikonen <priikone@silcnet.org>
364
365         * Added SilcMime API to lib/silcutil/silcmime.[ch].  The old
366           silc_mime_parse is available but deprecated.
367
368         * Check that packet is valid when processing key exchange,
369           authentication and rekey protocols.  Fixes a crashbug.
370           Affected files are apps/silcd/protocol.c and
371           lib/silcclient/protocol.c.
372
373         * Added SILC_HASH_MAXLEN to lib/silccrypt/silchash.h, and changed
374           all hash buffers to use that instead of fixed values.
375
376 Wed Nov 16 15:47:12 EET 2005  Pekka Riikonen <priikone@silcnet.org>
377
378         * Added SHA-256 to crypto library.  The SHA-256 takes now
379           precedence over SHA-1.
380
381 Thu May 26 20:31:06 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
382
383         * Check for valid return value from regcomp.  Affected file
384           lib/silcutil/unix/silcunixutil.c.
385
386 Tue May 10 23:11:17 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
387
388         * Fixed silc_hash_uint to work with integers.  Affected
389           file lib/silcutil/silcutil.c.
390
391 Tue May 10 15:11:53 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
392
393         * Rewritten SILC Log API.  Affected files lib/silcutil/silclog.[ch].
394
395 Mon May  9 12:00:08 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
396
397         * Fixed channel public key list saving on JOIN command reply
398           on backup router.  Affected file apps/silcd/command_reply.c.
399
400 Mon May  2 10:42:49 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
401
402         * Added default limit how many channels client can join,
403           default is 50.  Added 'channel_join_limit' configuration
404           option to server too.  Affected files are apps/silcd/command.c
405           and serverconfig.[ch].
406
407 Sun May  1 17:42:55 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
408
409         * --without-silc -> --with-silc, --without-irssi -> --with-irssi.
410           On Toolkit the server and client are not compiled by default.
411           Affected file configure.ad.
412
413 Thu Apr 28 15:57:37 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
414
415         * Added lib/contrib/getopt.[ch] for platforms that don't
416           have it (it is not GPL implementation).
417
418         * Fixed compilation when pkg-config is used.
419
420 Wed Apr 27 11:49:41 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
421
422         * A comma in invite/ban string is invalid, check for it.
423           Affected file apps/silcd/server_util.c.
424
425         * Added SERVICE command to the server.  It parses the command
426           request but SILC Server does not support services for the
427           time being.  Affected file apps/silcd/command.[ch].
428
429         * Added SERVICE command and command reply to client library.
430           It is however incomplete.  Updated Toolkit documentation.
431           Affected files are lib/silcclient/command[_reply].[ch].
432
433         * Fixed IDENTIFY/WHOWAS command reply to send the username
434           correctly (uninitialized buffer).  Affected file is
435           apps/silcd/server_query.c.
436
437 Mon Apr 25 14:25:24 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
438
439         * Moved silcer/, silc/, silcd/ and irssi/ to apps/.  This
440           finalizes the major restructuring of the CVS tree.
441
442 Mon Apr 25 00:39:30 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
443
444         * Send empty MOTD reply if MOTD file cannot be read.
445           Affected file silcd/command.c.
446
447 Sun Apr 24 12:01:37 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
448
449         * Optimized primer number generator to use simpler conversion
450           routines.  Also assure that the prime number will have the
451           highest bit set after modifying it.  Affected file is
452           lib/silcmath/silcprimegen.c.
453
454         * Added LibTomMath to SILC Math library (SILC_DIST_TMA).
455
456         * Added FastTomMath to SILC Math Library (SILC_DIST_TFM),
457           for now only for testing purposes, it will not be delivered
458           in any distribution for now.
459
460         * Removed NSS MPI from the source tree.  Due to upcoming
461           license change for the SILC Toolkit, we cannot deliver the
462           NSS MPI anymore.  I decided to replace it in all distributions
463           with public domain library.
464
465         * Removed GNU regex from lib/contrib and introduced free
466           GNU compatible regex, lib/contrib/regexpr.[ch].  Added
467           GNU regex compatible API to it (only partial).
468
469         * Removed getopt routines from lib/contrib.
470
471 Fri Apr 22 12:21:44 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
472
473         * Use silc_server_send_command_reply to send replies instead
474           of encoding packet itself.  Affected file silcd/command.c.
475
476         * Added command sending and receiving statistics to server.
477           Affected files in silcd/.
478
479         * GCC 4 warning fixes.  -Wno-pointer-sign option is now used
480           with GCC, for it not to warn about pointer signedness.
481
482 Tue Apr 19 11:57:35 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
483
484         * Added context to the SilcIDCache destructor.  Affected
485           files are lib/silccore/silcidcache.[ch],
486           lib/silcclient/client.c and silcd/server.c.
487
488 Mon Apr 18 09:53:28 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
489
490         * Added pkg-config check to configure.
491
492         * The PublicKeyDir must not be used with Admin block in server
493           config.  Affected file silcd/serverconfig.c.
494
495 Sat Apr 16 20:23:48 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
496
497         * Added Autodist.
498
499 Thu Apr 14 20:25:08 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
500
501         * Handle empty LIST command reply correcttly in server.  Affected
502           file silcd/command_reply.c.
503
504         * Handle empty LIST command reply correctly in client library.
505           The application will now receive one LIST command reply with
506           all arguments set to NULL if there are no channels.  Updated
507           Client Library documentation accordingly.  Affected file
508           lib/silcclient/command_reply.c.
509
510 Tue Apr 12 00:02:09 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
511
512         * Added channel name string stringprep profile to the protocol
513           and implementation to allow a little free'er channel name
514           strings.  Affected files are lib/silcutil/silcstringprep.[ch].
515
516         * Added silc_channel_name_[check|verify] to check and verify
517           channel name strings.  Affected files are
518           lib/silcutil/silcstrutil.[ch].
519
520         * Added support for the new channel name preparation in client
521           library and server.  Affected files in lib/silcclient and
522           silcd/.
523
524 Mon Apr 11 13:40:27 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
525
526         * Added the Autodist into the source tree.  It replaces the
527           old ./prepare.  It can be used to create distributions as
528           previously.  See README.CVS and README.DIST.  See
529           distributions in distdir/.
530
531 Sun Apr 10 11:30:56 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
532
533         * Make sure query sends at least an error back if nothing
534           more is sent.  Affected file silcd/server_query.c.
535
536 Thu Apr  7 14:50:01 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
537
538         * During query, check if the original command caller goes
539           away.  If it does, stop the query.  Affected file
540           silcd/server_query.c.
541
542         * Check for valid channel creation in JOIN command reply.
543           Affected file lib/silcclient/command_reply.c.
544
545         * Handle the resolver counter in silc_client_get_users_by_channel
546           callback correctly.  Fixed auto-join bug in Gaim.  Affected
547           file lib/silcclient/idlist.c.
548
549 Wed Apr  6 16:56:53 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
550
551         * Added some better error messages.  Affected file
552           silcd/command_reply.c and packet_receive.c.
553
554         * Handle error in WATCH command propely on backup router.
555           Affected file silcd/command.c.
556
557         * Fixed freeing of unfreeable variable in WHOIS command reply.
558           Affected file silcd/command_reply.c.
559
560 Wed Apr  6 09:10:31 CEST 2005  Pekka Riikonen <priikone@silcnet.org>
561
562         * Added pkg-config .pc file creation for silc core library
563           and silcclient library.  A patch by c0ffee.
564
565         * Removed the need for GNU Libidn.  Added the simple stringprep
566           from libidn into lib/contrib/.  It is now used also on Windows
567           build.
568
569 Mon Apr  4 15:15:46 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
570
571         * Simplified the invite and ban string handling in the
572           server.  Check for valid invite and ban arguments also.
573           Affected file silcd/server_util.c.
574
575 Sun Apr  3 14:58:53 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
576
577         * Added WATCH list announcing in backup router protocol.
578           Affected files are silcd/command.c, server.c, server_backup.c.
579
580         * Do not change users mode to founder on normal server/backup
581           if the founder mode is set, and user is first one to join.
582           Affected file silcd/pcaket_receive.c.
583
584         * Do not send CUMODE_CHANGE notify back to sender.  Affected
585           file silcd/packet_receive.c.
586
587         * Added getrusage() to take noise in SILC RNG.  A patch by
588           Mika Boström.  Affected files are configure.in.pre,
589           includes/silcincludes.h.in, lib/silccrypt/silcrng.c.
590
591 Sat Apr  2 18:09:30 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
592
593         * Splitted the SILC libraries configuration into a configure
594           fragment into lib/configure.ad.  It is now possible, once
595           this feature is added, to specify whether to compile or not
596           compile included SILC libraries.  Affected files are
597           configure.in.pre, lib/silcmath/mpi/configure.ad,
598           lib/configure.ad, Makefile.defines.pre and
599           Makefile.defines_int.pre.
600
601         * Added --with-silc-includes and --with-silc-libs to configure.
602           If specified the included libs are not compiled, but the
603           specified libs are used.  Pkg-config is not yet supported.
604           Affected file configure.in.pre.
605
606         * Fixed WATCH command handling on backup router.  Router does not
607           send the watch command any more to backup if it originates from
608           backup.  Affected file silcd/command.c.
609
610 Fri Apr  1 18:52:47 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
611
612         * Changed announcing to not announce unregistered clients.
613           Affected file silcd/server.c.
614
615         * Fixed username handling in command reply.  Affected file
616           silcd/command_reply.c.
617
618         * Log files are now 0600.  Affected file lib/silcutil/silclog.c.
619
620 Thu Mar 31 22:34:22 CEST 2005  Patrik Weiskircher <pat@icore.at>
621
622         * Added new define SILC_MACOSX, if __APPLE__ and __MACH__ is defined.
623           Affected file: includes/silcincludes.h.in
624
625         * bool is defined as _Bool on Mac OS X now.
626           Affected file: lib/silcutil/silctypes.h
627
628 Thu Mar 31 08:52:06 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
629
630         * Added support for UTF-8 nicknames, channel names and
631           server names in client library.  Affected files in
632           lib/silcclient/.
633
634         * Added __SILC_HAVE_PTHREAD, __SILC_HAVE_SIM, __SILC_HAVE_LIBIDN,
635           and __SILC_ENABLE_DEBUG to include/silcclient.h for third-party
636           software to check how Toolkit has been compiled.
637
638 Wed Mar 30 22:16:35 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
639
640         * Added silc_utf8_str[n]casecmp into lib/silcutil/silcutf8.[ch].
641
642         * Use silc_utf8_str[n]casecmp instead of strcmp routines
643           in library and in SILC Client when dealing with nicknames
644           and other identifier strings.  Affected file in client lib
645           and irssi.
646
647         * Convert nickname to UTF-8 in /msg and /smsg.  Affected file
648           irssi/src/silc/core/silc-servers.c.
649
650 Wed Mar 30 10:50:02 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
651
652         * Fixed idcache to work with the new identifier strings.
653           Affected file lib/silccore/silcidcache.c.
654
655         * Added UTF-8 hash and compare function for SilcHashTable.
656           Affected file lib/silcutil/silcutil.[ch].
657
658         * Added casefolding stringprep, SILC_CASEFOLD_PREP.
659           Affected file lib/silcutil/silcstringprep.[ch].
660
661         * Changed the identifier string handling to include the original
662           format in client, server, channel entries and normalized
663           format in cache.  Affected files in silcd/.
664
665 Tue Mar 29 16:51:35 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
666
667         * Added support for the new identifier strings and their
668           validity checking.  Nicknames, channel names and usernames
669           can now include practically any kind of letters and various
670           other characters.  Affected files in silcd/ and in libraries.
671
672           NOTE: comparing these strings should now be done with memcmp()
673           to check binary compatibility.  All these strings are normalized
674           and casing is irrelevant.
675
676         * Added silc_identifier_check to lib/silcutil/silcstrutil.[ch]
677           as easy function for applications to check whether identifier
678           strings are valid.
679
680 Tue Mar 29 00:45:11 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
681
682         * Fixed SILC_STRING_LDAP_DN encoding and decoding.  Affected
683           file lib/silcutil/silcutf8.c.
684
685         * Added SILC_STRING_UTF8_ESCAPE to lib/silcutil/silcstrutil.h.
686
687 Mon Mar 28 22:46:23 CEST 2005  Jochen Eisinger <jochen@penguin-breeder.org>
688
689         * Make public key in getkey reply mandatory.  Affected file
690           lib/silcclient/command_reply.c
691
692 Sun Mar 27 19:03:31 CEST 2005  Patrik Weiskircher <pat@icore.at>
693
694         * Added Parameter dont_register_crypto_library to
695           SilcClientParam. If set to TRUE, silcclient library will
696           not initalize the Crypto Libraries and application
697           will need to do it. Affected file lib/silcclient/silcclient.h,
698           lib/silcclient/client.c.
699
700 Sun Mar 27 19:02:48 EEST 2005  Pekka Riikonen <priikone@silcnet.org>
701
702         * Imported new silc_utf8_[encode|decode] routines from
703           my internal SILC 1.1 source tree.  New encodings added:
704           SILC_STRING_LOCALE (SILC_STRING_LANGUAGE is deprecated),
705           SILC_STRING_UTF8, SILC_STRING_PRINTABLE, SILC_STRING_VISIBLE,
706           SILC_STRING_TELETEX, SILC_STRING_NUMERICAL and
707           SILC_STRING_LDAP_DN.
708
709         * Splitted UTF-8 routines into lib/silcutil/silcutf8.[ch].
710
711         * Implemented stringprep (RFC 3454) API.  Internally we use
712           GNU Libidn's stringprep, for now, so it is required now to
713           compile SILC sources.  Added lib/silcutil/silcstringprep.[ch].
714
715         * Added checking for GNU Libidn and --with-libidn to configure.
716
717 Wed Mar 23 11:20:33 CET 2005  Jochen Eisinger <jochen@penguin-breeder.org>
718
719         * If the passphrases entered do not match while generating a new key,
720           completly start over instead of going into an infinite loop asking
721           the user to re-enter the passphrase correctly.  Affected file
722           lib/silcutil/silcapputil.c
723
724 Sun Jan  9 14:28:51 CET 2005  Pekka Riikonen <priikone@silcnet.org>
725
726         * Make sure server is removed from backup list when it is
727           deleted.  Affected files silcd/command.c, server.c,
728           server_util.c.
729
730         * Close socket when connecting to router fails.  Affected
731           file silcd/server.c.
732
733 Tue Jan  4 13:06:26 CET 2005  Jochen Eisinger <jochen@penguin-breeder.org>
734
735         * Adopt configuration toolchain to current auto-tools.
736           Affected files prepare, irssi/configure.in
737         * Revert most of the UTF-8 fixes to SILC Client 1.0.1.  Will
738           redo that.  Affected files irssi/src/silc/core/client_ops.c,
739           irssi/src/fe-common/silc/fe-silc-channels.c
740         * Take over command line options into silcclient data structure.
741           Affected file irssi/src/silc/core/silc-core.c
742
743 Wed Dec  8 16:15:11 CET 2004  Pekka Riikonen <priikone@silcnet.org>
744
745         * Do not try to initiate backup resuming protocol forever.
746           Affected file silcd/server_backup.c.
747
748 Wed Nov 24 18:24:05 CET 2004  Pekka Riikonen <priikone@silcnet.org>
749
750         * ID change in resuming has to be done before changing
751           detached client's modes, since the ID change may fail and
752           leave ghosts on the network.  Affected file is
753           silcd/packet_receive.c.
754
755 Tue Nov 23 16:54:35 CET 2004  Pekka Riikonen <priikone@silcnet.org>
756
757         * Fixed Win32 scheduler to not stuck anymore.  A patch from
758           Juha Räsänen.  Affected file is
759           lib/silcutil/win32/silcwin32schedule.c.
760
761         * Fixed QoS parsing for connection blocks in server.  Affected
762           file is silcd/serverconfig.c.
763
764         * Fixed server statistics increasing in server.  Affected file
765           is silcd/server.c.
766
767         * The CLOSE command now marks backup router as self disconnected
768           to avoid resuming problems.  Affected file silcd/command.c.
769
770 Wed Sep 22 19:46:32 CEST 2004  Patrik Weiskircher <pat@icore.at>
771
772         * When using silc_net_create_connection[_async], and your system can
773           create IPv6 sockets, it will try to connect to the IPv6 host.
774           Now it tries to connect to an IPv4 host if IPv6 fails. Affected
775           file lib/silcutil/unix/silcunixnet.c
776
777 Fri Jun 18 19:26:58 CEST 2004  Pekka Riikonen <priikone@silcnet.org>
778
779         * Check for valid route when receiving packet from router and
780           when routing it to local server in the cell.  A patch from
781           Matt Miller.  Affected files silcd/router.c and server.c.
782
783 Sat May  1 13:55:54 CEST 2004  Patrik Weiskircher <pat@icore.at>
784
785         * Couldn't detach and reattach twice, because of the previous
786           commit. Affected file silcd/packet_receive.c
787
788 Fri Apr 30 19:40:28 CEST 2004  Patrik Weiskircher <pat@icore.at>
789
790         * Added check to ignore Port value if Initiator is FALSE.
791           Remote router coudln't connect if Port was set. Affected file
792           silcd/serverconfig.c
793
794         * If some client tries to resume more than once at the same time,
795           server crashed. Router didn't crash, but showed odd behaviour
796           (didn't allow clients to join anymore, ..). Affected files
797           silcd/packet_receive.c silcd/idlist.h
798
799 Mon Mar 15 21:10:08 EET 2004  Pekka Riikonen <priikone@silcnet.org>
800
801         * Destroy the file transfer session in silc_client_file_close
802           with timeout.  Affected file lib/silcclient/client_ftp.c.
803
804         * Call SFTP server monitor in READ and WRITE after the actual
805           operations.  Affected file lib/silcsftp/sftp_server.c.
806
807 Wed Mar 10 21:30:02 EET 2004  Pekka Riikonen <priikone@silcnet.org>
808
809         * Create one configure script from configure fragments
810           (configure.ad).  This is a first step towards new distribution
811           system.  Affected files prepare, configure.in.pre,
812           lib/silcmath/mpi/configure.ad.
813
814 Wed Mar 10 18:35:24 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
815
816         * Removed expiring of client key pair.  Affected file is
817           irssi/src/silc/core/clientutil.c
818
819 Tue Mar  9 17:11:58 EET 2004  Pekka Riikonen <priikone@silcnet.org>
820
821         * Check the number of connections from real number of
822           connections instead of socket number, when deciding if
823           server is full.  Affected files are silcd/server.c,
824           server_internal.h and silcd.c.
825
826         * Clarified the connections_max meaning in General section
827           in doc/example_silcd.conf.in.
828
829         * The reconnect_keep_trying default value set to TRUE
830           if it is not defined in the config file.  Affected file
831           silcd/serverconfig.c.
832
833 Wed Mar  3 15:13:49 CET 2004  Pekka Riikonen <priikone@silcnet.org>
834
835         * Fixed crashbug in connection closing, after a protocol
836           completion callback, which might have closed it already.
837           Affected file silcd/server.c.
838
839         * Fixed rekey with PFS in backup router.  It did not allow
840           rekeys with PFS, and when the rekey protocol timedout
841           it crashed the backup router without the above fix.  Affected
842           file silcd/packet_send.c and server.c.
843
844 Sat Feb 28 16:25:09 EET 2004  Pekka Riikonen <priikone@silcnet.org>
845
846         * The silc_client_add_channel_private_key now returns the
847           private key context if pointer is given as argument.
848           Affected files are lib/silcclient/silcclient.h and
849           client_channel.c.
850
851         * Added support for using channel private keys in SILC
852           Client Library even if the private key mode is not set
853           on the channel.  Affected file lib/silcclient/client_channel.c.
854
855         * The channel private key used to decrypt message is now
856           delivered to the application in the 'channel_messageÃ' client
857           operation.  Affected files are lib/silcclient/silcclient.h
858           and client_channel.c.
859
860         * Fixed wrong arg type for user limit in CMODE command reply.
861           Affected file silcd/command.c.
862
863         * The user limit is now taken and saved to SilcClientEntry in
864           JOIN and CMODE command replies and in CMODE_CHANGE notify.
865           Affected files lib/silcclient/silcclient.h, command_reply.c
866           and client_notify.c.
867
868         * Added support to the new private message key indicator
869           packet.  Added a new function to the client library:
870           silc_client_send_private_message_key_request.  The sender
871           indicates to be initiator, and receiver is responder.
872           Added the indicator to the SilcClientEntry as 'prv_resp'
873           boolean.  Affected files are lib/silcclient/silcclient.h
874           client.[ch], and client_prvmsg.c.
875
876 Fri Feb 27 11:25:26 CET 2004  Pekka Riikonen <priikone@silcnet.org>
877
878         * Fixed the JOIN command calling when called with both
879          -auth and -founder.  Affected file is lib/silcclien/command.c.
880
881 Wed Feb 25 23:12:11 EET 2004  Pekka Riikonen <priikone@silcnet.org>
882
883         * Check watcher list for resumed clients as well.  Affected
884           file is silcd/packet_receive.c.
885
886 Tue Feb 24 16:49:10 EET 2004  Pekka Riikonen <priikone@silcnet.org>
887
888         * Implemented the user limit to the CMODE_CHANGE notify,
889           CMODE command reply and JOIN command reply in server.
890           Affected files are silcd/server.c, command.c, command_reply.c,
891           packet_send.c and packet_receive.c.
892
893 Mon Feb 23 23:31:15 EET 2004  Pekka Riikonen <priikone@silcnet.org>
894
895         * Defined SILC_STRFMT_END that must be used now with
896           silc_buffer_strformat, instead of SILC_STR_END.  Fixes
897           crashes on AMD64.  Affected files are lib/silcutil/silcbuffmt.h,
898           lib/silcclient/silcvcard.c, silcd/server_util.c.
899
900         * Fixed the adding of public key to the WATCH list in server.
901           Fixed the WATCH notify sending to client.  Affected files
902           are silcd/packet_send.[ch], command.c, server_util.c.
903
904         * Implemented the watching by public key in the SILC Client
905           Library and SILC Client.  Affected files are
906           lib/silcclient/command.c and client_notify.c.
907
908 Mon Feb 23 09:30:30 CET 2004  Pekka Riikonen <priikone@silcnet.org>
909
910         * Added support for public key watching in server.  Affected
911           files are silcd/server.c, server_internal.h, command.c,
912           server_util.c.
913
914 Sun Feb 22 19:03:59 EET 2004  Pekka Riikonen <priikone@silcnet.org>
915
916         * Added public key to the SIlcClientEntry.  Affected files
917           are lib/silcclient/silcclient.h, command_reply.c, idlist.c
918
919         * Fixed the get_clients_whois reply processing to return
920           exactly same entries server returned.  Makes it possible
921           to search using attributes.  Affected file is
922           lib/silcclient/idlist.c.
923
924 Sat Feb 21 19:21:57 EET 2004  Pekka Riikonen <priikone@silcnet.org>
925
926         * Save founder key to SilcChannelEntry.  Affected files are
927           lib/silcclient/silcclient.h, command_reply.c, idlist.c.
928
929 Fri Feb 20 20:37:38 EET 2004  Pekka Riikonen <priikone@silcnet.org>
930
931         * Call the monitor callback with _CLOSED status from the
932           silc_client_file_close.  Affected files are
933           lib/silcclient/client_fpt.c, silcclient.h
934
935         * Added silc_client_get_clients_whois which resolves using
936           WHOIS, and supports requested attributes as well.
937           Affected files are lib/silcclient/silcclient.h, idlist.c.
938
939 Fri Feb 19 21:09:22 EET 2004  Pekka Riikonen <priikone@silcnet.org>
940
941         * Added support for asking the destination filename where
942           the downloaded file is saved in the file transfer.  Affected
943           files are lib/silccilent/silcclient.h, client_ftp.c.
944
945 Wed Feb 18 02:46:17 EET 2004  Pekka Riikonen <priikone@silcnet.org>
946
947         * Fixed error handling in resuming data processing.  Affected
948           files are lib/silcclient/client_resume.c and client.c.
949
950 Tue Feb 17 19:34:30 EET 2004  Pekka Riikonen <priikone@silcnet.org>
951
952         * Fixed silc_client_send_private_message to return TRUE correctly.
953           Affected file lib/silcclient/client_prvmsg.c.
954
955         * Added topic to the SilcChannelEntry.  Affected files are
956           lib/silcclient/silcclient.h, command_reply.c, client_notify.c.
957
958 Fri Feb 13 14:19:14 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
959
960         * Use conn->cmd_ident for all silc_client_command_call()s.  Affected
961           file lib/silcclient/command.c
962
963 Fri Feb 13 13:53:45 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
964
965         * Convert all commands to UTF-8 before passing them to the
966           client library.  Still need to convert replies from UTF-8 to
967           the locale encoding.  Affected file
968           irssi/src/silc/core/silc-cmdqueue.c
969
970 Fri Feb 13 13:13:07 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
971
972         * redirect all silc_client_command_calls through a queueing framework.
973           This fixes /CYCLE and the annoying "nick change after auto-joining
974           a channel".  Furthermore it defines one central point where
975           command parameters can be UTF-8-ified.  Affected files
976           irssi/src/silc/core/Makefile, client_ops.c, silc-channels.c,
977           silc-servers.[ch], silc-core.c, silc-cmdqueue.[ch], silc-lag.c
978
979 Fri Feb 13 12:04:41 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
980
981         * use asynchronous connect() to establish router connections.
982           Fixes problem when the primary router goes down.  Affected files
983           silcd/server.c, silcd/server_backup.c
984
985 Thu Feb 12 20:09:59 EET 2004  Pekka Riikonen <priikone@silcnet.org>
986
987         * Added SILC_[32|64]_TO_PTR and SILC_PTR_TO_[32|64] macros.
988           Fixed various compilation warnings when type casting ints
989           to pointers or vice versa, of different size.  Updates around
990           the source free.
991
992 Tue Feb  3 23:25:17 EET 2004  Pekka Riikonen <priikone@silcnet.org>
993
994         * Surrogates not allowed in UTF-8 strings, updated decoder.
995           Affected file lib/silcutil/silcstrutil.c.  Added UTF-8
996           testers in lib/silcutil/tests/ directory.
997
998 Wed Jan 14 18:42:44 EET 2004  Pekka Riikonen <priikone@silcnet.org>
999
1000         * Added SILC_CLIENT_CONN_ERROR_KE, ERROR_AUTH, ERROR_RESUME and
1001           ERROR_TIMEOUT SilcClientConnectionStatus errors.  Affected
1002           files are lib/silcclient/silcclient.h, client.c.
1003
1004 Mon Jan 12 13:01:10 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
1005
1006         * When resuming a session fails, notify the user that the session
1007           file needs to be removed eventually.  Affected files
1008           irssi/src/fe-common/silc/module-formats.[ch],
1009           irssi/src/silc/core/client_ops.c.
1010
1011 Tue Jan 04 12:16:04 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
1012
1013         * Added DIST_SUBDIRS symbols to include all subdirs in distributions.
1014           Affected files lib/silcutil/Makefile.am, lib/silcmath/Makefile.am
1015
1016         * Typofix in Irssi::Silc module.  Affected file
1017           irssi/src/perl/silc/Silc.xs.
1018
1019 Tue Jan 04 02:43:44 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
1020
1021         * Changed the way NOTICE flagged messages are treated. Added support
1022           for notices in queries and signing notices.  Affected files
1023           irssi/default.theme; irssi/docs/help/in/notice.in;
1024           irssi/src/fe-common/silc/module-formats.[ch], fe-silc-messages.c;
1025           irssi/src/silc/core/client_ops.c, silc-channels.c, silc-servers.c
1026
1027         * Fixed typo in /ACTION help.  Affected file
1028           irssi/docs/help/in/action.in
1029
1030 Mon Jan 03 23:26:38 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
1031
1032         * Fixed typo in perl module.  Affected file
1033           irssi/src/perl/silc/Server.xs
1034
1035         * Changed the way ACTION flagged messages are treated. Added support
1036           for actions in queries and signing actions.  Affected files
1037           irssi/default.theme; irssi/docs/help/in/action.in;
1038           irssi/src/fe-common/silc/module-formats.[ch], fe-silc-messages.c,
1039           fe-silc-queries.c; irssi/src/silc/core/client_ops.c, silc-channels.c,
1040           silc-servers.[ch]
1041
1042 Mon Jan 03 16:04:29 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
1043
1044         * Incorrectly reported error when client had to be resolved from
1045           server in /SMSG.  Affected file irssi/src/silc/core/silc-servers.c
1046
1047 Sat Jan  3 16:37:15 EET 2004  Pekka Riikonen <priikone@silcnet.org>
1048
1049         * Fixed whois public key hash table deleting and adding in
1050           detached client case.  Affected file silcd/packet_receive.c.
1051
1052 Sat Jan 03 12:15:38 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
1053
1054         * Changed filenames of silc/fe module not to collide with filenames
1055           from core/fe.  Also seperated public messages printing from
1056           query messages printing.  Affected files are all in
1057           irssi/src/fe-common/silc.
1058
1059 Sat Jan  3 12:18:07 EET 2004  Pekka Riikonen <priikone@silcnet.org>
1060
1061         * Fixed the invite process handling during joining to use
1062           correct server name for the client that is matched against
1063           the invite string for the channel.  Wrong server name caused
1064           inability to join the channel.  Affected file is
1065           silcd/command.c.
1066
1067 Fri Jan  2 23:34:17 EET 2004  Pekka Riikonen <priikone@silcnet.org>
1068
1069         * Fixed the CUMODE channel founder authentication on normal
1070           server to not remove the founder rights on existing founder
1071           before checking that router accepts the mode change.  Affected
1072           files are silcd/command.c and silcd/packet_receive.c.
1073
1074         * Remove the server entry correctly when rekey timeouts and
1075           remote router connection on normal server is closed.  Fixes
1076           a crash where server uses the freed server entry.  Affected
1077           file silcd/server.c.
1078
1079 Fri Jan 02 10:28:15 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
1080
1081         * Add /SILCNET [ADD|REMOVE|LIST] command to manage different SILC
1082           networks.  This is the first step in solving the bug about
1083           /SERVER ADD -silcnet <silcnet>.  Affected files
1084           irssi/docs/in/silcnet.in; irssi/src/fe-common/silc/Makefile.am,
1085           fe-silcnet.c, fe-common-silc.c, module-formats.[ch];
1086           irssi/src/silc/core/silc-chatnets.[ch], silc-core.c, Makefile.am
1087
1088 Thu Jan 01 20:11:32 CET 2004  Jochen Eisinger <jochen@penguin-breeder.org>
1089
1090         * /SMSG and /MMSG now correctly create new queries. Affected files
1091           irssi/src/fe-common/silc/fe-messages.c, irssi/scripts/silc-mime.pl
1092
1093         * Add basic support for SILC protocol specific variables in perl.
1094           Affected files irssi/src/perl/silc/*, irssi/configure.in,
1095           irssi/src/perl/Makefile.am
1096
1097 Wed Dec 31 17:06:55 CET 2003  Jochen Eisinger <jochen@penguin-breeder.org>
1098
1099         * Don't use silc_get_input, it's obviously not reliable.  Fixes
1100           issue when the current key expires.  Affect file
1101           irssi/src/silc/core/clientutils.c
1102
1103         * Make the session data filename configurable.  This makes it
1104           possible to have different session files for different
1105           SILC networks.  Affected files irssi/src/silc/core/silc-core.c,
1106           client_ops.[ch], silc-servers.c,
1107           irssi/src/silc/fe-common/silc/module-formats.[ch]
1108
1109         * Use the same set of libtool files for the MPI lib as for the
1110           rest of the toolkit.  Affected files lib/silcmath/mpi/config.guess,
1111           config.sub, configure.in, install-sh, missing, mkinstalldirs
1112
1113 Sun Dec 28 21:57:39 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1114
1115         * Fixed server statistics decrementing error to not go to
1116           negative.  Affected file silcd/packet_receive.c.
1117
1118 Sat Dec 20 14:42:36 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1119
1120         * Use silc_server_query_add_error to add error in public key
1121           search error.  Added support in send_reply to send errors
1122           without specific argument.  Affected file silcd/server_query.c.
1123
1124         * Fixed the WHOIS, IDENTIFY and WHOWAS error handling in SILC
1125           Client for NO_SUCH_NICK.  It was against the protocol specs.
1126           Affected file irssi/src/silc/core/client_ops.c.
1127
1128         * Added backwards support for the wrong NO_SUCH_NICK error sending
1129           in server.  To be removed in SILC Server 1.0.  Both old clients
1130           and clients with fixed error handling now works.  Affected file
1131           silcd/server_query.c.
1132
1133 Sat Dec 20 00:44:47 CET 2003  Patrik Weiskircher <pat@icore.at>
1134
1135         * fixed a bug in the whois using attributes function where no
1136           error was sent if no nickname and client id but the attributes were
1137           given to whois. Affected file silcd/server_query.c
1138
1139 Tue Dec 16 21:34:59 CET 2003  Patrik Weiskircher <pat@icore.at>
1140
1141         * remove public key from public key hashtable on detach. Affected
1142           file silcd/packet_receive.c
1143
1144         * free public key hashtable before removing clients on server
1145           shutdown. Affected file silcd/server.c
1146
1147         * remove public key prior deleting client-data on killing a client.
1148           Affected file silcd/server_util.c
1149
1150 Sat Dec 06 21:35:14 CET 2003  Patrik Weiskircher <pat@icore.at>
1151
1152         * Getting the MOTD from other servers works now. Affected
1153           files are silcd/command.c and silcd/command_reply.c
1154
1155 Thu Dec 04 11:33:46 CET 2003  Jochen Eisinger <jochen@penguin-breeder.org>
1156
1157         * Initialize the variable idletag, since it is tested in
1158           silc_core_deinit for its default value.  Affected file
1159           irssi/src/silc/core/silc-core.c
1160
1161 Sun Nov 30 19:47:02 CET 2003  Patrik Weiskircher <pat@icore.at>
1162
1163         * Fixed signed channel messages across cells. Affected file
1164           silcd/packet_send.c
1165
1166 Fri Nov 28 19:13:21 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1167
1168         * Changed the SILC_LOG_* macros to not be empty if SILC_DEBUG
1169           is not defined.  They can now be safely used in if-statements
1170           without braces.  Affected file lib/silcutil/silclog.h.
1171
1172         * Added the checks for backup closing connection due to error
1173           (local or remote) and thus not allow the resuming to occur
1174           in reconnect.  Affected files are silcd/packet_send.c
1175           and server.c.
1176
1177 Tue Nov 25 15:20:59 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1178
1179         * Help file updates.  Affected files in irssi/src/docs/help/in/.
1180
1181 Wed Nov 23 20:51:21 CET 2003  Patrik Weiskircher <pat@icore.at>
1182
1183         * Fixed channel messages across cells. Affected file
1184           silcd/packet_send.c
1185
1186 Wed Nov 12 11:34:56 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1187
1188         * Fixed file transmission accepting in client library to not
1189           start the negotiation if user hasn't accepted the transfer,
1190           instead create new session for resent transfer.  Affected
1191           file lib/silcclient/client_ftp.c.
1192
1193         * Show the session ID in the file transmision list.  Remove
1194           session from list that failed to transfer.  Switch the current
1195           session automatically after transmission, and in errors, to new
1196           session if other sessions exists in the transfer list.  Affected
1197           files are irssi/src/silc/core/silc-servers.c,
1198           irssi/src/fe-common/silc/modfule-formats.c.
1199
1200 Mon Nov 10 14:41:40 CET 2003  Jochen Eisinger <jochen@penguin-breeder.org>
1201
1202         * Fixed MIME header parsing for the hopefully last time.  Affected
1203           file lib/silcutil/silcstrutil.c
1204
1205 Mon Nov 10 13:03:46 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1206
1207         * Rewrote the PKCS#1 routines.  Added lib/silccrypt/silcpkcs1.[ch].
1208
1209         * The SILC RNG is now gauranteed to return non-zero random
1210           values.  Affected files are lib/silccrypt/silcrng.[ch].
1211
1212 Sun Nov  9 20:44:56 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1213
1214         * Fixed nickname formatting when changing only case of the
1215           nickname.  Affected file lib/silcclient/idlist.c.
1216
1217 Sun Nov  9 19:33:59 CET 2003  Jochen Eisinger <jochen@penguin-breeder.org>
1218
1219         * Fixed a memory leak and incorrect printing of the "appears as"
1220           message.  Affected file irssi/src/silc/core/client_ops.c
1221
1222 Sun Nov  9 17:45:11 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1223
1224         * Added CRT (Chinese Remainder Theorem) supported RSA
1225           private keys and private key operations.  This significantly
1226           increases private key operation efficiency.  No compatibility
1227           issues with new or old private keys.  Affected files are
1228           lib/silccrypt/rsa.[ch], rsa_internal.h and pkcs1.c.
1229
1230 Sat Nov  8 13:08:53 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1231
1232         * Fixed GCC-3.3.2 related compilation warnings from the
1233           source tree.
1234
1235 Fri Nov  7 23:01:47 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1236
1237         * Removed RC6 from distributions.
1238
1239 Fri Nov  7 19:38:42 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1240
1241         * Added some better comments to lib/silccrypt/silcpkcs.h,
1242           optimized some routines in lib/silccrypt/silcpkcs.c.
1243           Added test_silcpkcs into lib/silccrypt/tests/.
1244
1245         * Fixed silc_rng_global_init to actually init the global RNG
1246           if RNG wasn't provided for it.  Affected file is
1247           lib/silccrypt/silrng.c.
1248
1249 Thu Nov  6 21:08:28 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1250
1251         * Added silc_hash_table_find_by_context_ext.  Affected files
1252           lib/silcutil/silchashtable.[ch].
1253
1254         * Save the public key on normal server in WHOIS command reply
1255           from attributes, if present, and add it to public key hash
1256           table.  Fixes WHOIS resolving by public key on normal server.
1257
1258           Optimized the attributes resolving on normal server to not
1259           resolve if we resolved them already from router.
1260
1261           Affected files are silcd/server_query.c, command_reply.c.
1262
1263 Wed Nov  5 19:36:30 CET 2003 Patrik Weiskircher <pat@icore.at>
1264
1265         * Added support for whois using attributes.
1266           Affected files silcd/command_reply.c, silcd/packet_receive.c,
1267           silcd/server.c, silcd/server_internal.h, silcd/server_query.c,
1268           silcd/server_util.c
1269
1270         * Added support for whois using public key attribute to /WHOIS i
1271           client command. Affected files irssi/docs/help/in/whois.in,
1272           irssi/src/silc/core/silc-servers.c, lib/silcclient/command.c
1273
1274 Wed Nov  5 23:37:36 EET 2003 Pekka Riikonen <priikone@silcnet.org>
1275
1276         * Fixed UMODE setting in server when the client has anonymous
1277           mode set.  The mode setting was not working.  Affected file
1278           silcd/command.c.
1279
1280 Mon Nov  2 11:36:08 CET 2003 Jochen Eisinger <jochen@penguin-breeder.org>
1281
1282         * Fixed some bugs and typos related to sending split messages.
1283           Print notification when sending messages with /MMSG.  Affected
1284           files irssi/scripts/silc-mime.pl, irssi/src/silc/core/client_ops.c
1285
1286 Fri Oct 31 12:33:59 EET 2003 Pekka Riikonen <priikone@silcnet.org>
1287
1288         * Optimized the socket referencing in packet routines, client
1289           library and server.  Affected files are lib/silccore/silcpacket.c,
1290           lib/silcclient/client.c and silcd/server.c.
1291
1292         * If silc_socket_set_qos is given with NULL arguments the QoS is
1293           reset from the socket.  Affected files are
1294           lib/silcutil/silcsockconn.[ch].
1295
1296 Thu Oct 30 21:23:24 CET 2003 Jochen Eisinger <jochen@penguin-breeder.org>
1297
1298         * Add a /LISTKEYS command which lists the locally cached
1299           client and server keys.  Affected files
1300           irssi/src/fe-common/module-formats.[ch],
1301           irssi/src/silc/core/silc-{channels,servers}.c
1302           irssi/docs/help/in/listkeys.in
1303
1304 Thu Oct 30 20:23:40 EET 2003 Pekka Riikonen <priikone@silcnet.org>
1305
1306         * Check that packet queue purging was successful.  Affected
1307           files lib/silcclient/client.c and silcd/packet_send.c.  Related
1308           to MAC failed errors.
1309
1310         * Do not clear the inbuf even if it is empty if QoS was applied
1311           to it.  Otherwise the QoS data is cleared and MAC failed error
1312           will occur.  Affected file lib/silccore/silcpacket.c.
1313
1314         * Use the rekey period time as rekey protocol timeout value.
1315           If the rekey does not succeed during the rekey period there's
1316           something very wrong, and we most likely end up with wrong keys,
1317           do graceful reconnect then.   Affected file silcd/server.c.
1318
1319         * Take reference of the socket in the parser context, as it's
1320           possible to have the parsers in queue after the socket is
1321           disconnected and this may cause crash.  Affected files are
1322           lib/silccore/silcpacket.c, lib/silcclient/client.c and
1323           silcd/server.c.
1324
1325 Thu Oct 30 17:01:01 EET 2003 Pekka Riikonen <priikone@silcnet.org>
1326
1327         * Fixed KICK command reply sending, it sent to replies.
1328           Affected file silcd/command.c.
1329
1330 Wed Oct 30 14:06:52 CET 2003 Jochen Eisinger <jochen@penguin-breeder.org>
1331
1332         * Finish the silc-mime.pl script. It now supports MIME type
1333           guessing using magic files, signing data messages, executing
1334           MIME handlers in background. Affected files
1335           irssi/scripts/silc-mime.pl and irssi/docs/help/in/mmsg.in
1336
1337         * Changed MIME signal handler to make things easier for the perl
1338           script. Affected files irssi/src/silc/core/client_ops.c,
1339           silc-servers.c, and irssi/docs/signals.txt
1340
1341         * Cleaned up the silc_mime_parse function and fixed detection
1342           of wrapped header lines. Affected file lib/silcutil/silcstrutil.c
1343
1344 Sun Oct 26 21:19:02 EET 2003 Pekka Riikonen <priikone@silcnet.org>
1345
1346         * Resolve the IP for file transfer listener from the connection
1347           socket.  Affected file lib/silcclient/client_ftp.c.
1348
1349         * Accept NULL hostname parameter in the functions
1350           silc_net_check_[local|remote]_by_socket.  Do not reverse lookup
1351           if hostname is not wanted.
1352
1353 Fri Oct 24 21:24:12 CEST 2003  Jochen Eisinger <jochen@penguin-breeder.org>
1354
1355         * Fixed race condition between silc_client_init and
1356           my_silc_scheduler. Affected file irssi/src/silc/core/silc-core.c
1357
1358 Fri Oct 24 16:43:40 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1359
1360         * Fixed file transfer connection closing when SIGNOFF for
1361           the client is received from server.  Affected file is
1362           lib/silcclient/client_ftp.c.
1363
1364 Tue Oct 21 13:35:57 CEST 2003  Pekka Riikonen <priikone@silcnet.org>
1365
1366         * Check for disconnected socket in QUIT callback.  Affected
1367           file silcd/command.c.
1368
1369 Thu Oct 21 09:43:17 CEST 2003  Jochen Eisinger <jochen@penguin-breeder.org>
1370
1371         * Modified the MIME parsing to allow \n and \r\n as delimiters.
1372           Affected files lib/silcutil/silcstrutil.c
1373
1374         * Cleaned up the escape/unescape functions for correctness and
1375           speed. Affected file irssi/src/silc/core/client_ops.c
1376
1377         * Removed handling for data messages with Content-Type: text/*,
1378           moved parsing of MIME headers to the signal handler, added
1379           support for signing and verifying data messages. Affected
1380           files are irssi/docs/signals.txt, irssi/src/silc/core/client_ops.c,
1381           irssi/src/silc/core/silc-{servers,channels}.c
1382
1383         * Added a perl script for handling data messages based on
1384           information read from Mailcap files. New file
1385           irssi/scripts/silc-mime.pl
1386
1387 Mon Oct 20 16:08:22 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1388
1389         * Added new SILC_MESSAGE_FLAG_ACK that can  be used to
1390           acknowledge recepetion of a message to the sender.  Updated
1391           protocol specs.
1392
1393 Sat Oct 18 11:55:33 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1394
1395         * Unregister channel key saving callback when deleting channel.
1396           Affected file lib/silcclient/idlist.c.
1397
1398         * Do not remove the client from channels in NOTIFY_TYPE_SIGNOFF
1399           before calling notify client operation.  Affected file is
1400           lib/silcclient/client_notify.c.
1401
1402         * Unregister QoS tasks when deleting the socket connection.
1403           Affected files lib/silcutil/silcsockconn.[ch],
1404           unix/silcunixsockconn.c.
1405
1406         * Implemented latest presence-attrs draft changes.  Affected
1407           files lib/silccore/silcattrs.h and
1408           irssi/src/silc/core/silc-queries.c.
1409
1410 Tue Oct 14 18:24:53 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1411
1412         * Save old channel keys in list to allow more rapid change
1413           of channel keys if server for some reason does that.  This
1414           avoids loosing so many channel messages due to not having
1415           key to decrypt.  Affected file lib/silcclient/silcclient.h,
1416           idlist.c and client_channel.c.
1417
1418 Mon Oct 13 21:37:47 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1419
1420         * Continued backup router tests and fixes.  Affected files
1421           silcd/server_backup, server_util.c, server.c.  See TODO.
1422
1423 Sun Oct 12 19:58:18 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1424
1425         * Fixed SERVER_SIGNOFF handling in servers.  The client
1426           was removed from wrong list thus not removing the client
1427           at all.  Affected file silcd/packet_receive.c.
1428
1429         * Do not execute rekey protocol for disabled connections as
1430           it would never go through.  Affected file silcd/server.c.
1431
1432         * Added timeout for rekey protocol to catch if the protocol
1433           never executes successfully.  Affected files silcd/server.c
1434           and protocol.h.
1435
1436 Sat Oct 11 15:39:22 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1437
1438         * Abandon packet processing for disconnected sockets.  Check
1439           this always after calling packet processing callback.
1440           Affected file lib/silccore/silcpacket.c.
1441
1442         * Fixed double registration disconnection code in server.
1443           Closed wrong connection.  Affected file silcd/packet_receive.c.
1444
1445 Fri Oct 10 16:27:12 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1446
1447         * On normal server reconnect to primary during resuming 4
1448           times, then give up.  Affected file silcd/server_backup.c.
1449
1450         * If during reconnecting to routers we notice we have router
1451           connection but no primary router set, the server is in desync.
1452           Reconnect to primary to restore network.  Affected file
1453           silcd/server.c.
1454
1455         * Assure that only one protocol is exeucting at the same time.
1456           Added checks for all protocols.  Affected files are
1457           silcd/server.c and server_backup.c.
1458
1459 Thu Oct  9 20:24:09 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1460
1461         * Check that a string is not already part on invite/ban
1462           string when processing it.  Affected file silcd/server_util.c.
1463
1464 Thu Oct  9 12:06:40 CEST 2003  Pekka Riikonen <priikone@silcnet.org>
1465
1466         * Fixed the CUMODE_CHANGE for founder mode changes to comply
1467           with 1.2 version of the protocol.  Affected file is
1468           silcd/packet_receive.c.
1469
1470 Wed Oct  8 19:41:15 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1471
1472         * ERR_BAD_PASSWORD now returns the Channel ID of the channel
1473           where the passphrase was given.  Affected file is
1474           silcd/command.c.
1475
1476 Wed Oct  8 09:32:12 CEST 2003  Pekka Riikonen <priikone@silcnet.org>
1477
1478         * INVITE and BAN notifys are now delivered from routers to
1479           servers (but not clients) on the channel.  Updated specs and
1480           code.  Affected files silcd/packet_[send|receive].[ch],
1481           command.c, server.c and server_util.c.
1482
1483         * Implemented INVITE and BAN announcing.  Affected files are
1484           silcd/server.[ch], server_util.c.
1485
1486         * Implemented SilcStatus error type argument returning in
1487           command reply error in server.  Affected file silcd/command.c.
1488
1489         * Implemented SilcStatus argument returning in comand reply
1490           in client library.  The command_reply client operation now
1491           returns error specific arguments as well.  Affected files
1492           are lib/silcclient/command_reply.[ch], client_resume.c,
1493           lib/silccore/silcstatus.[ch].
1494
1495 Sun Oct  5 20:22:08 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1496
1497         * Backup router protocol version 1.2 implemented.  Testing still
1498           required.  Affected files in silcd/server_backup.[ch], server.c,
1499           packet_receive.c and server_internal.h.
1500
1501 Sun Oct  5 12:36:37 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1502
1503         * silc_client_send_[channel|private]_message now return TRUE
1504           or FALSE.  Affected file lib/silcclien/client_channel.c and
1505           client_prvmsg.c.
1506
1507 Thu Oct  2 17:03:09 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1508
1509         * Check for explicit nickname in INVITE and BAN processing
1510           during join as well (and don't expect only wildcards in
1511           invite/ban strings).  Affected file silcd/command.c.
1512
1513         * Fixed the INVITE and BAN by public key.  The public key saved
1514           is the PK payload (as specified) not the raw data.  Affected
1515           file silcd/server_util.c.
1516
1517 Wed Oct  1 20:29:06 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1518
1519         * UTF-8 text message support for actions and notices in SILC
1520           Client.  Affected file irssi/src/silc/core/client_ops.c.
1521
1522         * silc_get_username and silc_get_real_name now returns sensible
1523           data on Win32.  Patch by Toni Willberg.  Affected file is
1524           lib/silcutil/win32/silcwin32util.c.
1525
1526 Sun Aug 24 23:35:19 CEST 2003  Jochen Eisinger <c0ffee@penguin-breeder.org>
1527
1528         * Provide a signal handler to send MIME encoded messages and emit
1529           a signal when a MIME encoded message is received. Also document
1530           the signals for usage with the perl interface.
1531
1532           A sample perl script will be supplied at a later point.
1533
1534           Affected files are irssi/docs/signals.txt,
1535           irssi/src/silc/core/client_ops.[ch],
1536           irssi/src/silc/core/silc-{channels,servers}.c
1537
1538 Sun Aug 24 12:58:30 CEST 2003  Jochen Eisinger <c0ffee@penguin-breeder.org>
1539
1540         * Use SILC_COMMAND_PING to estimate the round-trip time to the
1541           server. Use this time to display a lag and disconnect when it
1542           exceeds a specified limit.
1543
1544           Affected files are irssi/src/silc/core/silc-{lag,core}.c.
1545
1546 Mon Aug 11 17:14:17 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1547
1548         * Remove the channel auth list in normal server if router
1549           encofrces its list during connecting.  Send notify to channel
1550           to remove the mode to remove the list.  Affected files are
1551           silcd/server_util.c and silcd/packet_receive.c.
1552
1553 Wed Aug  6 14:52:04 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1554
1555         * Added support for channel public keys.  Updated protocol specs
1556           and implemented it.  Affected files are
1557           silcd/command.c, command_reply.c, lib/silcclient/command.c,
1558           lib/silcclient/command_reply.c.
1559
1560 Wed Jul 23 12:17:01 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1561
1562         * Ignore SIGXFSZ and SIGXCPU signals in server.  They can
1563           terminate the process on Linux.  Affected file silcd/silcd.c.
1564
1565 Mon Jun  2 19:13:27 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1566
1567         * Check for NULL buffer in silc_buffer_clear.  Affected file
1568           is lib/silcutil/silcbuffer.h.
1569
1570         * Simplified the backup router protocol by removing the _GLOBAL
1571           types.  Updated protocol specs and the code.  Affected files
1572           are silcd/server_backup.[ch].
1573
1574 Thu Apr 24 19:50:25 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1575
1576         * Deny '@' and '!' from nicknames since they are reserved
1577           by the SILC_COMMAND_INVITE and SILC_COMMAND_BAN commands.
1578           Updated protocol specs and the code.
1579
1580           Affected files are silcd/server_util.[ch].
1581
1582 Wed Apr  9 18:51:59 EEST 2003  Pekka Riikonen <priikone@silcnet.org>
1583
1584         * Fixed stack overflow in Irssi SILC client.  Affected
1585           file irssi/src/silc/core/client_ops.c.
1586
1587         * Check that Host is set in ServerConnection and RouterConnection
1588           in silcd.conf.  Affected file silcd/serverconfig.c.
1589
1590         * Fixed crash in server with protocol completion callbacks,
1591           namely rekey and backup resuming protocols.  Affected files
1592           are silcd/server_backup.c and silcd/server.c.
1593
1594         * Fixed rekey protocol to not restart if it is started already.
1595           Affected files are lib/silcclient/client.c and
1596           silcd/server.c.c
1597
1598 Mon Mar 17 18:35:24 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1599
1600         * Rewrote SilcList, affected file lib/silcutil/silc*list.h.
1601
1602         * Fixed EOF handling in SILC Config, affected file
1603           lib/silcutil/silcconfig.c.
1604
1605         * Fixed buffer overflows in lib/silcutil/silcstrutil.c.
1606
1607         * Fixed RESOLVING flag handling in JOIN notify and other
1608           notifys to handle the resolvings correctly in client library.
1609           Affected file lib/silcclient/client_notify.c.
1610
1611         * Do not send full INVITE and BAN lists in INVITE and BAN
1612           notifys, only the changed information.  Affected file
1613           silcd/command.c.
1614
1615         * Fixed INVITE notify sending in INVITE command, send it
1616           only when needed.  Affected file silcd/command.c.
1617
1618         * Handle the founder key change properly in CMODE_CHANGE
1619           notify.  Bug #122.  Affected file silcd/packet_receive.c.
1620
1621 Sun Mar  9 16:29:20 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1622
1623         * Remove the mark for output (mark it only for input) after
1624           purging outgoing queue.  Prevents the "Error in select()"
1625           floods.  Affected file silcd/packet_send.c.
1626
1627         * Fixed incorrect connection deletion from client library
1628           after calling "connect" client operation.  Could cause
1629           crashes for example during reconnect timeouts.  Affected
1630           files are lib/silcclient/client.c and
1631           irssi/src/silc/core/client_ops.c.
1632
1633         * Check server private key file permissions before starting
1634           the server.  Affected file silcd/serverconfig.c.
1635
1636 Tue Feb  4 22:53:26 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1637
1638         * NULL terminate allocated string in silc_buffer_strformat.
1639           Affected file lib/silcutil/silcbuffmt.c.
1640
1641         * Rewrote the invite/ban list string handling in server to
1642           use SilcBuffer instead.  Affected files are silcd/command.c
1643           and silcd/server_util.c.
1644
1645 Mon Feb  3 14:43:52 CET 2003  Pekka Riikonen <priikone@silcnet.org>
1646
1647         * Fixed double free in CMODE command when setting new HMAC
1648           for channel.  Affected file silcd/command.c.
1649
1650         * Added couple of missing memset's to zero sensitive memory.
1651           Affected files silcd/command.c, lib/silcclient/command.c.
1652
1653 Sun Jan 26 12:20:30 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1654
1655         * Fixed a double free in INVITE command error handling in
1656           server.  Affected file silcd/command.c.
1657
1658         * Added macros SILC_SWAB_[16|32] to swab byte order of
1659           16-bit and 32-bit unsigned integers.  Affected file
1660           lib/silcutil/silctypes.h.
1661
1662         * Use the SILC_SWAB_16 instead of htons() in server when
1663           handling ports since the ports in structures are always
1664           in little-endian order (regardless of platform).  Affected
1665           file silcd/serverid.c and silcd/server_backup.c.
1666
1667 Tue Jan 21 17:18:04 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1668
1669         * Send DISCONNECT in close admin command in server.  Affected
1670           file silcd/command.c.
1671
1672         * Check whether we are already connecting to a remote router
1673           (in addition of checking whether we are already connected)
1674           before creating new connection.  Affected file silcd/server.c.
1675
1676 Thu Jan 16 18:47:00 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1677
1678         * Added better compiler and compiler flags checking in
1679           configure.
1680
1681         * Check that socket is valid after QoS is applied to data.
1682           Affected file lib/silcutil/unix/silcunixsockconn.c.
1683
1684         * Make sure the socket connecetion is not closed to early
1685           when closing connection in server.  Also make sure the
1686           connection is always closed after error in a protocol.
1687           Affected file silcd/server.c.
1688
1689 Wed Jan 15 11:03:36 CET 2003  Pekka Riikonen <priikone@silcnet.org>
1690
1691         * Removed --session and --dummy options from Irssi SILC Client.
1692           -d option is available only if --enable-debug was given.
1693           Affected files are irssi/src/silc/core/silc-core,
1694           irssi/src/core/session.c and irssi/src/fe-text/silc.c.
1695
1696 Tue Jan 14 12:25:09 CET 2003  Pekka Riikonen <priikone@silcnet.org>
1697
1698         * Added silc_buffer_steal to steal the data from the buffer.
1699           Affected file lib/silcutil/silcbuffer.h.
1700
1701 Sat Jan 11 18:16:29 CET 2003  Giovanni Giacobbi <giovanni@giacobbi.net>
1702
1703         * Fixed server crash with double Primary block in config file.
1704
1705           Fixed also various memory leaks around the config file
1706           parser.  Affected files lib/silcutil/silcconfig.c,
1707           silcd/serverconfig.c.
1708
1709         * Changed my nickname (Johnny Mnemonic) to my real name, this
1710           means that bugs introduced by him were actually introduced
1711           by me!
1712
1713 Tue Jan  7 21:58:53 CET 2003  Jochen Eisinger <c0ffee@penguin-breeder.org>
1714
1715         * Don't display "foo appears as foo\nYou're now known as foo"
1716           messages.  Affected file irssi/src/silc/core/client_ops.c
1717
1718 Tue Jan  7 20:08:15 EET 2003  Pekka Riikonen <priikone@silcnet.org>
1719
1720         * Fixed error handling of invalid client entry when calling
1721           commands in server.  Fixes a crash.  Affected file
1722           silcd/command.c.
1723
1724 Thu Dec 26 14:19:29 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1725
1726         * Added some sanity checks in server for correctness of the
1727           server configuration.  Affected file silcd/serverconfig.c.
1728
1729 Fri Dec 20 10:47:59 CET 2002  Pekka Riikonen <priikone@silcnet.org>
1730
1731         * Prevent endless resolving of user informations in USERS
1732           command by checking the command reply status correctly.
1733           Affected file lib/silcclient/command_reply.c.
1734
1735 Tue Dec 17 10:05:00 CET 2002  Pekka Riikonen <priikone@silcnet.org>
1736
1737         * Fixed file writing on WIN32 to use O_BINARY flag.  Affected
1738           file is lib/silcutil/silcfileutil.c.  A patch by Matthew
1739           Aldous <Matthew@Aldous.com>.
1740
1741         * Added better implementation using CriticalSection of
1742           SilcMutex on WIN32.  A patch by Mikko Lähteenmäki
1743           <mikko.lahteenmaki@pikabaana.net>.
1744
1745         * Added some Winsock WIN32 compatiblity defines into
1746           includes/silcwin32.h.
1747
1748 Mon Dec 16 19:33:05 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1749
1750         * Fixed double free in async host lookup code.  Affected file
1751           lib/silcutil/silcsockconn.c.
1752
1753         * On backup router handle now the SERVER_SIGNOFF from router
1754           for local connected servers too, and close the connections.
1755
1756           Do not process them as normally signing off servers when they
1757           really signoff by sending EOF fe, but always assume that
1758           router sends the SERVER_SIGNOFF.
1759
1760           Affected files silcd/server.c and silcd/packet_receive.c.
1761
1762         * Fixed socket unsetting when closing connections.  Affected
1763           files silcd/server.c and silcd/packet_send.c.
1764
1765         * Do not print the nickname in SERVER_SIGNOFF if we do not
1766           have it.  Prevents asserts in Irssi core.  It is possible we
1767           don't have the nick if it was just being resolved when server
1768           signoff.  Affected file irssi/src/silc/core/client_ops.c.
1769
1770 Thu Dec 12 23:22:50 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1771
1772         * Fixed autonick crashbug in client library.  Affected file
1773           lib/silcclient/client.c.
1774
1775         * Fixed Unix implementation of SilcMutex to really assert if
1776           the mutex is locked/unlcoked already.  Affected file
1777           lib/silcutil/unix/silcunixmutex.c.
1778
1779         * Fixed locking in silc_schedule_uninit.  It didn't lock
1780           when dispatching timeout tasks.  Affected file is
1781           lib/silcutil/silcschedule.c.
1782
1783         * Changed Win32 implementation of SilcThread to use modern
1784           Win32 interface.  Affected file is
1785           lib/silcutil/win32/silcwin32thread.c  A patch by Mikko L.
1786
1787 Thu Dec 12 12:06:59 CET 2002 Jochen Eisinger <c0ffee@penguin-breeder.org>
1788
1789         * Don't print signed messages when sending failed.  Affected files
1790           irssi/src/silc/core/silc-[servers.c/commands.h]
1791
1792         * Send adquate signal when founding a channel by joing it.  Affect
1793           file irssi/src/silc/core/client_ops.c
1794
1795 Wed Dec 11 21:46:19 CET 2002 Jochen Eisinger <c0ffee@penguin-breeder.org>
1796
1797         * Fix theme abstracts parsing.  Affected files irssi/default.theme,
1798           irssi/src/fe-common/core/themes.c
1799
1800 Wed Dec 11 20:20:07 EET 2002 Pekka Riikonen <priikone@silcnet.org>
1801
1802         * Fixed close command to use the port correctly when closing
1803           server connections.  Affected file silcd/idlist.c.
1804
1805         * Check for NULL outbuf in silc_socket_write.  It is possible
1806           that it is NULL is some odd case.  Affected files are
1807           lib/silcutil/[unix/win32]/silc[unix/win32]sockconn.c.
1808
1809         * Do not call final protocol callback for backup router
1810           resuming protocol when closing connection.  It is closed
1811           by timeout in case of error.  Affected file silcd/server.c.
1812
1813         * Backup reconnect to router if backup resuming protocol
1814           failed.  Affected file silcd/server_backup.c.
1815
1816 Wed Dec 11 10:01:26 CET 2002 Pekka Riikonen <priikone@silcnet.org>
1817
1818         * Fixed double free in SKE library error hadling when signature
1819           error occurred.  Affected file lib/silcske/silcske.c.
1820
1821         * Save the fingerprint to new SilcClientEntry after changing
1822           nickname.  Affected file lib/silcclient/client_notify.c.
1823
1824         * Print SIGNOFF in Irssi SILC client only if the nickname is
1825           known.  Prevents asserts in Irssi core.  It is possible we
1826           don't have the nick if it was just being resolved when it
1827           quit.  Affected file irssi/src/silc/core/client_ops.c.
1828
1829 Tue Dec 10 21:47:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1830
1831         * Fixed double free in invite list adding code when adding
1832           invite strings.  Affected file silcd/server_util.c.
1833
1834 Fri Dec  6 17:40:24 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1835
1836         * More log printing during backup router protocol.  Affected
1837           file silcd/server_backup.c.
1838
1839         * Removed backwards support for old private key file format.
1840           Affected file lib/silccrypt/silcpkcs.c.
1841
1842         * Removed backwards support for not-so-strict decryption length
1843           check, it's strict now.  Affected lib/silccrypt/silccipher.c.
1844
1845         * GETKEY to update the client entrys fingerprint too.
1846           Affected file lib/silcclient/command_reply.c.
1847
1848         * Added --without-libtoolfix for package builders using weird
1849           wrappers around libtool (BSD at least).
1850
1851 Thu Dec  5 22:29:46 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1852
1853         * Fixed backup router bugs:  When backup resumes router and
1854           receives a CHANNEL_MESSAGE packet the backup must not act
1855           as router since the packet header decryption would be
1856           different.  Also, when relaying packets to channel, do
1857           not re-encrypt packets on backup that came from the primary
1858           since the connection isn't really router-router connection.
1859           Affected files silcd/server.c, silcd/packet_send.c.
1860
1861         * Added checks in encryption/decryption that encryption/decryption
1862           length sent as argument really is multiple by block size.  Helps
1863           catching really weird bugs like the above backup router bugs
1864           when packets are being decrypted in wrong way.  Affected files
1865           lib/silccore/silcpacket.c, and lib/silccrypt/silccipher.c.
1866
1867         * Fixed padding generation in private key file encryption.
1868           Affected file lib/silccrypt/silcpkcs.c.
1869
1870 Thu Dec  5 16:35:23 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1871
1872         * Added ignore_message_signatures setting which can be used
1873           to ignore signatures in messages.  Affected files are
1874           irssi/src/silc/core/client_ops.c, silc-core.c.
1875
1876         * Fixed the libtoolfix to use command line options instead of
1877           environment variables.  They didn't work as expected.  Now,
1878           the libtool is fully run-time configurable.
1879
1880 Wed Dec  4 21:08:52 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
1881
1882         * Verify signature payload for signed messages. Affected files
1883           irssi/src/silc/core/client_ops.h, irssi/src/silc/core/silc-servers.c,
1884           irssi/src/silc/core/silc-core.h
1885
1886         * Display signature verification result in public and private
1887           messages using theme abstracts. See irssi/default.theme for
1888           examples on their usage. Affected files
1889           irssi/default.theme, irssi/src/fe-common/silc/fe-messages.h,
1890           irssi/src/fe-common/silc/module-formats.[ch],
1891           irssi/src/fe-common/silc/fe-common-silc.c,
1892           irssi/src/fe-common/silc/Makefile.am
1893           irssi/src/fe-common/core/fe-messages.[ch]
1894
1895         * Fixed bugs in Irssi's theme parsing. Affected files
1896           irssi/src/fe-common/core/themes.c
1897
1898 Wed Dec  4 18:29:13 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1899
1900         * Calculate the correct length for signed messages before
1901           encrypting, it must be multiple by block size.  Affected
1902           file lib/silccore/silcmessage.c.
1903
1904         * silc_message_signed_get_public_key returns now both
1905           decoded and encoded public key.  Affected files are
1906           lib/silccore/silcmessage.[ch].
1907
1908         * Added libtoolfix script that makes the libtool more generic
1909           and configurable in run-time.  Now we can specify in run-time
1910           if what kind of libraries we want to create, regardless of
1911           configuration.  SIMs are now creates even if --disable-shared
1912           was explicitly given.
1913
1914 Tue Dec  3 23:26:55 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1915
1916         * Fixed founder key sending in CMODE command in client.
1917           Affected file lib/silcclient/command.c.
1918
1919         * Fixed CUMODE founder authentication in server to not check
1920           for client's public key since it's not supposed to do that.
1921           Affected file silcd/command.c.
1922
1923 Tue Dec  3 12:02:41 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
1924
1925         * Set realname and hostname in NICK_REC records. Affected file
1926           irssi/src/silc/core/silc-nicklist.c
1927
1928 Mon Dec  2 20:50:20 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1929
1930         * Remove 1.0 protocol backwards compat code from client
1931           library.
1932
1933         * Added more reliable check for whether nickname did change
1934           or not, or whether only Client ID changed in NICK_CHANGE
1935           notify.  Affected file lib/silcclient/client_notify.c.
1936           Fixes bug in '@' character handling in a nickname.
1937
1938         * Added support for automatically parsing signature from
1939           the message payload.  Added new function
1940           silc_message_get_signature to return the payload to
1941           application.  Affected files lib/silccore/silcmessage.[ch].
1942
1943         * Changed the private_message and channel_message client
1944           operations to deliver the SilcMessagePayload to the
1945           application too.  Application can use it fe. to get the
1946           signature from the message for verification.  Affected
1947           file lib/silcclient/silcclient.h, client_channel.c and
1948           client_prvmsg.c.
1949
1950         * Redefined the signed payload for message payloads.
1951           Updated protocol specs and implemented.
1952
1953 Mon Dec  2 16:28:29 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1954
1955         * Fixed wrong invite and ban list handling in server command
1956           reply.  Affected files are silcd/command_reply.c,
1957           silcd/server_util.[ch].
1958
1959 Sun Dec  1 20:48:17 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1960
1961         * Fixed CMODE setting in server when founder mode was set.
1962           Affected file silcd/command.c.  Bug #95.
1963
1964         * Added support to setting specific public key in CMODE in
1965           Irssi SILC client.  Affected file lib/silcclient/command.c.
1966
1967         * Added support to use specific public key in CUMODE in
1968           Irssi SILC Client.  Affected file lib/silcclient/command.c.
1969
1970         * Added support for inviting and banning by public key in
1971           Irssi SILC client.  Affected file lib/silcclient/command.c.
1972
1973         * Fixed fingerprint/babbleprint showing in invite and ban
1974           list command replys.  Affected file is
1975           irssi/src/silc/core/client_ops.c.
1976
1977 Sun Dec  1 16:32:03 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
1978
1979         * Format CMODE +c and +h to display both the mode and the argument
1980
1981 Sun Dec  1 18:17:22 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1982
1983         * Added test vectors and test programs for SHA-1, MD5,
1984           HMAC-SHA1 and HMAC-MD5.  New tests are located in
1985           lib/silccrypt/tests/.  Fixed also argument decoding bug in
1986           MD5 implementation.  Affected file lib/silccrypt/md5.c.
1987
1988         * Changed the channel private key and private message key
1989           generation (with static keys) to use SHA1 instead of MD5,
1990           as SHA1 is the mandatory hash function in SILC.  Affected
1991           file lib/silcclient/client_[channel/prvmsg].c.
1992
1993         * Changed the private key file encryption to use SHA1 instead
1994           of MD5.  Added support for the old generation and added
1995           automatic change of the key (to be removed later).  Affected
1996           files lib/silccrypt/silcpkcs.c.
1997
1998 Sat Nov 30 19:07:52 EET 2002  Pekka Riikonen <priikone@silcnet.org>
1999
2000         * Load only files with .pub suffix in PublicKeyDir.  Affected
2001           file silcd/serverconfig.c.
2002
2003 Sat Nov 30 14:29:34 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
2004
2005         * Extended the SILC_SERVER_LOG_ERROR macro to all available logging
2006           channels.  Affected files silcd/silcd.c, silcd/server.h.
2007
2008         * Added the config directive PublicKeyDir for the client block.
2009           Affected files doc/exampe_silcd.conf.in, silcd/serverconfig.[ch].
2010
2011 Sat Nov 30 09:30:55 CET 2002  Pekka Riikonen <priikone@silcnet.org>
2012
2013         * Merged Toni's irssi/silc.conf patch.
2014
2015         * ROBODoc cleanup patch to lib/silccrypt/silcpkcs.h by johnny.
2016
2017         * Max alloc tests in allocation routines.  Affected file
2018           lib/silcutil/silcmemory.c.
2019
2020 Fri Nov 29 23:44:29 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2021
2022         * Fixed a typo in resuming code that fixed detach/resume code
2023           in server.  Bug #93.  Affected file silcd/packet_receive.c.
2024
2025 Thu Nov 28 17:17:11 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
2026
2027         * Do reverse lookups for server when /connecting. Affected files
2028           irssi/silc.conf, irssi/src/core/servers.c, irssi/src/core/network.c,
2029           irssi/src/core/net-nonblock.*
2030
2031 Thu Nov 28 16:19:18 CET 2002  Pekka Riikonen <priikone@silcnet.org>
2032
2033         * Added library versioning for shared libraries.  Affected
2034           files configure.in.pre and lib/Makefile.am.pre.
2035
2036 Wed Nov 27 21:51:52 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
2037
2038         * Display INVITE and BAN lists as specified by SILC 1.2
2039
2040 Wed Nov 27 16:01:11 CET 2002  Pekka Riikonen <priikone@silcnet.org>
2041
2042         * Do not send invite list back unless asked (when sending
2043           no arguments) or when list was modified.  Affected file
2044           silcd/command.c.
2045
2046         * Remove client from invite list in KILLED notify and in
2047           KILL command.  Affected file silcd/command.c and
2048           silcd/server.[ch].
2049
2050         * Fixed bugs in invite list handling in INVITE command.
2051           Affected files silcd/command.c and silcd/server_util.c.
2052
2053         * Merged with Irssi 0.8.6.
2054
2055         * Fixed UTF-8 in Irssi SILC Client, setlocale was missing.
2056           Affected file irssi/src/fe-text/silc.c.
2057
2058 Mon Nov 25 18:21:43 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2059
2060         * The silc_argument_get_[first/next] now return the argument
2061           type to caller.  Added silc_argument_payload_encode_one.
2062
2063           Affected files are lib/silccore/silcargument.[ch].
2064
2065         * Added support for the SILC 1.2 INVITE command and new
2066           invite lists to server.  Affected files are silcd/command.c,
2067           silcd/server_util.[ch] and silcd/packet_[receive/send].[ch].
2068
2069         * Added support for the SILC 1.2 BAN command and new
2070           ban lists to server.  Affected files are silcd/command.c,
2071           silcd/server_util.[ch] and silcd/packet_[receive/send].[ch].
2072
2073         * Added support to client sending new INVITE command.  Affected
2074           file is lib/silcclient/command.c.
2075
2076         * Added support to client sending new BAN command.  Affected
2077           file is lib/silcclient/command.c.
2078
2079         * Added support for removing client from invite list when kicked
2080           from channel, as SILC 1.2 dictates.  Affected files are
2081           silcd/packet_receive.c and silcd/command.c.
2082
2083 Sun Nov 24 18:26:42 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2084
2085         * If iv argument to silc_cipher_[encrypt/decrypt] is NULL, use
2086           automatically the cipher's internal IV.  Affected files
2087           lib/silccrypt/silccipher.[ch].
2088
2089         * Assure the RESUME_CLIENT packet is not sent to twice to
2090           backup router if the detached client was originated from
2091           the backup.  Affected file silcd/server.c.  Bug #76.
2092
2093         * Changed silc_sim_symname to not allocate memory.  Affected
2094           file lib/silcsim/silcsimutil.c.
2095
2096         * Fixed memory leaks with SIMs in server.  Affected files
2097           silcd/serverconfig.c, silcd/server.c.
2098
2099         * Fixed channel key distribution after resuming detached
2100           client.  Affected files silcd/packet_receive.c.
2101
2102         * Fixed channel's global_user boolean checking after detaching.
2103           Check it after changing the owner of the client not before.
2104           Affected file silcd/packet_receive.c.
2105
2106         * Fixed few double frees from client library.  Fixes at least
2107           Bug #81, possibly others too.
2108
2109         * UTF-8 decode topics also in JOIN command reply and TOPIC_SET
2110           notifys in Irssi SILC Client.  Affected file is
2111           irssi/src/silc/core/client_ops.c.  Bug #82.
2112
2113         * Applied Ville Räsänen's manual page and --mandir bugfix
2114           patch.  Affected files are configure.in.pre and Makefile.am.pre.
2115           Bug #88.
2116
2117 Fri Nov 22 18:34:20 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2118
2119         * Added support to backup router protocol for backup to tell
2120           normal server that it cannot use the backup router as primary
2121           because the primary isn't really down.  Updated protocol
2122           specs.
2123
2124         * Added support for primary router to tell backup router that
2125           resuming is not possible because the backup really isn't primary
2126           in the cell.  For example if backup disconnected itself the
2127           resuming is not allowed since the primary really did not
2128           go down.  Updated protocol specs.
2129
2130         * Removed MARS from crypto library.
2131
2132         * Defined the CTR mode and Randomized CBC mode in SILC.  The
2133           CTR mode is RECOMMENDED now in specification.  Defined also
2134           Serpent cipher as optional cipher.  Updated the protocol specs.
2135
2136 Thu Nov 21 12:43:28 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2137
2138         * Added support for inviting/banning by IP/MASK, public key,
2139           and explicit Client ID.  Redefined the command and notify
2140           types to allow easier forwards support for other methods
2141           of inviting/banning.  Updated protocol specs.
2142
2143         * Remove the client from channel's invite lists if the client
2144           is kicked or killed.  Updated protocol specs.
2145
2146         * Unified the Channel Message Payload and Private Message
2147           into one Message Payload.  Updated protocol specs and
2148           implemented.
2149
2150 Tue Nov 19 22:30:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2151
2152         * Don't wait for EOF after socket error has occurred, but
2153           close the connection.  Affected file is silcd/server.c.
2154
2155 Mon Nov 18 18:58:26 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2156
2157         * Added support for setting FOUNDER mode on channel with
2158           specific public key which can be set with CMODE command.
2159           Updated protocol specs and implemented in client and server.
2160
2161         * Fixed the Irssi SILC client to correctly shutdown the client
2162           library to avoid memory leaks.  Affected files are
2163           irssi/src/silc/core/silc-core.c and silc-servers.c.
2164
2165         * Deprecated the No Reply flag in SKE protocol and introduced
2166           "IV Included" flag which can be used to indicate that the IV
2167           is included in the ciphertext.  This makes it possible to use
2168           SILC on unreliable transport, such as UDP which may cause
2169           packet reordering and losses.  Updated protocol specs, did
2170           not implement yet.
2171
2172 Sun Nov 17 15:50:57 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2173
2174         * Fixed the MPI implementation of silc_mp_sizeinbase to return
2175           < 32 bit values in correct size.  Affected file is
2176           lib/silcmath/mp_mpi.c.
2177
2178 Sat Nov 16 13:14:45 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2179
2180         * Fixed the KE Start Payload parsing to check that mandatory
2181           fields are present.  Affected file lib/silcske/payload.c.
2182
2183         * Fixed compilation warnigs in Irssi SILC Client.  Affected
2184           files are irssi/src/silc/core/silc-query.c. client_ops.c.
2185
2186 Thu Nov 14 19:33:28 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
2187
2188         * Print "nick now appears as newnick" and update Irssi's nicklist
2189           when you change your nick to "nick". Closes #62
2190
2191         * Never format your own nick. Closes #63
2192
2193 Thu Nov 14 09:44:54 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
2194
2195         * SILC_UMODE_GONE changes are now propagated correctly to the
2196           Irssi client. Closes #54
2197
2198 Tue Nov 12 19:42:18 CET 2002  Jochen Eisinger <c0ffee@penguin-breeder.org>
2199
2200         * Fixed example in /HELP KEY
2201
2202         * Added expando $j which expands to current SILC Client version
2203
2204 Tue Nov 12 19:46:39 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2205
2206         * Fixed public key decoding in crypto library.
2207
2208         * Added better error printing to SKE library.
2209
2210 Tue Nov 12 08:50:12 CET 2002  Pekka Riikonen <priikone@silcnet.org>
2211
2212         * Fixed NICK command to not crash if nickname was not sent.
2213
2214 Mon Nov 11 19:32:00 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2215
2216         * Added Encrypt-Then-MAC order to SILC packet MAC generation.
2217           Deprecated the old Encrypt-And-MAC order.  Updated protocol
2218           specs and implemented.
2219
2220         * Added Encrypt-Then-MAC order to Channel Message Payload MAC
2221           generation.  Updated specs and implemented.
2222
2223 Sun Nov 10 12:20:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2224
2225         * Added support for rekey before 2^32 sequence number wraps.
2226           Affected files in server and client library.
2227
2228         * Padding must be at least 8 bytes now.  Implemented and updated
2229           protocol specs.
2230
2231         * Compute maximum padding for authentication packets to make
2232           passphrase approximation attacks impossible.  Affected files
2233           in client library and in server.
2234
2235         * Fixed PING command sending in client library and handling in
2236           server.  The server ID must be ID Payload, not raw ID data.
2237           Affected files in server and client library.
2238
2239         * Defined that all public keys sent in commands and notify
2240           payloads are actually Public Key Payloads not raw public key
2241           data.  Updated protocol specs and implemented.
2242
2243         * Updated protocol version to 1.2.  Updated specs and code.
2244
2245         * Added ERR_UNSUPPORTED_PUBLIC_KEY and ERR_OPERATION_ALLOWED
2246           status types.  Updated specs and the code.
2247
2248         * Added support for normal client to kill its own entries from
2249           the network.  Updated protocol specs and the code.
2250
2251         * Defined the SILC_MESSAGE_FLAG_SIGNED.  Updated protocol specs
2252           and added initial implementation.
2253
2254         * Added MAC field to the Private Message Payload to protect
2255           against chosen ciphertext attacks.  Updated the protocol specs
2256           and implemented.
2257
2258         * Added idle and signon fields to the ATTRIBUTE_SERVICE
2259           attribute to indicate the user's current idle and signon time
2260           of a service.  Updated protocol specs and implemented.
2261
2262 Thu Nov  7 19:21:10 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2263
2264         * Added "do_not_bind" argument to silc_client_file_send what
2265           can be used to not bind locally but assume the file receiver
2266           provides the point of connect.  Usefull when sender is behind
2267           NAT device.  Affected file lib/silcclient/silcclient.h and
2268           client_ftp.c.
2269
2270         * Added -no-listener option to FILE SEND command in Irssi SILC
2271           client.  Affected file irssi/src/silc/core/silc-servers.c.
2272           Renamed FILE RECEIVE to FILE ACCEPT.
2273
2274         * Confirm passphrase for private key encryption in
2275           silc_create_key_pair and silc_change_private_key_passphrase.
2276           Affected files are lib/silcutil/silcapputil.c.
2277
2278 Thu Nov  7 10:05:28 CET 2002  Pekka Riikonen <priikone@silcnet.org>
2279
2280         * Move silc_client_packet_send back to internal, added
2281           silc_client_send_packet, a bit simpler function for application.
2282           Affected files lib/silcclient/silcclient.h, client.c and
2283           client_internal.h.
2284
2285         * Moved the SilcClientEntry, SilcChannelEntry and
2286           SilcServerEntry to silcclient.h to be public and documented
2287           them for application.  Affected files are
2288           lib/silcclient/silcclient.h and idlist.h.
2289
2290 Wed Nov  6 17:18:13 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2291
2292         * Fixed manual page installation patch by Ville Räsänen.
2293           USERS help page fix patch by Ville Räsänen
2294
2295         * Changed the silc_client_command_call interface to make
2296           the command call simpler for the application.  The library
2297           now handles the command line parsing, command finding and
2298           execution.  Application only needs to call the function
2299           with the command line.  Affected files are
2300           lib/silcclient/silcclient.h, command.[ch].
2301
2302         * Fixed silc_get_input to NULL-terminate the returned input.
2303           Affected file lib/silcutil/silcutil.c.
2304
2305         * Resolve the client's public key in JOIN command if the
2306           founder auth data is being requested but we don't know the
2307           client's public key.  Affected file silcd/command.c.
2308           Bug #53.
2309
2310 Mon Nov  4 16:02:59 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2311
2312         * Print notify for server opers when backup router comes
2313           online.  Affected file silcd/server.c.
2314
2315         * Fixed the INVITE command to send the invite list in
2316           command reply.  Affected file silcd/command_reply.c.
2317
2318         * Fixed MOTD command reply sending.  Affected file
2319           silcd/command.c.
2320
2321         * UTF-8 decode the topic in TOPIC command reply and LIST
2322           command reply in Irssi SILC client.  Affected file is
2323           irssi/src/silc/core/client_ops.c.
2324
2325 Sun Nov  3 17:59:15 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2326
2327         * Fixed the INVITE command to not crash Irssi SILC client
2328           when given without nickname argument.  AFfected file
2329           irssi/src/silc/core/client_ops.c.
2330
2331         * Fixed double free in WHOIS query on normal server when
2332           forwarding query to router.  Affected file is
2333           silcd/server_query.c.
2334
2335         * Fixed WATCH command reply handling on normal server which
2336           was missing altogether.  Affected file silcd/command_reply.c.
2337           Bug #44.
2338
2339 Sun Nov  3 00:42:05 EET 2002  Mika Boström <bostik@lut.fi>
2340
2341         * Added man-pages for silc(1), silcd(8) and silcd.conf(5).
2342           Included yodl sources for each of these. Also modified
2343           Makefile.am prototype to install these files to proper
2344           locations. Updated CREDITS. Affected file Makefile.am.pre,
2345           new files doc/*.yo, doc/silc.1, doc/silcd.conf.5,
2346           doc/silcd.8.
2347
2348 Sat Nov  2 21:26:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2349
2350         * Added support for encrypted private key files.  Now
2351           passphrase must be provided when new key pair is created
2352           (can be empty though), and prompted when loading the
2353           private key.  Added support for loading the old-style
2354           non-encrypted private keys as well.  Affected files
2355           lib/silccrypt/silcpkcs.[ch], Irssi SILC client and
2356           SILC Server.
2357
2358         * Fixed silc_get_input to accept input on all terminals.
2359           Affected file lib/silcutil/silcutil.c.
2360
2361         * Moved the Irssi SILC client key loading and other stuff
2362           to be called after the arguments and UI is initialized.
2363           Affected file irssi/src/silc/core/silc-core.c.  Bug #31.
2364
2365         * Added -P option to Irssi SILC client which can be used
2366           to change the passphrase of the private key.  Affected
2367           file irssi/src/silc/core/silc-core.c.
2368
2369         * Added silc_change_private_key_passphrase apputil routine
2370           to lib/silcutil/silcapputil.[ch].
2371
2372 Sat Nov  2 12:53:09 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2373
2374         * Fixed connection closing in client library to not crash.
2375           Moved the connection freeing totally to function
2376           silc_clinet_del_connection.  Affected file
2377           lib/silcclinet/client.c.
2378
2379 Fri Nov  1 18:57:02 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2380
2381         * Changed includes/silcincludes.h to silcincludes.h.in to
2382           include configuration specific information.  The silcdefs.h
2383           is not included in to installation anymore (it's only
2384           compilation time header).
2385
2386 Fri Nov  1 10:30:26 CET 2002  Pekka Riikonen <priikone@silcnet.org>
2387
2388         * Moved the SilcClient and SilcClientConnection from client.h
2389           to the public lib/silcclient/silcclient.h.  Changed the
2390           structures a bit.
2391
2392 Thu Oct 31 22:44:07 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2393
2394         * If version string in silc_clinet_alloc is NULL the library
2395           puts it automatically.  Affected file lib/silcclient/client.c.
2396
2397         * Changed the version strings from variables to #define's
2398           in includes/silcversion.h.
2399
2400 Wed Oct 30 16:17:30 CET 2002  Pekka Riikonen <priikone@silcnet.org>
2401
2402         * Added shared library complation support.
2403
2404 Tue Oct 29 21:48:55 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2405
2406         * Added lib/silcutil/silcapputil.[ch] for application
2407           utility functions.  It includes routines for applications'
2408           convenience.  Added silc_create_key_pair, silc_show_public_key
2409           and silc_load_key_pair functions.
2410
2411 Tue Oct 29 17:36:44 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2412
2413         * Send RESUME_CLIENT packet from router to backup routers
2414           to in resuming.  Affected file silcd/packet_receive.c.
2415
2416 Mon Oct 28 21:23:39 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2417
2418         * In IDENTIFY command parsing, send all other IDs except
2419           Client IDs explicitly to router for resolving on normal
2420           server.  Also check that ID received in WHOIS command is
2421           always Client ID, others are not allowed.  Affected file
2422           silcd/server_query.c.
2423
2424         * Merged latest changes from irssi.org CVS.
2425
2426 Sun Oct 27 11:44:32 EET 2002  Pekka Riikonen <priikone@silcnet.org>
2427
2428         * Merged c0ffee's /set heartbeat patch to Irssi SILC client.
2429           Affected files irssi/src/silc/core/silc-core, silc-server.c.
2430
2431         * Fixed the heartbeat sending in Irssi SILC client.  Moved
2432           the silc_client_packet_send to silcclient.h for application
2433           usage.  Affected files lib/silcclient/client_internal.h
2434           lib/silcclient/silcclient.h.
2435
2436         * Fixed a bug in query resolving in server.  Used wrong
2437           variable in a for loop and crashed.  Affected file is
2438           silcd/server_query.c.
2439
2440         * Server constructs requested attributes only to locally
2441           connected clients.  Affected file silcd/server_query.c.
2442           Bug #36.
2443
2444         * Fixed a bug when sending resolving from router to server
2445           with requested attributes.  The constructed WHOIS command
2446           was incorrect.  Affected file silcd/server_query.c.
2447           Bug #38.
2448
2449         * Fixed Requested Attributes saving in WHOIS command reply.
2450           The length of the data buffer must be saved too.  Affected
2451           file silcd/command_reply.c.
2452
2453         * Update the client entry's servername after detaching is
2454           over.  Affected file silcd/packet_receive.c.  Bug #37.
2455
2456         * Resolve incomplete client entrys in CUMODE_CHANGE and
2457           CMODE_CHANGE notifys.  Affected file is
2458           lib/silcclient/client_notify.c.  Bug #42.
2459
2460 Thu Oct 24 12:22:35 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2461
2462         * Fixed channel key packet processing bug on backup router
2463           during backup resuming protocol.  Affected file is
2464           silcd/packet_receive.c.
2465
2466         * Fixed memory leaks in server.  Affected files are
2467           silcd/server.c and silcd/packet_receive.c.
2468
2469         * Fixed packet decryption problem when backup router encrypted
2470           channel message with wrong key during backup resuming
2471           protocol.  Affected file silcd/packet_send.c.
2472
2473         * ROBODoc documented lib/silccrypt/silccipher.h.  A patch by
2474           Toni Willberg (toniw@iki.fi)
2475
2476         * Changed the SilcCipher context to be private.  Changed the
2477           silc_cipher_get_iv to just return pointer to the IV.  Added
2478           silc_cipher_get_name to return the name of the cipher.
2479           Fixed code all around to support these changes.  Affected
2480           files are lib/silccrypt/silccipher.[ch], client library and
2481           server.
2482
2483 Wed Oct 23 19:01:41 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2484
2485         * Fixed unaligned access in lib/silccore/silcattrs.c.
2486
2487         * Fixed libtool linking in lib/silcsim/Makefile.am.
2488
2489         * Fixed services attribute printing.  Affected files is
2490           irssi/src/silc/core/silc-queries.c.
2491
2492 Wed Oct 23 09:51:04 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2493
2494         * Fixed a crashbug in incoming server accepting.  Affected
2495           file silcd/server.c.
2496
2497 Tue Oct 22 13:02:32 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2498
2499         * Added automatically generated index to Toolkit Reference
2500           Manual.
2501
2502         * Added support for Postscript Toolkit Reference Manual.
2503
2504 Mon Oct 21 21:30:40 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2505
2506         * Merged DISCONNECT fix, and autoconn port fix from Irssi
2507           CVS.
2508
2509 Sun Oct 20 19:54:55 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2510
2511         * Added 'send_events' boolean argument to the function
2512           silc_schedule_set_listen_fd which sends the set events to
2513           the application explicitly if set to TRUE.  Default action
2514           should be FALSE.  Affected file lib/silcutil/silcschedule.[ch],
2515           lib/silcclient/client_internal.h and silcd/server_internal.h.
2516
2517         * Added silc_compare_timeval to determine which time values
2518           is smaller.  Affected file lib/silcutil/silcutil.[ch].
2519
2520         * Added sort-of "Quality of Service" (QoS) support to
2521           SilcSocketConnection.  Data reception can be controlled with
2522           rate limit per second and/or read data length limit.
2523           Added silc_socket_set_qos.  Affected files are
2524           lib/silcutil/silcsockconn.[ch] and unix/silcunixsockconn.c.
2525
2526         * Added the QoS configuration to SILC Server configuration
2527           file.  Affected files are silcd/serverconfig.[ch] and
2528           server.c.
2529
2530 Sun Oct 20 14:12:24 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2531
2532         * Merged with irssi.org CVS.
2533
2534         * Failed OPER and SILCOPER authentications are now logged.
2535           Affected file silcd/command.c.  Bugs #25.
2536
2537 Sat Oct 19 13:32:15 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2538
2539         * ROBODoc documented lib/silcutil/silcbuffer.h and
2540           lib/silcutil/silcdlist.h.  Patch by Ville Räsänen
2541           <ville.rasanen@iki.fi>.
2542
2543 Fri Oct 18 10:51:04 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2544
2545         * Added support for auto-passphrase authentication from the
2546           config file during connecting which was not implemented
2547           yet.  Affected file irssi/src/silc/core/client_ops.c.
2548
2549         * Fixed a bug in authentication protocol failure handling which
2550           was processing wrong callback context.  Affected files
2551           are lib/silcclient/client.c and protocol.c.
2552
2553         * Fixed the /ATTR allow off to actually work.  Affected file
2554           is irssi/src/silc/core/silc-queries.c.
2555
2556         * Fixed the /ATTR -del to work.  Affected file is
2557           irssi/src/silc/core/silc-queries.c.
2558
2559 Thu Oct 17 23:45:12 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2560
2561         * Fixed string formatting crashbug in lib/silccore/silcattrs.c.
2562
2563         * Fixed mask attribute adding in Irssi SILC client.  Affected
2564           file irssi/src/silc/core/silc-queries.c.
2565
2566 Thu Oct 17 16:40:39 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2567
2568         * Added support for saving the requested attributes in
2569           WHOIS to directory.  Affected file is
2570           irssi/src/silc/core/silc-queries.c.
2571
2572 Wed Oct 16 17:40:56 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2573
2574         * Added support for parsing VCard fields that do not have
2575           the TYPE= for types.  Affected file lib/silcutil/silcvcard.c.
2576
2577         * Fixed a double free bug in hash table foreach function
2578           if the entry was deleted in the foreach callback.  Affected
2579           file lib/silcutil/silchashtable.c.
2580
2581 Tue Oct 15 18:05:24 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2582
2583         * Added silc_attribute_get_verify_data to return the signature
2584           verification data for either user digital signature or
2585           server digital signature in Requested Attributes.  Affected
2586           files are lib/silccore/silcattrs.[ch].
2587
2588         * Added silc_vcard_alloc which is used to allocated dynamic
2589           SilcVCard context.  The silc_vcard_free now checks whether
2590           the context is dynamically allocated or not.  Affected files
2591           are lib/silcutil/silcvcard.[ch].
2592
2593 Mon Oct 14 17:55:44 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2594
2595         * Periodically remove the NOATTR status from client entry
2596           so that the client may take the attributes in use even after
2597           server has resolved them unsuccessfully earlier.  Affected
2598           file silcd/server_query.c and idlist.h.
2599
2600         * Moved sha1hash and md5hash from client->internal to
2601           SilcClient for application usage.  Affected files are
2602           lib/silcclient/client.h and client_internal.h.
2603
2604         * Fixed attribute encoding and decoding bugs.  Affected
2605           files lib/silccore/silcattrs.[ch].
2606
2607         * Added ATTR command to Irssi SILC Client which is used to
2608           manage user's Requested Attributes sending and values for
2609           WHOIS command.  Affected files around Irssi SILC client.
2610
2611 Mon Oct 14 14:33:54 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2612
2613         * Added silc_buffer_strformat which can be used to format
2614           strings into a buffer which size is automatically increased.
2615           Affected file lib/silcutil/silcbuffmt.[ch].
2616
2617         * Added implementation of VCard (RFC 2426) which can be used
2618           as part of Requested Attributes in WHOIS command.  Affected
2619           file lib/silcutil/silcvcard.[ch].
2620
2621 Fri Oct 11 23:52:17 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2622
2623         * Some strncat -> silc_strncat changes our the core and
2624           client library.
2625
2626         * Added SILC_SKE_STATUS_SIGNATURE_ERROR and OUT_OF_MEMORY
2627           errors.  Added better error printing to SKE library.
2628           Affected files lib/silcske/silcske.c, silcske_status.h and
2629           payload.c.
2630
2631         * Save the PKCS key length even if only private key is set to
2632           SilcPKCS.  Affected file lib/silccrypt/silcpkcs.[ch] and rsa.c.
2633
2634         * Fixed the usage of silc_pkcs_get_key_len since it returns the
2635           length in bits not in bytes.  Affected files are
2636           lib/silcske/silcske.c, lib/silccore/silcauth.c and
2637           silcd/server_query.c.
2638
2639 Wed Oct  9 17:22:57 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2640
2641         * Added silc_attribute_payload_encode_data to directly encode
2642           the data into the attributes buffer.  Renamed function
2643           silc_attribute_payload_parse_list to silc_attribute_payload_parse.
2644           Affected files are lib/silccore/silcattrs.[ch].
2645
2646         * silc_hash_table_find_foreach calls the foreach function now
2647           once even if the nothing was found with context set to NULL.
2648           Affected file lib/silcutil/silchashtable.[ch].
2649
2650         * Remove the RESOLVING flag from client entry after received
2651           the Requested Attributes from the client.  Fixed memory leak
2652           in client entry freeing.  Affected files silcd/server_query.c
2653           and idlist.c.
2654
2655         * Added Requested Attributes support into SILC Client Library.
2656           It is not able to send requested attributes in WHOIS command,
2657           and also receive and process requested attributes.  Added
2658           silc_client_attribute_[add|del] and silc_client_attributes_get
2659           functions.  Added also `ignore_requested_attributes' to the
2660           SilcClientParams to not use attributes in client.  Affected
2661           files are lib/silcclient/command.c, client_attrs.[ch],
2662           silcclient.h, client_internal and client.[ch].
2663
2664         * Changed the silc_client_get_client_by_id to support Requested
2665           Attributes, it takes them as argument now.  Affected file
2666           is lib/silcclient/silcclient.h, and idlist.c.
2667
2668         * Added -details option to WHOIS command in Irssi SILC Client
2669           to support the requested attributes.  By default it requests
2670           all attributes.  Affected file lib/silcclient/command.c and
2671           irssi/doc/help/in/whois.in.
2672
2673 Tue Oct  8 17:58:28 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2674
2675         * Add also SERVICE attribute for server-constructed attribute
2676           data.  Also digitally sign the attributes and add
2677           SERVER_DIGITAL_SIGNATURE attribute.  Affected file is
2678           silcd/server_query.c.
2679
2680 Mon Oct  7 18:25:35 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2681
2682         * Changed the silc_attribute_payload_encode to support list
2683           of attributes (function may be called several times to add
2684           a new attribute).  Removed the silc_attribute_payload_encode_list
2685           function.  The encoding function now also automatically encodes
2686           the data, so the caller does not need to do that.  Affected
2687           files lib/silccore/silcattrs.[ch].
2688
2689         * Added support for replying on behalf of the user to the
2690           Requested Attributes in WHOIS command in the server.  Affected
2691           file silcd/server_query.c.
2692
2693         * SILC_NOT_IMPLEMENTED macro use SILC_LOG_INFO now instead of
2694           SILC_LOG_DEBUG.  Affected file lib/silcutil/silclog.h.
2695
2696 Sun Oct  6 16:48:32 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2697
2698         * Don't swtich to become primary router if we are backup if
2699           decryption error has occurred.  Affected file silcd/server.c.
2700
2701         * Fixed a bug in backup router IP address comparison in
2702           silc_server_backup_get.
2703
2704           Save now also the port of the server/router and use that
2705           in comparison as well.  Affected file silcd/server_backup.c.
2706
2707         * Normal server now reconnects to backup router automatically
2708           if connection is lost to it.  Affected file silcd/server.c.
2709
2710 Thu Sep 26 13:51:02 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2711
2712         * If packet processing fails (like integrity check fails)
2713           the connection is closed now.  Affected files are
2714           lib/silccore/silcpacket.c and silcd/server.c.
2715
2716 Mon Sep 23 10:59:39 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2717
2718         * Fixed double free in RSA public key set function
2719           silc_rsa_set_public_key.  Affected file lib/silccrypt/rsa.c.
2720           Bug #29.
2721
2722 Sun Sep 22 14:54:05 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2723
2724         * Rewrote WHOIS, WHOWAS and IDENTIFY commands in the server.
2725           Added server_query.[ch] which provides one interface for
2726           querying information using all three commands.
2727
2728         * Changed all "typedef unsigned char" in core library to
2729           "typedef SilcUInt8".
2730
2731 Sat Sep 21 21:36:45 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2732
2733         * Added silc_strncat into lib/silcutil/silcstrutil.[ch].
2734
2735         * Renamed silc_server_get_client_resolve to
2736           silc_server_query_resolve and moved to server_query.[ch].
2737
2738 Wed Sep 18 18:28:04 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2739
2740         * Resumed client packet handling from server put the resumed
2741           client on wrong list on router and caused the client not
2742           be present on the network anymore.  Now fixed to put the
2743           client to correct list.  Affected file silcd/packet_receive.c.
2744
2745 Wed Sep 18 15:13:48 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
2746
2747         * Various cleanup in error message output in config parsing code
2748           and in server init code.  Fixed error log files containing
2749           too many newlines ('\n') in some situations.  Affected files are
2750           silcd/serverconfig.c, silcd/silcd.c, and silcd/server.c.
2751
2752 Wed Sep 18 10:51:23 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2753
2754         * Use the reverse lookupped hostname in client internals
2755           instead of one user provided us as remote server name.
2756           Affected file lib/silcclient/client.c.
2757
2758 Mon Sep 16 12:02:54 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2759
2760         * Added 'app_context' to silc_schedule_init.  It is an
2761           application specific context that is delivered to application
2762           in task callback functions.  Affected files are
2763           lib/silcutil/silcutil.[ch].
2764
2765         * The hb_context in SilcSocketConnection is not freed
2766           automatically anymore (application must free it).  Freeing
2767           it automatic is inconsistent.  Affected files are
2768           lib/silcutil/silcsockconn.[ch].
2769
2770 Sun Sep 15 22:16:19 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2771
2772         * Added support for removing explicitly added client connections
2773           in rehash and closing the client connections if they were
2774           unconfigured in the rehash.  Affected file silcd/server.c.
2775
2776         * Added support for aborting automatically pending commands
2777           that never receives the reply (to avoid memory leaks).
2778           Added also silc_server_command_pending_timed to set the
2779           specific timeout for pending command.  Affected files are
2780           silcd/command[_reply].[ch].
2781
2782         * Added SILC_STATUS_ERR_TIMEDOUT status.  Updated protocol
2783           specs and lib/silccore/silcstatus.h.
2784
2785 Sun Sep 15 12:25:10 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2786
2787         * Changed the silc_get_time to accept time value as argument
2788           or if zero is sent return current local time.  Affected
2789           file lib/silcutil/silcutil.[ch].
2790
2791         * Added STATS command to client library and Irssi SILC client.
2792           Patch provided by Ville Räsänen <ville.rasanen@iki.fi>.
2793
2794 Wed Sep 11 09:22:00 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2795
2796         * Assure that channel key is set before sending it.  May
2797           crash server otherwise.  Affected file silcd/packet_send.c.
2798
2799 Tue Sep 10 09:50:08 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2800
2801         * Assure that endless loop cannot happen with detached client
2802           resolving on normal server.  Added idlist status
2803           SILC_IDLIST_STATUS_RESUME_RES.   Affected files are
2804           silcd/idlist.h and silcd/packet_receive.c.
2805
2806 Mon Sep  9 12:18:18 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
2807
2808         * Incoming file transfer request cannot use same session as
2809           the sending session.  This can happen when sending file to
2810           yourself.  Crashed the client on quit.  Affected file
2811           lib/silcclient/client_ftp.c.  Bug #24.
2812
2813 Sun Sep  8 18:39:25 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2814
2815         * Implemented the draft-riikonen-precense-attrs draft and
2816           the Attribute Payload into the lib/silccore/silcattrs.[ch].
2817
2818 Sun Sep  8 13:13:44 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2819
2820         * Distribute the SERVER_SIGNOFF notify also to local backup
2821           routers from the primary router.  The backup router may not
2822           have the signing of local server directly connected and need
2823           to know about the signoff.  Affected file silcd/server_util.c.
2824
2825         * Use the primary router as the origin of the locally connected
2826           server when it is disconnecting from the backup router since
2827           that's where it really is coming from.  Now the clients from
2828           the disconnecting server are removed correctly and "shadow"
2829           clients are not left to the backup router.  Affected file
2830           silcd/server.c.
2831
2832 Sat Sep  7 22:26:50 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2833
2834         * If normal server is standalone and found existing but disabled
2835           channel, do not re-create the channel since it creates
2836           duplicate same channels.  Affected file silcd/server.c.
2837
2838         * Added anonymous client connections support to server.  New
2839           "anonymous" configuration option to ConnectionParams section
2840           added.  If set to true, the username and hostname information
2841           of the client will be scrambled and anonymous user mode is
2842           set automatically to the user.  Affected files are
2843           silcd/serverconfig.[ch], silcd/packet_receive.c and server.c.
2844
2845 Sat Sep  7 16:02:09 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
2846
2847         * In JOIN notify handling, mark that the cache entry of the
2848           client cannot be expired.  Can cause crashes on normal
2849           server (asserts client->channels).  Affected file is
2850           silcd/packet_receive.c.
2851
2852         * From now on distribution versions are used as protocol versions
2853           instead of by default using the Toolkit base version as protocol
2854           version.  Affected file prepare.
2855
2856         * Do not set the locally resolved hostname for local client
2857           entry but take what server sends.  This way the real hostname
2858           is showed in WHOIS for yourself.  Affected file is
2859           lib/silcclient/idlist.c and lib/silcclient/client.c.
2860
2861         * Resolve local info with IDENTIFY when connecting to server.y
2862
2863 Sat Sep  7 14:22:43 CEST 2002 Lubomir Sedlacik <salo@silcnet.org>
2864
2865         * Rewritten check for POSIX threads.  Use --with-pthreads[=DIR]
2866           for implied search (not needed on platforms which has native
2867           pthreads library).  Use --without-pthreads to disable threads.
2868           Affected file is configure.in.pre
2869
2870         * Fixed --with-iconv on platforms which need to bypass (broken)
2871           native iconv().  Affected file is configure.in.pre
2872
2873 Sat Sep  7 15:08:13 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2874
2875         * Moved -C option parsing in Irssi SILC client at same time
2876           as other options.  The UI was initialized earlier and caused
2877           problems on command line.  Bug #16.  Affected file is
2878           irssi/src/silc/core/silc-core.c.
2879
2880 Mon Sep  2 23:00:30 CEST 2002 Johnny Mnemonic <johnny@themnemonic.org>
2881
2882         * Added global variable silc_log_timestamp that tells silclog
2883           wether to print or not the timestamp in the logging files.
2884           Affected file lib/silcutil/silclog.[ch].
2885
2886         * Added silcd configuration option Timestamp in the Logging
2887           section.  Affected file silcd/serverconfig.[ch],
2888           doc/example_silcd.conf.in.
2889
2890 Fri Aug 30 08:57:33 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2891
2892         * Fixed fingerprint checking to check for entirely empty
2893           fingerprint instead of two first bytes when determining
2894           if it is set.  Bug #18.  Affected file silcd/command.c.
2895
2896         * Fixed duplicate PKCS name registering to not allow it.
2897           Bugs #17.  Affected file lib/silccrypt/silcpkcs.c.
2898
2899 Sun Aug 25 08:02:04 CEST 2002 Lubomir Sedlacik <salo@silcnet.org>
2900
2901         * Conditionalize non-gcc compiler optimizations for various
2902           platforms, enable those commented out.  Cleanups.
2903           Affected file lib/silcmath/mpi/configure.in
2904
2905 Sat Aug 24 15:11:32 EEST 2002 Timo Sirainen <tss@iki.fi>
2906
2907         * silc_rng_exec_command() left zombie processes if command
2908           didn't generate any output.  Affected file
2909           lib/silccrypt/silcrng.c
2910
2911 Fri Aug 23 22:05:44 CEST 2002 Lubomir Sedlacik <salo@silcnet.org>
2912
2913         * Rewrote iconv checking, introduce --with-iconv for systems
2914           which rely on libiconv.  Check if iconv() provided by libc
2915           is good enough, otherwise demand libiconv.  Affected file
2916           configure.in.pre
2917
2918 Fri Aug 23 07:10:52 CEST 2002 Lubomir Sedlacik <salo@silcnet.org>
2919
2920         * Search for ldopen() also in libc.  This enables SIM support
2921           on *BSD systems.  Based on patch from Alex Zepeda.  Affected
2922           file configure.in.pre
2923
2924 Sun Aug 18 04:44:30 CEST 2002 Lubomir Sedlacik <salo@silcnet.org>
2925
2926         * Don't call AM_CONDITIONAL conditonally for SILC_THREADS.
2927           This fixes prepare on *BSD systems.  Affected file
2928           configure.in.pre
2929
2930 Sun Aug  4 15:55:40 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2931
2932         * More fixed for not having purge timeout for global clients
2933           that are on channel.  Affected files silcd/command_reply.c
2934           and server_util.c.
2935
2936         * Fixed the rekey protocol to work with backup router connections.
2937           Rekey packets are now allowed on disabled connections as
2938           well.  Affected files silcd/packet_send.c and server.c.
2939
2940         * Do not switch to be as backup router when shutting down and
2941           closing the primary connection.  Affected file silcd/server.c.
2942
2943         * Fixed memory leaks in backup router deleting.  Added
2944           silc_server_backup_free to free all data during shutdown of
2945           server.  Affected files silcd/server_backup.[ch].
2946
2947 Sun Jul 14 21:33:32 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2948
2949         * Do not process commands if the sock->user_data is NULL.
2950           Affected file silcd/command.c.
2951
2952 Tue Jul  9 19:03:11 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2953
2954         * Fixed buffer overflow and security problems (loosing bits
2955           in CFB encryption) in SILC RNG.  Problems reported by
2956           Markku-Juhani O. Saarinen <mjos@saturn.tcs.hut.fi>.
2957
2958 Sun Jul  7 13:10:01 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2959
2960         * Added yet more checks that client is not expired on global
2961           list if it is on channels.  Affected file is
2962           silcd/command_reply.c.
2963
2964 Sat Jul  6 11:45:11 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2965
2966         * Merged c0ffee's MIME signal patch which adds support for
2967           sending also MIME messages in Irssi SILC Client, and handling
2968           received MIME messages in a signal (and perhaps doing something
2969           to non-textual MIME messages).
2970
2971 Sun Jun 30 01:30:22 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2972
2973         * Fixed pending command deletion in server and client library
2974           to check the whole list instead of breaking after first found.
2975           The affected files are silcd/command.[ch] and
2976           lib/silcclient/command.[ch].
2977
2978 Sat Jun 29 17:40:12 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
2979
2980         * Return NO_SUCH_CHANNEL error in USERS for channel that is
2981           secret or private, otherwise it's possible to find out
2982           whether a secret channel exists or not.  Affected file
2983           silcd/command.c.
2984
2985         * If CMODE change fails during the mode setting, assure that
2986           the old mode mask is set for the channel back.  Affected
2987           file silcd/command.c.
2988
2989         * Fixed passphrase saving on +a channel on normal server
2990           after successful JOIN command.  Affected file silcd/command.c.
2991
2992 Fri Jun 28 11:53:25 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
2993
2994         * Remove server/router operator privileges in DETACH command,
2995           since it's possible to resume to server where these
2996           privileges would not be allowed for the client.  Affected
2997           file silcd/command.c.
2998
2999         * Do not set to wait for backup in rehash of the server.
3000           Affected file silcd/server.c.
3001
3002         * Do not check listener sockets when counting how many
3003           socket connections we have.  Affected file is
3004           silcd/server_util.c.
3005
3006         * Do not announce disconnected clients that are remaining
3007           in history (for WHOWAS).  This is because SIGNOFF notify
3008           for these has been sent earlier already.  Affected file
3009           silcd/server.c.
3010
3011 Thu Jun 27 20:07:27 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3012
3013         * Buffer overflow with CUMODE command's mode->mode character
3014           conversion.  Reported by Ville Räsänen.  Affected file
3015           lib/silcutil/silcutil.c.
3016
3017 Thu Jun 27 16:54:33 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3018
3019         * Allow heartbeat packets to go disabled connections anyway.
3020           Affected files silcd/server.c and silcd/packet_send.c.
3021
3022         * Do not broadcast New Channel packets with List flag set
3023           in the packet to backup routers.  The router must check
3024           for the correctness of the packets before sending them.
3025           It is possible that router will have enforce Channel ID
3026           change and this would cause desync in the backup router.
3027           Affected file silcd/packet_receive.c.
3028
3029         * Remove SILC_PACKET_FLAG_LIST from the temp packets that
3030           are handled in list parsing.  They are not list packets
3031           anymore.  Affected file silcd/packet_receive.c.
3032
3033 Thu Jun 27 11:27:07 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
3034
3035         * Stop waiting for backup router through the timeout, not
3036           directly after backup router has arrived.  Affected file
3037           silcd/server.c.
3038
3039         * Do not re-create channel keys and send them when removing
3040           clients in server shutdown.  Affected files are
3041           silcd/server_internal.h and silcd/server_util.c.
3042
3043         * Notify distribution to backup routers was missing from
3044           the silc_server_send_notify_dest function which caused
3045           desyncing problems with backup router.  Affected file is
3046           silcd/packet_send.c.
3047
3048         * The client's channel removing was working wrong on
3049           backup router.  It assumed that it doesn't know global
3050           information but backup router does know.  For this reason
3051           it could remove channel when it wasn't supposed to do that.
3052           Affected file silcd/server.c and silcd/server_util.c.
3053
3054 Wed Jun 26 15:14:12 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3055
3056         * Stop for a couple seconds after badkup router has become
3057           primary router.  Affected file silcd/server.c.
3058
3059         * Added silc_server_remove_servers_by_server, which is used
3060           to remove servers originated from some other server.  Also
3061           clients of those servers can be removed too.  Affected file
3062           silcd/server_util.[ch].
3063
3064         * When removing clients after a server has signed of remove
3065           also all servers behind that server (unless they are known
3066           to be available locally), and send SERVER_SIGNOFF for each
3067           of the server separately.  Also the signed off clients are
3068           sent now separately per signed off server.  The affected files
3069           are silcd/server.c and silcd/server_util.[ch].
3070
3071         * All servers added with silc_idlist_add_server must always
3072           have both "router" and "connection" pointers set.  Otherwise,
3073           bad server entries may be left around in the cache.
3074           Affected file silcd/command_reply.c.
3075
3076         * Do not create the channel key in NEW_CHANNEL packet
3077           processing if the channel is empty.  Affected file
3078           silcd/packet_receive.c.
3079
3080         * Completed backup router support for standalone routers.
3081           Supports also servers in the cell that do not use the backup
3082           at all.
3083
3084 Wed Jun 26 10:38:11 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3085
3086         * Fixed a bug in silc_string_regexify which did not add '^'
3087           at the start of each string, and thus the matching was
3088           not explicit.  For example ban list iikone@*!*@* would
3089           match also "priikone", which is wrong, it would have to be
3090           *iikone@*!*@* to match also "priikone".  Affected
3091           file lib/silcutil/unix/silcunixutil.c.
3092
3093 Tue Jun 25 18:47:39 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3094
3095         * Enable all local server connections before updating client
3096           caches when we've become backup router.  Otherwise, signoff
3097           packets may not reach the clients.  Affected files are
3098           silcd/server.c and silcd/server_util.[ch].
3099
3100         * Fixed a bug in version string parsing which could crash
3101           the program with specially formatted version string.
3102           Bug reported and patch provided by Ville Räsänen.  Affected
3103           file lib/silcutil/silcutil.c.
3104
3105         * Handle the disconnection immediately when DISCONNECT
3106           packet is received in server.  Affected file silcd/server.c.
3107
3108         * Primary router now waits a short time (10 seconds) for
3109           backup router connection before accepting any other
3110           connection (except local).  Affected file silcd/server.c,
3111           serverconfig.[ch].
3112
3113         * Fixed a crash in client libary in NICK_CHANGE notify when
3114           NICK_CHANGE arrived for client entry we are resolving
3115           currently.  Affected file lib/silcclient/client_notify.c.
3116
3117         * Call the sconn->callback completion even if error had
3118           occurred.  Start reconnecting always if connection to
3119           primary router fails during backup router protocol.
3120           Affected files silcd/server.c and server_backup.c.
3121
3122 Mon Jun 24 17:47:52 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3123
3124         * Added functions silc_server_send_opers and
3125           silc_server_send_opers_notify to send packets stricly
3126           to operators.  Added macro SILC_SERVER_SEND_OPERS macro
3127           to send variable argument notify to operators.
3128           Affected files silcd/packet_send.[ch] and silcd/server.h.
3129
3130         * Removed UMODE rights checking with UMODE_CHANGE notify.
3131           Affected file silcd/packet_receive.c.
3132
3133         * Server/router operator now receives notify when network
3134           switches to backup router and when it resumes the use of
3135           primary router.  Affected file silcd/server.c and
3136           silcd/server_backup.c.
3137
3138         * Fixed the updating of client information after backup
3139           resuming protocol is over; update all except local clients
3140           to the new primary router.  The affected file is
3141           silcd/server_util.c.
3142
3143         * Added support for closing active connections in rehash
3144           that were unconfigured by the user.  Supports currently
3145           closing server and router connections.  Affected file
3146           silcd/server.c.
3147
3148         * Rewrote some SILC_LOG_DEBUG's in silcd/server_backup.c.
3149
3150 Sun Jun 23 17:32:31 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3151
3152         * Don't do SILC_STRING_LANGUAGE encoding if the outbuffer
3153           is NULL since seems that on some platforms NULL is allowed
3154           and on some it's not.  Fallback encoding is used instead.
3155           Affected file lib/silcutil/silcstrutil.c.
3156
3157         * Fixed statistics updating for incoming server connection
3158           which could cause problems when re-connecting.  Affected
3159           file silcd/server.c.
3160
3161         * Preliminary backup router support for standalone router
3162           added.  Affected files in silcd/.
3163
3164         * Mark server connections in backup router disabled before
3165           and after backup protocol.  Affected file is
3166           silcd/server_backup.c.
3167
3168         * Added support for reconnecting to remote server connection
3169           even if the protocol fails, and if the configuration wants
3170           us to keep trying to connect anyway.
3171
3172           Server connection is not allowed to backup router if
3173           backup router does not have connection to primary router yet.
3174
3175           Affected file is silcd/server.c.
3176
3177 Sat Jun 22 21:34:59 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3178
3179         * Added silc_client_udpate_server function to update changed
3180           server info.  Affected file lib/silcclient/idlist.[ch].
3181
3182         * Added check for server entries that are being resolved when
3183           notify is received.  If being resolved, handle the received
3184           notify only after it's resolved so that all notifys are
3185           handled in same order as received from the server.
3186
3187           Added similar resolver check to channel entries.  Every
3188           notify that cause resolving of any information that affects
3189           channel entry marks the channel entry in waiting state.
3190           After whatever resolving is over the waiters are signalled
3191           and only then the notifys are handled in the same order
3192           as delivered from the server.
3193
3194           Affected files are lib/silcclient/idlist.[ch], and
3195           client_notify.c.
3196
3197         * Fixed KILLED notify handling in normal server.  Affected
3198           file silcd/packet_receive.c.
3199
3200         * Added SILC_IDLIST_STATUS_LOCAL which indicates that entry
3201           is locally connected, or was locally connected (but may
3202           be detached and connection is not active).  Added also
3203           SILC_IS_LOCAL for checking this status.  Affected files
3204           silcd/idlist.h, silcd/packet_receive.c, silcd/server_util.c,
3205           silcd/server.c and silcd/server_internal.h.
3206
3207 Sat Jun 22 17:06:58 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3208
3209         * Don't send or handle TOPIC_SET if topic is already set and
3210           is same as being set.  Affected files silcd/command.c and
3211           silcd/packet_receive.c.
3212
3213         * Fixed CMODE change rights checking to work correctly when
3214           removing modes by operator.  Affected file is
3215           silcd/server_util.c.
3216
3217         * Fixed some handling with New Channel packet in router and
3218           fixed some CMODE_CHANGE notify handling in server and router.
3219           Affected file is silcd/packet_receive.c.
3220
3221         * Changed "disconnect" client operation to include the
3222           reason of the disconnection and optional disconnection
3223           message.  Affected file lib/silcclient/silcclient.h.
3224
3225         * Made the compilation of lib/contrib/ stuff conditional.
3226           Affected files configure.in.pre, lib/contrib/Makefile.am.
3227
3228 Sat Jun 22 12:49:21 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3229
3230         * All CMODE_CHANGE and CUMODE_CHANGE notifys are now sent back
3231           to the sender of the notify too, to avoid situation where two
3232           notifys are in the network at the same time going to oppsite
3233           directions.  Affected file silcd/packet_receice.c.
3234
3235 Fri Jun 21 10:00:32 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3236
3237         * Delete the client from channel even if the cilent->id is
3238           NULL.  It was possible that client was deleted without
3239           removing from channels (theoretically at least).  Affected
3240           file silcd/server.c and silcd/server_util.c.
3241
3242         * Free the client data too when resuming is not successful.
3243           Affected file silcd/packet_receive.c.
3244
3245         * Merged some code from c0ffee's silc-plugin.  Affected files
3246           irssi/src/silc/core/silc-channels.c and silc-expandos.c.
3247
3248         * Added SILC_PRIMARY_ROUTE and SILC_BROADXAST macros to
3249           silcd/server_internal.h.  SILC_PRIMARY_ROUTE Returns pointer
3250           to the primary router connection, the other one returns
3251           TRUE if packet must be broadcasted to network.
3252
3253         * All notifys that are destined to primary router (to network)
3254           are now automatically sent to backup routers even if the
3255           router is standalone (and has backup router).  Affected files
3256           in silcd/.
3257
3258         * Added --without-irssi and --without-silcd configuration
3259           options for disabling the compilation of these applications.
3260           Affected file configure.in.pre and prepare.
3261
3262 Thu Jun 20 13:48:15 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3263
3264         * Implemented SILC_STRING_BMP and SILC_STRING_UNIVERSAL for
3265           UTF-8 encoding and decoding.  Added also new encodings
3266           SILC_STRING_BMP_LSB and SILC_STRING_UNIVERSAL_LSB.
3267
3268           Added also SILC_STRING_LANGUAGE which is language and charset
3269           specific encoder and decoer for those platforms that support
3270           iconv().  It can convert the UTF-8 to and from the locale
3271           specific character set.
3272
3273           Affected file lib/silcutil/silcstrutil.[ch].
3274
3275         * Added macro SILC_NOT_IMPLEMENTED to lib/silcutil/silclog.h.
3276
3277         * Added function silc_get_command_name to the file
3278           lib/silcutil/silcutil.[ch].
3279
3280         * Improved the server debug output a bit.  Affected files are
3281           in silcd/.
3282
3283 Wed Jun 19 17:46:31 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3284
3285         * Save the channel passphrase when received succesful JOIN
3286           command reply from router, on normal server.  Otherwise
3287           joinig +a channels from normal server is not possible.
3288           Affected file silcd/command.c.
3289
3290         * Fixed a bug in TOPIC_SET notify handling.  The notifier
3291           may be other than client too, like server or channel.
3292           It expected it to always be only client and ignored the
3293           notify.  Affected file silcd/packet_recieve.c.
3294
3295         * Removed some (unnecessary) debug printing from
3296           lib/silccore/silcid.c and lib/silccore/silcargument.c.
3297
3298         * Do not force CMODE_CHANGE when server is announcing new
3299           channel.
3300
3301           Router announces stuff only after server reannounces channel
3302           after CHANNEL_CHANGE notify.
3303
3304           These fixes optimizes the announcing procedure, and perhaps
3305           fixes some problems too.  Affected file silcd/packet_receive.c.
3306
3307         * Fixed SERVER_SIGNOFF sending to local clients.  It was
3308           totally broken and sent the notify to all local clients,
3309           instead of only to those that was on same channel as the
3310           signing off clients.  Affected file silcd/server_util.c.
3311
3312         * Added -D option to server.  It can be used to give debug
3313           level.  The levels are from 0 - 99, and are predefined for
3314           smooth server debugging.  (see silcd.c for the predefined
3315           levels).  Affected file silcd/server.c.
3316
3317 Wed Jun 19 16:01:51 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3318
3319         * Fixed a bug in Irssi SILC client to close the connection
3320           properly when disconnecting from server.  Affected file
3321           irssi/src/silc/core/client_ops.c.
3322
3323 Tue Jun 18 17:14:52 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3324
3325         * When authenticating as founder during JOIN command, check
3326           that the one authenticating becomes the only founder on the
3327           channel.  Affected file silcd/command.c.
3328
3329         * Better checking for founder mode setting when CUMODE_CHANGE
3330           notify is received.  Affected file silcd/packet_receive.c.
3331
3332         * Close all connections when shutting down the server by sending
3333           DISCONNECT packet.  Close all listeners too when shutting
3334           down the server.  Affected file silcd/server.c.
3335
3336         * Handle DISCONNECT packet correctly in client library by
3337           calling the "disconnect" client operation.  Affected file
3338           lib/silcclient/client.c.
3339
3340         * Handle local errors correctly during resuming.  Affected
3341           file lib/silcclient/client.c.
3342
3343 Tue Jun 18 10:26:27 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3344
3345         * The log file is not dupped internally anymore in
3346           lib/silcutil/silclog.c.  Fixed memory leaks too.
3347
3348         * The scheduler now dispatches all pending timeout tasks
3349           when it is uninitialized with silc_schedule_uninit.
3350           Affected file lib/silcutil/silcschedule.c.
3351
3352 Mon Jun 17 21:30:55 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3353
3354         * Added --enable-stack-trace option to configure.  Added
3355           memory allocation stack trace support.  Added files
3356           lib/silcutil/stacktrace.[ch].  Affected files are
3357           lib/silcutil/silcmemory.[ch].
3358
3359         * Fixed memory leaks from libraries and server.  Affected
3360           files around the tree.
3361
3362         * Reverted back a fix made to CUMODE which broke it.
3363           Affected file silcd/command.c.
3364
3365 Sun Jun 16 11:49:45 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3366
3367         * Added SILC_MESSAGE_FLAG_UTF8 to the protocol specs and the
3368           core library, and implemented it.  All textual messages SHOULD
3369           use this flag and the message MUST be UTF-8 encoded.
3370           All text messages sent by Irssi SILC client are now UTF-8
3371           encoded (regardless whether the terminal supports UTF-8 or not).
3372           Affected files are lib/silccore/silcchannel.h,
3373           irssi/src/silc/core/silc-servers.c, silc-channels.c and
3374           client_ops.c.
3375
3376 Sat Jun 15 18:23:39 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3377
3378         * Added lots of new statistics updating that was missing from
3379           the server and router code.  Affected files in silcd/.
3380
3381         * Sending SIGUSR1 signal to server now dumps the current
3382           server statistics into /tmp directory.  Affected file is
3383           silcd/silcd.c.
3384
3385         * ROBODoc documented the lib/silccrypt/silchash.h.  Improved
3386           the SILC Hash Interface also.  Added new functions
3387           silc_hash_get_name, silc_hash_init, silc_hash_update and
3388           silc_hash_final.  Affected file lib/silccrypt/silchash.c.
3389
3390 Sat Jun 15 12:09:14 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3391
3392         * Added some better info printing for client during connecting.
3393           Affected file silcd/server_util.c.
3394
3395         * Implemented the SILC_CHANNEL_UMODE_QUIET mode that can be used
3396           to silence a user on a channel.  Affected files are
3397           lib/silcclient/client_channel.c, irssi/src/silc/core/client_ops.c,
3398           irssi/src/fe-common/silc/module-formats.[ch], silcd/command.c
3399           and silcd/packet_receive.c.
3400
3401         * Fixed a fatal bug in handling of malformed command payload.
3402           Affected file silcd/command.c.
3403
3404         * Fixed a double free when announcing channel users to router.
3405           Affected file silcd/server.c.
3406
3407         * After successful authentication to channel founder mode, check
3408           that there isn't anyone else with founder mode on the channel.
3409           The one that authenticated will become founder and anyone
3410           else is demoted.  Affected file silcd/command.c.
3411
3412         * Added error printing of any error that has occurred during
3413           any command in client library.  Affected file is
3414           irssi/src/silc/core/client_ops.c.
3415
3416         * Removed some error printing from the client library and left
3417           it for the application to worry (from the error status it
3418           receives in 'command' client operation.  Affected file is
3419           lib/silcclient/command.c.
3420
3421 Fri Jun 14 22:59:02 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3422
3423         * Added new status types KEY_AGREEMENT_ALREADY_STARTED and
3424           KEY_AGREEMENT_SELF_DENIED to lib/silcclient/silcclient.h.
3425           Starting key agreement with itself is denied.  Affected file
3426           is lib/silcclient/client_keyagr.c.
3427
3428         * Fixed some error checkings from the SFTP library which caused
3429           misbehaviour.  Affected files are lib/silcsftp/sftp_client.c
3430           and lib/silcsftp/sftp_util.c.
3431
3432         * Added new "debug" and "debug_string" settings to Irssi SILC
3433           client which can be used to print runtime debugging on the
3434           Irssi's screen.  Available when compiled with --enable-debug
3435           option.  Affected file irssi/src/silc/core/silc-core.c.
3436
3437 Tue Jun 11 16:36:02 CEST 2002 Johnny Mnemonic <johnny@themnemonic.org>
3438
3439         * Fixed a missing variadic parameter in a function call that
3440           caused server crash when a non-allowed connection arrived.
3441           Reported by Richard Becker.  Affected file silcd/server.c.
3442
3443 Mon Jun 10 16:29:42 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3444
3445         * Added WATCH list sending to backup routers from router.
3446           The WATCH command is sent by the router to the backup
3447           router.  Affected file silcd/command.c.
3448
3449         * Mark the backup_router flag for RouterConnection entry
3450           if the backup router stuff is defined in the config file.
3451           Affected file silcd/serverconfig.c.
3452
3453         * Fixed some backup data sending around the code to work better
3454           if the router is standalone router.  Not all places were fixed.
3455           Affected file silcd/packet_receive.c, silcd/packet_send.c,
3456           silcd/server.c.
3457
3458         * Fixed the router connecting when connecting to multiple
3459           routers.  It ignored every other router except the first
3460           one.  Affected file silcd/server.c.
3461
3462 Mon Jun 10 09:28:21 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
3463
3464         * Made the private key generation after expiration optional.
3465           If not created after expiration the old key will re-expire
3466           at a later time (and thus key pair is not necessary to
3467           change).  Affected file irssi/src/silc/core/clientutil.c.
3468
3469 Sun Jun  9 18:58:25 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3470
3471         * The length arguments in bind() and connect() were wrong
3472           and fixed now to used SIZEOF_SOCKADDR in the
3473           lib/silcutil/unix/silcunixutil.c.
3474
3475 Tue Jun  4 18:36:05 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3476
3477         * Fixed detach timeout handling to use Client ID and not
3478           the actual client entry which may be freed in the callback.
3479           Affected file silcd/command.c.
3480
3481 Thu May 30 15:53:45 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
3482
3483         * Merged c0ffee's multiple interface support patch.
3484           Affected files in silcd/.
3485
3486 Wed May 29 18:08:15 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3487
3488         * Cleanup keys properly.  Affected file is
3489           irssi/src/silc/core/clientutil.c.
3490
3491 Tue May 28 20:11:41 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3492
3493         * Display the user mode on the status bar.  Affected file
3494           irssi/src/silc/core/silc-expandos.c.
3495
3496 Tue May 28 13:56:26 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
3497
3498         * If private message key is not set, but the flag is set in
3499           the packet, ignore the packet since it cannot be decrypted.
3500           Affected file lib/silcclient/client_prvmsg.c.
3501
3502 Thu May 23 12:00:14 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
3503
3504         * When resuming client, remove the old client entry from
3505           the watcher list too.  Affected file silcd/packet_receive.c.
3506
3507         * Do not allow normal server to force founder mode away
3508           from router if the founder mode is already set.  Affected
3509           file silcd/packet_receive.c.
3510
3511         * Remove the client entry with watch notify types with short
3512           timeout, and not directly, so that other notifys can be
3513           retrieved too.  Affected file lib/silcclient/client_notify.c.
3514
3515         * Display notification about data messages that cannot be
3516           displayed.  Affected files irssi/src/silc/core/client_ops.c,
3517           irssi/src/fe-common/silc/module-formats.[ch].
3518
3519 Sun May 19 18:59:00 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3520
3521         * Fixed the CHANNEL_CHANGE notify handling in client libary
3522           to not use freed memory.  Affected file is
3523           lib/silcclient/client_notify.c.
3524
3525         * Fixed CUMODE_CHANGE notify handling in server.  Affected
3526           file silcd/packet_receive.c.
3527
3528         * Fixed USERS command to support empty channels.  Affected
3529           file silcd/command.c.
3530
3531 Sat May 18 11:35:19 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3532
3533         * Allow multiple identical pending commands to be registered
3534           in client library.  Affected file is lib/silcclient/command.c.
3535
3536         * Call the completion for resolving client information only
3537           after all resolvers has finished.  This fixes a crash in
3538           the client.  Added support for checking when the resolvers
3539           are finished.  Affected file is lib/silcclient/idlist.c.
3540
3541         * Wait by default 3 seconds before reconnecting to the server
3542           after being disconnected.  Makes the /detach command a bit
3543           more usable.
3544
3545 Fri May 17 17:23:45 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3546
3547         * Check the watcher list before sending signoff notifys
3548           when closing client connection.  Affected file is
3549           silcd/server.c.
3550
3551         * Added better CMODE command rights checking.  Affected file
3552           silcd/server_util.c.
3553
3554 Fri May 17 08:33:41 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
3555
3556         * Fixed watcher list checking during server signoff.  It
3557           crashed the server.  Affected file silcd/server_util.c.
3558
3559         * The JOIN command reply returns now the founder's public
3560           key.  Affected file is silcd/command.c.
3561
3562         * Announce the channel mode, and the mode properties with
3563           CMODE_CHANGE notify.  Affected file silcd/server.c.
3564
3565         * Mark new channels by default disabled, untill at least
3566           one user joins the channel.  Affected file is
3567           silcd/packet_receive.c.
3568
3569 Thu May 16 13:05:13 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
3570
3571         * The nickname argument to watch notify can be optional.
3572           Fixes a crash in server.  Affected file silcd/packet_send.c.
3573
3574         * Remove the client entry from cache if the WATCH notify type
3575           is KILLED, SERVER_SIGNOFF or SIGNOFF.  Affected file is
3576           lib/silcclient/client_notify.c.
3577
3578         * Check the watcher list before and after changing nickname
3579           when the NICK_CHANGE notify is received.  Affected file is
3580           silcd/idlist.c.
3581
3582         * Fixed a crash in OPER and SILCOPER command sending.  Empty
3583           passphrase caused the crash.  Affected file is
3584           lib/silcclient/command.c.
3585
3586 Wed May 15 19:01:42 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3587
3588         * Merged with Irssi CVS for Irssi SILC client.
3589
3590 Tue May 14 19:37:48 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3591
3592         * Completed the protocol specifications.
3593
3594 Tue May  7 20:41:58 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3595
3596         * Merged with Irssi CVS for Irssi SILC client.
3597
3598 Tue May  7 11:07:16 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3599
3600         * Added the founder's public key delivery to the
3601           CUMODE_CHANGE notify type as well.  Updated the protocol
3602           specs and the code.  Affected files are silcd/packet_send.[ch],
3603           silcd/packet_receive.c and silcd/command.c.
3604
3605 Mon May  6 19:46:12 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3606
3607         * Added silc_pkcs_public_key_copy function into the
3608           lib/silccrypt/silcpkcs.[ch].
3609
3610         * Remove the `iv' from the SilcChannelEntry since we can
3611           live without it.  Affected files are silcd/idlist.h and
3612           silcd/packet_receive.c.
3613
3614         * Added support for sending the founder's public key in
3615           the CMODE_CHANGE notify packet in the server.  Affected
3616           files are silcd/packet_send.[ch], silcd/packet_receive.c,
3617           silcd/command.c and silcd/server.c.
3618
3619         * Changed the FOUNDER_AUTH authentication to use only
3620           public key authentication as defined by new protocol
3621           specs.  Passphrase authentication with that mode cannot
3622           be used anymore.  It is now possible to reclaim founder
3623           mode from any server in the network.  Affected files are
3624           silcd/command.c, silcd/idlist.h and silcd/command_reply.c.
3625
3626         * Added permanent channels support by making the channel
3627           permanent when FOUNDER_AUTH mode is set on the channel.
3628           The channel will not be destroyed even if channel is empty
3629           when that mode is set.  Protocol TODO #17.  Affected
3630           files are silcd/server.[ch], server_util.[ch],
3631           silcd/command.c, silcd/packet_receive.c and
3632           lib/silcclient/command.c.
3633
3634 Fri May  3 18:36:51 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3635
3636         * Added reference counter to the command reply context in
3637           the client library.  Affected files are
3638           lib/silcclient/command_reply.[ch].
3639
3640 Fri May  3 11:37:10 EEST 2002 Pekka Riikonen <priikone@silcnet.org>
3641
3642         * Fixed rekey protocol with PFS in the client library.
3643           Affected file is lib/silcclient/protocol.c.
3644
3645         * Added support for list of errors in client library
3646           command reply handling.  Affected file is
3647           lib/silcclient/command_reply.c.
3648
3649         * Defined that the WHOIS and IDENTIFY commands can send
3650           list of errors.  Updated the protocol specs.  Protocol
3651           TODO #2.
3652
3653         * Added support for sending list of errors to WHOIS and
3654           IDENTIFY commands in server.  Added support for receiving
3655           list of errors in server.  Affected files are
3656           silcd/command.c and silcd/command_reply.c.
3657
3658         * Fixed client info resolving on LEAVE command in client
3659           library to not crash.  Affected file is
3660           lib/silcclient/client_notify.c.
3661
3662 Thu May  2 08:45:11 CEST 2002 Pekka Riikonen <priikone@silcnet.org>
3663
3664         * Defined that the NICK command replies with thew changed
3665           nickname too, to make the nickname changing simpler at
3666           the client's end.  Updated protocol specs and the code
3667           in client and server.  Affected files are
3668           silcd/command.c, lib/silcclient/command_reply.c and
3669           lib/silcclient/command.c.
3670
3671 Mon Apr 29 20:10:42 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3672
3673         * Added `Compressed' packet flag to indicate that the packet
3674           payload is compressed by the sender.  Updated the protocol
3675           specs and the core library.  The compression still is not
3676           implemented in the sources.  Affected file is
3677           lib/silccore/silcpacket.h.
3678
3679 Mon Apr 29 09:48:12 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
3680
3681         * Remove pending command callbacks also if the connection
3682           to the server is destroyed.  Affected file is
3683           lib/silcclient/client.c.
3684
3685 Sat Apr 27 19:52:32 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3686
3687         * Added new QUIET channel user mode that can be used to
3688           quiet a user in a channel.  Updated the protocol specs but
3689           it wasn't implemented yet.  Protocol TODO #27.  Affected
3690           file is lib/silccore/silcmode.h.
3691
3692 Mon Apr 22 09:09:44 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
3693
3694         * Added BLOCK_INVITE user mode to be able to block incoming
3695           invite notifications.  Protoocol TODO #26.  Affected files
3696           are lib/silccore/silcmode.h, lib/silcclient/command.c and
3697           silcd/command.c.
3698
3699         * SILC Publickey fields MUST be UTF-8 encoded now.  Updated
3700           the protocol specs and the code.  Affected file is
3701           lib/silccrypt/silcpkcs.c.
3702
3703 Sun Apr 21 19:44:38 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3704
3705         * Disconnect Payload includes now the status type.  Updated
3706           the protocol specs and the code.  Protocol TODO #25.
3707           Affected files are silcd/server.c, lib/silcclient/client.c.
3708
3709         * Added NOT_AUTHENTICATED, BAD_SERVER_ID, INCOMPLETE_INFORMATION,
3710           KEY_EXCHANGE_FAILED and BAD_VERSION error status types.
3711           Moved the silc_client_command_status_messages table to the
3712           lib/silcutil/silcutil.c and added new funtion
3713           silc_get_status_message, which deprecates function
3714           silc_client_status_message.  Affected files are
3715           lib/silccore/silcstatus.h, lib/silcclient/command_reply.[ch],
3716           lib/silcutil/silcutil.[ch].
3717
3718 Fri Apr 19 17:35:15 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3719
3720         * Defined that the nickname hash in Client ID MUST be from
3721           lowercase nickname.  This effectively changes nicknames in
3722           SILC to case-insensitive.  Updated the protocol specs and
3723           the code.  Affected files are lib/silcutil/silcutil.[ch],
3724           silcd/serverid.c, and silcd/idlist.c.
3725
3726         * Added new channel user modes BLOCK_MESSAGES_USERS and
3727           BLOCK_MESSAGES_ROBOTS.  Updated the protocol specs and the
3728           code.  Affected files are lib/silccore/silcmode.h,
3729           lib/silcclient/command.c, and silcd/packet_send.c.
3730
3731         * Added new error status ERR_RESOURCE_LIMIT.  Updated protocol
3732           specs and code.  Affected file lib/silccore/silcstatus.h.
3733
3734         * Added support for watch list.  It is possible to add nicknames
3735           to be watched, and when they come to network, leave network
3736           or user mode changes the watcher will be notified of this
3737           change.  Added SILC_COMMAND_WATCH command, added new
3738           notify type SILC_NOTIFY_TYPE_WATCH to deliver the watch
3739           notifications.  Updated the protocol specs and implemented
3740           this to library, client and server.  Protocol TODO #21.
3741           Affected files are lib/silccore/silccomand.h,
3742           lib/silccore/silcnotify.h, lib/silcclient/command[_reply].[ch],
3743           silcd/command[_reply].[ch], lib/silcclient/client_notify.c,
3744           silcd/packet_send.[ch], silcd/packet_receive.c, and
3745           irssi/src/silc/core/client_ops.c.
3746
3747         * Added user mode SILC_UMODE_REJECT_WATCHING to reject
3748           somebody watching you.  Updated the protocol specs and the
3749           code.  Affected files are lib/silccore/silcmode.h, and
3750           lib/silcclient/command.c.
3751
3752 Fri Apr 19 09:02:20 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
3753
3754         * Added service support to SILC protocol.  Added new command
3755           SILC_COMMAND_SERVICE.  Updated the protocol specs and the
3756           core library.  Services are not implemented in server or
3757           client for now.  Protocol TODO #20.  Affected files are
3758           lib/silccore/silcstatus.h, lib/silccore/silccommand.h.
3759
3760         * Added SilcStatus argument to `command' client operation
3761           to return the error status when command sending fails
3762           locally.  Changed all command in client library to return
3763           correct command status.  Affected files are
3764           lib/silcclient/command.c, lib/silcclient/silcclient.h and
3765           irssi/src/silc/core/client_ops.c.
3766
3767 Thu Apr 18 14:09:51 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
3768
3769         * Added silc_mime_parse function to parse MIME headers.
3770           Affected files are lib/silcutil/silcstruti.[ch].
3771
3772         * Added MIME header parsing in Irssi SILC Client.  It displays
3773           all textual MIME objects, others it ignores.  Affected file
3774           is irssi/src/silc/core/clien_ops.c.
3775
3776 Wed Apr 17 22:07:59 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
3777
3778         * Fixed a bug in the pid writing function, which couldn't be
3779           written in a root-owned directory.
3780
3781 Tue Apr 16 09:34:40 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3782
3783         * Defined that channel message to unknown Channel ID must
3784           cause SILC_NOTIFY_TYPE_ERROR notify message to the sender.
3785           Updated the protocol specs and the code in server.  The
3786           affected file is silcd/packet_receive.c.
3787
3788 Mon Apr 15 19:57:57 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3789
3790         * Added new notify type SILC_NOTIFY_TYPE_ERROR and specified
3791           that it is used to send error notifys if error occurs during
3792           some SILC packet processing, except commands.  The error
3793           types are same as for command reply types.  Defined that
3794           if private message is sent to unknown Client ID the error
3795           is sent in SILC_NOTIFY_TYPE_ERROR instead of command reply.
3796           Updated the protocol specs and code.  Affected files are
3797           lib/silccore/silcnotify.h, added lib/silccore/silcstatus.h,
3798           lib/silcclient/client_notify.c, silcd/packet_receive.c,
3799           and irssi/src/silc/core/client_ops.c.  Renamed the
3800           SilcCommandStatus to SilcStatus.
3801
3802         * Defined the use of extra WHOIS attributes in WHOIS command.
3803           The <Requested Attributes> (defined in a separate document)
3804           can be used to request additional information about user
3805           not returned by standard WHOIS command.  Defined that server
3806           can send WHOIS command directly to client.  Client provides
3807           the requested attributes to the server.  Updated the protocol
3808           specs.  Protocol TODO #4.  Implementation is not done yet
3809           (Protocol TODO #24).
3810
3811         * Renamed function silc_client_command_status_message to
3812           silc_client_status_message.  Affected files are
3813           lib/silcclient/command_reply.[ch].
3814
3815 Sun Apr 14 21:13:42 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3816
3817         * Changed the WHOIS, IDENTIFY and WHOWAS count arguments to
3818           32 bit integers.  Updated the protcol specs and the code.
3819           Affected files are silcd/command.c and
3820           lib/silcclient/command.c.
3821
3822 Sun Apr 14 19:49:02 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
3823
3824         * Fixed a bug in library where sending a bogus authentication
3825           payload would lead to a crash.  Affected file is
3826           lib/silccore/silcauth.c.
3827
3828 Sat Apr 13 13:09:24 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3829
3830         * Added detach_disabled and detach_timeout server config
3831           options to the server.  Affected files silcd/serverconfig.[ch],
3832           silcd/command.c and silcd/packet_receive.c.
3833
3834 Fri Apr 12 20:09:08 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3835
3836         * Added resolve_cmd_ident field to the SilcClientEntry structure
3837           too so that if the entry is for example being resolved so
3838           another command may attach to the same pending command reply
3839           without requiring to resolve the same entry again.  Added
3840           support for adding multiple pending commands for one
3841           command idenfier.  Affected files lib/silcclient/command.[ch],
3842           lib/silcclient/command_reply.[ch], lib/silcclient/idlist.h.
3843
3844 Fri Apr 12 10:17:51 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3845
3846         * Defined that server receives WHOIS command reply for private
3847           and secret channels too.  Updated protocol specs and the
3848           code in server.  Affected file silcd/command.c.
3849
3850         * Defined <channel user mode list> argument to WHOIS command
3851           reply for returning user modes on the channels.  The
3852           channel list now doesn't include the user mode anymore but the
3853           actual channel mode.  Updated protocol specs and the code in
3854           client and server.  Affected files are silcd/command_reply.c,
3855           silcd/command.c, silcd/server.c, irssi/src/silc/core/client_ops.c,
3856           and lib/silcclient/command_reply.c.
3857
3858         * Save the channels list in WHOIS command reply in normal server
3859           so that WHOIS always shows joined channels also in normal
3860           server and not just on router.  Affected file is
3861           silcd/command_reply.c.
3862
3863 Thu Apr 11 22:29:33 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3864
3865         * Defined that server receives USERS command reply for private
3866           and secret channels too.  Updated protocol specs and the
3867           code in server.  Affected file silcd/command.c.
3868
3869 Thu Apr 11 16:32:08 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3870
3871         * Changed the UMODE's mode mask argument to be optional.  If
3872           not provided then the command merely returns the current mode
3873           mask to the client.  Updated protocol specs and the server.
3874           Affected file is silcd/command.c.
3875
3876         * Added SILC session detachment/resuming support.  It is possible
3877           to detach by closing the network connection and then re-connect
3878           and resume to the old client session.  Added DETACHED user
3879           mode that server will set for detached client.  Added new
3880           packet RESUME_CLIENT which is used to perform the resuming
3881           process.  Added DETACH command.  Updated the protocol specs,
3882           core library, client and server.  Protocol TODO #22.  Very
3883           many affected files around the tree.
3884
3885 Wed Apr 10 16:32:01 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3886
3887         * Changed the CMODE's mode mask argument to be optional.  If
3888           not provided then the command merely returns the current mode
3889           mask to the client.  Updated protocol specs and the server.
3890           Affected file is silcd/command.c.
3891
3892         * Changed the Killer's Client ID in KILLED notify to be just
3893           any ID payload since router server is allowed to kill as well.
3894           Updated protocol specs, client libary and server.  Affected
3895           files are lib/silcclient/client_notify.c, silcd/packet_receive.c,
3896           and irssi/src/silc/core/client_ops.c.
3897
3898 Tue Apr  9 17:15:42 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3899
3900         * Added new user modes ANONYMOUS for special anonymous servers
3901           that may set the mode for client, and BLOCK_PRIVMSG which
3902           client may set to block incoming private messages unless the
3903           Private Message Key flag is set (using private keys to protect
3904           private messages).  Updated protocol specs and code in client
3905           and server and core library.  Protocol TODO #23.  Affected
3906           files are lib/silccore/silcmode.h, silcd/server.[ch],
3907           irssi/src/silc/core/client_ops.c, silcd/packet_receive.c,
3908           irssi/docs/help/in/umode.in, lib/silcclient/command.c.
3909
3910         * Added new channel user mode BLOCK_MESSAGES which the client
3911           may set to itself to tell server not send channel messages.
3912           Other packets such as channel key packets are still sent.
3913           Protocol TODO #23.  Updated the protocol specs, client and
3914           server.  Affected files are lib/silccore/silcmode.h,
3915           irssi/docs/help/in/cumode.in, lib/silcclient/command.c,
3916           lib/silcutil/silcutil.c, silcd/command.c, and
3917           silcd/packet_send.c.
3918
3919 Mon Apr  8 23:57:32 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3920
3921         * Redefined the Status Payload to include now two 8 bit fields,
3922           instead of one 16 bit field.  This now makes it possible to
3923           send list of errors.  Updated the protocol specs and the code
3924           in core library, client library and server.  Protocol TODO #1.
3925           Affected files are lib/silccore/silccommand.[ch],
3926           lib/silcclient/command_reply.[ch], silcd/command.c,
3927           silcd/command_reply.c and silcd/packet_receive.[ch].
3928
3929 Mon Apr  8 19:57:40 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
3930
3931         * Added config parse status SILC_CONFIG_EPRINTLINE, this status
3932           must be handled by the application and should tell the application
3933           that an error message was already printed, and it should print the
3934           config coords (line, filename, ...).  Affected files are
3935           silcd/serverconfig.c, lib/silcutil/silcconfig.[ch].
3936
3937         * Added local macro SILC_SERVER_CONFIG_ALLOCTMP to make the
3938           server config parsing code more readable.
3939
3940           Fixed a bug in the fetch_logging() config callback.
3941
3942           Affected files is silcd/serverconfig.c.
3943
3944         * Drop root privileges when started in foreground.  Don't drop them
3945           if debugging also.  Affected file is silcd/silcd.c.
3946
3947 Mon Apr  8 17:00:41 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3948
3949         * Added more IM-like features by introducing new user modes
3950           for setting various presence information.  Added new modes:
3951           INDISPOSED, BUSY, PAGE, HYPER and ROBOT.  Updated protocol
3952           specs and code.  Protocol TODO #19. Affected files are
3953           lib/silccore/silcmode.h, irssi/src/silc/core/client_ops.c,
3954           irssi/docs/help/in/umode.in and lib/silcclient/command.c.
3955
3956 Sun Apr  7 17:07:59 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3957
3958         * Added STATS command to the protocol after all, to return
3959           various statistical information about the network.  It can
3960           be used by clients to retrieve statistical information, and
3961           servers may use it to to fetch cell and network wide
3962           statistics from router.  Updated the protocol specs and
3963           implemented it to the server.  Protocol TODO #16.
3964           Affected files are lib/silccore/silccommand, silcd/command.[ch],
3965           silcd/command_reply.[ch].
3966
3967 Sat Apr  6 17:08:58 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3968
3969         * The LIST command reply in client libary now adds new channel
3970           entry if the returned channel doesn't exist yet in cache,
3971           and returns the channel entry to the application in the
3972           command_reply client operation.  Affected file is
3973           lib/silcclient/command_reply.c.
3974
3975         * Changed the channel message payload's MAC generation to
3976           include the IV in the MAC as well.  This way all relevant
3977           parts of the channel message payload are authenticated also
3978           with the channel message MAC (and not only by packet MAC).
3979           Causes incompatibility with 1.0 protocol.  Protocol TODO #7.
3980           Affected file is lib/silccore/silcchannel.c.
3981
3982         * Fixed the SKE to save the remote version, since the
3983           silc_ske_parse_version mistakenly checked wrong version,
3984           after it replaced the start payload.  Affected files are
3985           lib/silcske/silcske.[ch].
3986
3987 Fri Apr  5 16:03:03 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
3988
3989         * Splitted lib/silcutil/silcutil.h into silcstrutil.h for
3990           string utility functions.  Added there also new functions
3991           silc_utf8_[encode/decode/valid] for UTF-8 string encoding.
3992           Affected files lib/silcutil/silcstrutil.[ch].
3993
3994         * Renamed silc_*_pem functions to silc_pem_* functions.  Affected
3995           files are lib/silcutil/silcstrutil.[ch].
3996
3997         * Defined that the security property fields in SKE SHOULD be
3998           UTF-8 encoded, defined that version string MUST be US-ASCII
3999           encoded, defined that passphrases sent in connection
4000           authentication protocol MUST be UTF-8 encoded.  Implemented
4001           these to the client and server.  Defined also that other
4002           passphrases sent in the protocol MUST be UTF-8 encoded.
4003           Affected files are lib/silcske/silcske.c,
4004           lib/silcclient/protocol.c, silcd/protocol.c,
4005           silcd/serverconfig.c, and lib/silccore/silcauth.c.
4006
4007         * Changed the silc_client_close_connection interface to not
4008           need the SilcSocketConnection which should not be visible
4009           to application.  Affected files are lib/silcclient/client.c
4010           and lib/silcclient/silcclient.h.
4011
4012         * Rewrote the text for Private Message Key Payload in the
4013           protocol specification.  Protocol TODO #11.
4014
4015 Wed Apr  3 16:24:51 EEST 2002  Pekka Riikonen <priikone@silcnet.org>
4016
4017         * Upgraded the protocol version to 1.1, updated protocol specs
4018           and software.
4019
4020         * Added the nickname as new argument to NICK_CHANGE notify and
4021           added it to protocol specs and implemented it to client and
4022           server.  Protocol TODO #3.  Affected files are silcd/idlist.[ch],
4023           silcd/command.c, silcd/packet_receive.c, packet_send.[ch], and
4024           lib/silcclient/client_notify.c.
4025
4026         * Added the killer's client ID to the KILLED notify and added
4027           it to protocol specs and implemented it to client and server.
4028           Protocol TODO #13.  Affected files are silcd/command.c,
4029           silcd/packet_receive.c, packet_send.[ch],
4030           lib/silcclient/client_notify.c, irssi/src/silc/core/client_ops.c.
4031           The killer's client entry is now returned to application in
4032           the `notify' client operation.
4033
4034         * Fixed the Max Argument fields that had too large value set
4035           in the protocol specs.  Protocol TODO #14.
4036
4037         * Added the LEAVE command reply to return the ID of parted
4038           channel.  Updated protocol specs and implemented it to the
4039           client and server.  Protocol TODO #15.  Affected files are
4040           silcd/command.c, lib/silcclient/command_reply.c.  The channel
4041           entry is now returned to application in the `command_reply'
4042           client operation.
4043
4044         * Rewrote the version SKE version checking in client libary
4045           and in server to use the silc_parse_version_string.  Affected
4046           files are lib/silcclient/protocol.c, silcd/protocol.c.
4047
4048         * Added SILC_STATUS_ERR_NO_CHANNEL_FOPRIV error status to few
4049           commands that was missing it, and updated protocol specs and
4050           the server implementation.  Protocol TODO #10.  The affected
4051           file is silcd/command.c.
4052
4053         * Defined new message flags SILC_MESSAGE_FLAG_REPLY to be
4054           generic reply to a generic request (REQUEST flag), and
4055           SILC_MESSAGE_FLAG_DATA to send any kind of data in a generic
4056           way.  A draft-riikonen-silc-flags-payloads-00.txt is written
4057           to define the payload for DATA flag.  Added the flags to
4058           the implementation.  Protocol TODO #9.  Affected file is
4059           lib/silccore/silcchannel.h.
4060
4061           Changed the client library to return the message length
4062           to application as well in the channel_message and private_message
4063           client operations.  Affected files are
4064           lib/silcclient/client_prvmsg, lib/silcclient/client_channel.c,
4065           lib/silcclient/silcclient.h, irssi/src/silc/core/client_ops.c,
4066           and lib/silcclient/client_ops_example.c.
4067
4068         * Added two new channel modes: SILC_CMODE_SILENCE_USERS
4069           and SILC_CMODE_SILENCE_OPERS which can be used to moderate
4070           the channel.  Updated protocol specs and impelemented this
4071           to client and server.  Protocol TODO #6.  Affected files are
4072           silcd/packet_receive.c, server_util.c, lib/silcclient/command.c,
4073           lib/silcclient/client_channel.c, lib/silccore/silcmode.h.
4074
4075           Added new options m and M to CMODE command in Irssi SILC
4076           client to set these modes.
4077
4078         * Deprecated all administrative commands from SILC protocol
4079           since they are highly implementation specific commands.
4080           Updated protocol specs.  Moved the old commands in
4081           implementations to private range of command types.  Affected
4082           files are silcd/command.c, lib/silcclient/command.c and
4083           lib/silcclient/command_reply.c.  Protocol TODO #8.
4084
4085         * Fixed a bug in server where sending unknown command crashes
4086           the server.  Affected file silcd/command.c.
4087
4088 Wed Apr  3 09:57:47 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
4089
4090         * Added SILC_PROTOCOLVERSION macro to check protocol version
4091           of a socket connection.  The affected file is
4092           lib/silcutil/silcsockconn.h.
4093
4094         * Added better error logging in rekey protocol.  Affected file
4095           silcd/protocol.c.
4096
4097         * Do not check public key types in SKE during rekey.  Affected
4098           file lib/silcske/payload.c.
4099
4100         * Fixed the rekey protocol with PFS, which was totally broken.
4101           Affected file silcd/protocol.c.
4102
4103 Tue Apr  2 14:55:06 CEST 2002  Pekka Riikonen <priikone@silcnet.org>
4104
4105         * Some client implementations quit network by doing first LEAVE
4106           and then immediately SIGNOFF (like Bombyx).  We now do check
4107           after a short time after LEAVE notify and check whether the
4108           client is still valid after LEAVE, and if not we remove it from
4109           cache.  Affected file is lib/silcclient/client_notify.c.
4110
4111 Tue Apr  2 13:39:04 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
4112
4113         * Merged version 1.1.4 of zlib. Even if it not currently in use,
4114           it's good not to have security holes here.
4115
4116         * Fixed a negative refcount situtuation for the config context.
4117           Affected file is silcd/serverconfig.c.
4118
4119 Mon Apr  1 20:15:10 CEST 2002  Johnny Mnemonic <johnny@themnemonic.org>
4120
4121         * ROBOdoc documented lib/silcutil/silcutil.h.
4122
4123 Sat Mar 30 21:06:45 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4124
4125         * Optimized even more the SilcPacketContext structure.  Now
4126           totally saved 16 bytes of memory per context after optimization.
4127           Affected files are lib/silccore/silcpacket.[ch].
4128
4129         * Made strict checks for valid SILC IDs.  Affected file is
4130           lib/silccore/silcid.c.
4131
4132 Sat Mar 30 18:15:55 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4133
4134         * Changed the object argument for silc_cipher_register,
4135           silc_hash_register, silc_hmac_register and silc_pkcs_register
4136           to const.  Affected files are lib/silccrypt/silccipher.[ch],
4137           silchash.[ch], silchmac.[ch] and silcpkcs.[ch].
4138
4139         * Changed the silc_get_username and silc_get_real_name to
4140           never fail.  Affected file lib/silcutil/unix/silcunixutil.c.
4141
4142         * Fixed the Irssi SILC Client to use the silc_get_username and
4143           silc_get_real_name insted of glib routines since the glib
4144           routines only corrupt stack.  Fixes the Irssi SILC to work in
4145           Cygwin.  Affected file irssi/src/silc/core/silc-core.c.
4146
4147         * Fixed the Irssi to not use g_get_home_dir since it crashes
4148           or returns garbage on cygwin and corrupts stack.  Added function
4149           get_home_dir to Irssi routines.  Affected files are
4150           irssi/src/core/misc.[ch] and irssi/src/core/core.c.
4151
4152 Fri Mar 29 21:55:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4153
4154         * Made some structure optimizations.  SFTP memory FS MemFSEntry
4155           entry structure.  Optimized SilcTask structure.  Optimized
4156           SilcPacketContext structure.
4157
4158           Affected files lib/silcsftp/sftp_fs_memory.c,
4159           lib/silcutil/silcschedule.c, lib/silccore/silcpacket.h.
4160
4161 Fri Mar 29 10:41:07 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4162
4163         * And yet again reverted back the config thing since Johnny
4164           screwed it up.  Affected file silcd/serverconfig.[ch], server.c,
4165           and silcd.c.
4166
4167         * Fixed memory leaks from config object.  Affected files are
4168           silcd/serverconfig.[ch].
4169
4170         * Added support for adding new connections to the server in rehash.
4171           After rehash they take effect.
4172
4173           Added support for changing the maximum allowed connections in
4174           rehash.  The number can grow but going smaller is not supported.
4175
4176           Added function silc_server_num_sockets_by_remote to the
4177           silcd/server_util.[ch].
4178
4179           Affected files are silcd/server.c, and silcd/serverconfig.[ch].
4180
4181 Fri Mar 29 03:26:12 CET 2002 Johnny Mnemonic <johnny@themnemonic.org>
4182
4183         * Added preliminary checking during config parsing for a valid
4184           public/private key and removed further checks in the code.
4185           Affected files are silcd/serverconfig.[ch], server.c.
4186
4187         * Moved functions silc_server_drop() and silc_server_daemonise()
4188           from server.c to silcd.c since they are stricly related to
4189           the application activity.
4190
4191         * Reverted a small part of the automatic ref/unref since
4192           it caused a double unref in some situations.  Affected
4193           files are silcd/silcd.[ch], server.c, serverconfig.c.
4194
4195         * Added some .cvsignore files in the lib directory.
4196
4197 Thu Mar 28 22:51:15 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4198
4199         * Fixed silc_net_gethostbyaddr to correctly resolve by
4200           address.  Affected file lib/silcutil/silcnet.c.
4201
4202         * Fixed the notify relaying to client.  The HMAC to be used
4203           with relayed packets ws wrong and caused decryption failure
4204           at the client end.  Affected file is silcd/packet_receive.c.
4205
4206 Thu Mar 28 19:02:05 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4207
4208         * Created new branch silc_protocol_1_0_branch.
4209
4210         * Reverted the silc_log_quick change in lib/silcutil/silclog.c.
4211
4212         * Changed the silc_server_config_* routines to be SilcServer
4213           independent.  They are now officially application specific code
4214           and not part of generic server implementation.  Affected files
4215           are silcd/serverconfig.[ch], silcd/silcd.c, silcd/server.c.
4216
4217 Thu Mar 28 17:01:43 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4218
4219         * Added automatic referencing of config context in the
4220           silc_server_config_alloc, and automatic unreferencing in the
4221           silc_server_config_destroy.  Affected files are
4222           silcd/serverconfig.[ch], silcd/silcd.c.
4223
4224         * Fixed the silc_log_quick handling in the logging routines.
4225           It didn't log quickly when it was TRUE.  Affected file is
4226           lib/silcutil/silclog.c.  Also the flush delay was set even
4227           if it was 0 in config file.  Affected file is
4228           silcd/serverconfig.c.
4229
4230         * Added support for changing key pair of the server in rehash.
4231           Affected file silcd/server.c.
4232
4233 Thu Mar 28 12:17:21 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4234
4235         * Fixed the TOPIC_SET notify to not cras.  It changed the topic
4236           too early, before getting the channel entry.  Affected file
4237           is silcd/packet_receive.c.
4238
4239 Thu Mar 28 09:58:16 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
4240
4241         * Added functions silc_server_config_[ref/unref], these are used
4242           to prevent that the config object is destroyed.
4243
4244           No longer directly affect global variables silc_log_quick and
4245           silc_log_delay, they are first cached inside the config object
4246           and then applied with silc_server_config_setlogfiles().
4247
4248           silc_server_config_set_defaults() is now internal to
4249           serverconfig.c, there are no reasons to show this internal stuff
4250           to the server.
4251
4252           Affected files are silcd/serverconfig.[ch].
4253
4254         * Added macro SILC_SERVER_LOG_STDERR(), this should replace most
4255           fprintf's to stderr, since some code may be executed again after
4256           the server went into the background.  Affected files are
4257           silcd/server.[ch].
4258
4259         * Added rehash support. Added function silc_server_rehash() that
4260           will perform all the basic tasks of the rehashing procedure.
4261
4262         * Added command line option `-x, --hexdump'. This will enable the
4263           SILC_LOG_HEXDUMP calls that are no longer enabled with `--debug'.
4264           The option `--hexdump' implies `--debug'.
4265
4266         * Fixed a bad bug in the logging APIs (silcutil library) where
4267           the application would crash after calling silc_log_reset_all().
4268
4269 Wed Mar 27 19:43:16 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4270
4271         * Fixed the KICKED notify handling in client library to
4272           correctly remove the channel and all entries from the
4273           channel when I was kicked.  This bug crashed the client.
4274
4275           Fixed yet another but in KICKED notify handling to remove
4276           the kicked client correctly from the channel.
4277
4278           Affected file is lib/silcclient/client_notify.c.
4279
4280         * Fixed a minor bug in looking up correct client entry
4281           in KICKED notify in server.  Affected file is
4282           silcd/packet_receive.c.
4283
4284         * Fixed the lib/silcmath/Makefile.am to include the MPI and GMP
4285           sources correctly to distribution.  Fixes --with-gmp option.
4286
4287         * Removed the manual rehashing from ID Cache, and changed it
4288           to use the SILC Hash Table's auto rehash feature.  Affected
4289           file is lib/silccore/silcidcache.c.
4290
4291 Wed Mar 27 00:07:11 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4292
4293         * Fixed a bug in the silc_client_nickname_format function that
4294           handles the multiple same nickname formatting.  Two clients
4295           with same nickname caused problems after the first one left
4296           and rejoined.  It didn't format the nickname correctly.
4297           Affected file is lib/silcclient/idlist.c.
4298
4299 Tue Mar 26 19:33:03 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4300
4301         * Don't change the topic if olod topic is same as new one.
4302           Affected file is silcd/packet_receive.c.
4303
4304 Mon Mar 25 21:11:35 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4305
4306         * Added cross-reference support to the SILC Documentation
4307           generator.  All types across all HTML files are now cross-
4308           referenced.  Affected files util/robodoc/generator.c and
4309           scripts/silcdoc/silcdoc.
4310
4311         * Added file lib/silcutil/silctypes.h to include all the
4312           arithmetic type definitions and some macros.  Removed
4313           includes/bitmove.h and moved macros to silctypes.h.
4314
4315 Mon Mar 25 17:19:46 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4316
4317         * Merged bugfixes for Irssi SILC client from irssi.org CVS.
4318
4319 Sun Mar 24 11:21:04 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4320
4321         * Added `type' argument to silc_id_payload_parse_id function which
4322           now returns the type of the ID to the sent pointer.  Affected
4323           file is lib/silccore/silcid.[ch].
4324
4325         * Added check for CMODE_CHANGE notify type that mode change is
4326           allowed by the sender.  Affected file silcd/packet_receive.c.
4327
4328         * Added check for CUMODE_CHANGE notify type that mode change is
4329           allowed by the sender.  Affected file silcd/packet_receive.c.
4330           Added the ID type as CUMODE_CHANGE notify type as argument
4331           to the `notify' client operation.  Affected files are
4332           lib/silcclient/client_notify.c, irssi/src/silc/core/client_ops.c.
4333
4334         * Added function silc_client_add_server to the client library.
4335           Added support for resolving also channel and server info when
4336           received unknown entity in notify packet.  Affected files are
4337           lib/silcclient/idlist.[ch], lib/silcclient/client_notify.c.
4338
4339         * Added function silc_command_get_status to return the command
4340           status from the command reply's argument payload.  Affected files
4341           are lib/silccore/silccommand.[ch].
4342
4343         * Added check for KICKED notify type that the kicking is
4344           allowed by the client.  Affected file silcd/packet_receive.c.
4345
4346         * Created function silc_get_input which can be used to get input
4347           (echo on or off) from user on command line.  Affected files are
4348           lib/silcutil/silcutil.[ch].
4349
4350 Sat Mar 23 09:51:26 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4351
4352         * Optimized silc_server_packet_relay_to_channel function.
4353           Added new function silc_channel_message_payload_encrypt which
4354           can be called directly if channel message payload needs to
4355           be encrypted and is already encoded (no need to call _encode
4356           function).  Packet relaying is now done by router without any
4357           extra memory allocations.  Affected files are
4358           lib/silccore/silcchanel.[ch], silcd/packet_receive.c and
4359           silcd/packet_send.c.
4360
4361         * Fixed the INVITE notify handling.  It took wrong arguments
4362           as invite list and invite delete.  Affected file is
4363           silcd/packet_receive.c.
4364
4365         * Added check for TOPIC_SET notify type that the topic change is
4366           allowed by the client.  Affected file silcd/packet_receive.c.
4367
4368         * Added check for INVITE notify type that inviting is allowed by
4369           the client.  Affected file silcd/packet_receive.c.
4370
4371         * Changed the silc_server_client_on_channel to return the
4372           SilcChannelClientEntry as well.  Moved the function
4373           silc_server_check_cmode_rights to server_util.[ch].
4374           Affected files are silcd/server_util.[ch], silcd/command.c.
4375
4376         * Added function silc_server_check_umode_rights to check whether
4377           changing client's user mode is allowed.  Added check for
4378           UMODE_CHANGE notify type that the umode change is allowed
4379           by the client.  Affected files are silcd/server_util.[ch],
4380           silcd/packet_receive.c and silcd/command.c.
4381
4382 Fri Mar 22 12:25:58 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4383
4384         * Fixed the SILC_PACKET_MAX_ID_LEN to actually be the max
4385           ID length.  It ignored that ID can be IPv6 based as well.
4386           Affected file lib/silccore/silcpacket.h.
4387
4388         * Fixed the silc_id_id2str and silc_id_str2id to take the
4389           IPv6 address offset's into consideration.  Affecte file is
4390           lib/silccore/silcid.c.
4391
4392 Thu Mar 21 20:44:13 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4393
4394         * Fixed the internal Unix scheduler functions to check for
4395           NULL context they may receive.  The affected file is
4396           lib/silcutil/unix/silcunixschedule.c.
4397
4398 Thu Mar 21 19:12:22 EET 2002  Timo Sirainen <tss@iki.fi>
4399
4400         * Changed hardcoded ~/.silc paths to use get_irssi_dir() so you
4401           can specify different directory with --home command line
4402           parameter. Affected files irssi/src/silc/core/client_ops.c,
4403           clientutil.c
4404
4405         * SILC-specific commands aren't now executed if the active server
4406           isn't of SILC-type, so there won't be problems with having
4407           IRC and SILC protocol support in same client. Affected files
4408           irssi/src/silc/core/silc-channels.c, silc-servers.c,
4409           silc-commands.h
4410
4411 Wed Mar 20 11:06:57 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4412
4413         * Improved the signal support in SILC Schedule.  Added new
4414           function silc_schedule_signal_call which is used by application
4415           to mark a signal to be called.  It is now safe to perform
4416           any kind of tasks in signal callbacks since it is guaranteed
4417           that the application specified signal callback is called
4418           after the signal is over.  Affected files are
4419           lib/silcutil/silcschedule.[ch], lib/silcutil/*/silc*schedule.c.
4420
4421 Tue Mar 19 20:42:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4422
4423         * Added `name' field to SilcChannelPrivateKey to represent
4424           application given name for the key.  Moved also the context from
4425           lib/silcclient/idlist.h into lib/silcclient/silcclient.h.
4426           Added the `name' argument also to the function
4427           silc_client_add_channel_private_key.
4428
4429           Added function silc_client_current_channel_private_key to set the
4430           current channel private key in use.
4431
4432           Added "change" command to KEY command which can be used to change
4433           the current channel private key.  Bound the command also to
4434           alt+K (Alt+Shift+k).
4435
4436           Also affected files lib/silcclient/client_channel.c,
4437           irssi/src/docs/help/in/key.in, irssi/src/silc/core/silc-channel.c.
4438
4439 Tue Mar 19 16:32:43 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4440
4441         * Added silc_rng_get_byte_fast function in to the
4442           lib/silccrypt/silcrng.[ch].
4443
4444         * Changed the interface of silc_packet_assemble and the
4445           silc_packet_send_prepare.  If silc_packet_assmble is now
4446           called the application does not call silc_packet_send_prepare
4447           because the library will call it automatically.  These
4448           interfaces now also return a reference to the outgoing buffer
4449           which includes the assembled packet, which the application can
4450           use to encrypt the packet.
4451
4452           Affected files are lib/silccore/silcpacket.[ch],
4453           lib/silcclient/client.c, client_channel.c client_prvmsg.c,
4454           silcd/packet_send.c, server_backup.c and packet_receive.c.
4455
4456         * Fixed a packet sending bug on very high load, where outgoing
4457           packet queue wasn't handled correctly and packets got corrupted.
4458           Affected files are lib/silcutil/*/silc*sockconn.c,
4459           lib/silcclient/client.c and silcd/server.c.
4460
4461 Mon Mar 18 21:00:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4462
4463         * Added macro SILC_PACKET_DATALEN which can be used during
4464           packet assembling to check whether the data to be added to
4465           the packet will fit to SILC_PACKET_MAX_LEN.  If not the data
4466           len is truncated until it fits it.
4467
4468           Added checks for maximum length of channel message payload and
4469           private message payload also.
4470
4471           Added checks for maximum packet length in server and in
4472           client library.
4473
4474           Affected files are lib/silccore/silcpacket.h, silcd/packet_send.c,
4475           lib/silcclient/client.c, lib/silccore/silcchannel.c and
4476           lib/silccore/silcprivate.c, lib/silcclient/client_channel.c and
4477           lib/silcclient/client_prvmsg.c.
4478
4479 Mon Mar 18 14:54:42 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4480
4481         * Added silc_server_packet_queue_purge call to the
4482           silc_server_disconnect_remote to assure that all data in the
4483           queue before disconnecting is sent to the network.  Affected
4484           file silcd/server.c.
4485
4486 Sun Mar 17 19:26:16 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4487
4488         * Added the deleting of server's own ID cache entry to the
4489           silc_server_free function.  Free also everything else that
4490           has been allocated in silc_server_init.  The affected file
4491           is silcd/server.c.
4492
4493 Sun Mar 17 15:44:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4494
4495         * Added functions silc_parse_version_string, silc_version_to_num,
4496           and silc_ske_parse_version to parse SILC protocol style version
4497           strings.  Affected files lib/silcutil/silcutil.[ch] and
4498           lib/silcske/silcske.[ch].
4499
4500         * Added new configuration params: version_protocol, version_software
4501           and version_software_vendor to specify what version the remote
4502           host must at least be to be able to connect to server.  The vendor
4503           string can be regex matched too.  Added new function
4504           silc_server_connection_allowed to check maximum number of allowed
4505           connections, and allowed versions for incoming connections.
4506           Affected files are silcd/server.c, server_util.[ch] and
4507           serverconfig.[ch].
4508
4509 Sun Mar 17 10:24:50 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4510
4511         * Added preliminary support for signals in scheduler.  The
4512           signals we care about are now blocked always when the scheduler
4513           is locked.  This way we can synchronise the use of signal with
4514           scheduler.  It is guaranteed that when signal occurs the scheduler
4515           is not locked, and thus new tasks can be safely added to the
4516           scheduler.
4517
4518           Renamed silc_schedule_wakeup_init and silc_schedule_wakeup_uninit
4519           to silc_schedule_internal_init and silc_schedule_internal_uninit.
4520           Added new platform specific routines
4521           silc_schedule_internal_signals_[un]block and
4522           silc_schedule_internal_signal_[un]register.
4523
4524           Added new functions to SILC Schedule API:
4525           silc_schedule_signal_[un]register.  Each signal that application
4526           is going to use should be registered to the scheduler.
4527
4528           Affected files are lib/silcutil/silcschedule.[ch],
4529           lib/silcutil/*/silc*schedule.c.
4530
4531 Sat Mar 16 22:39:23 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4532
4533         * Check for unauthenticated client and server in the
4534           silc_server_new_client and silc_server_new_server functions.
4535           Affected file silcd/packet_receive.c.
4536
4537         * Added function silc_string_is_ascii to check whether given
4538           string is 7-bit ASCII string.  Affected files are
4539           lib/silcutil/silcutil.[ch].
4540
4541         * Added function silc_id_is_valid_server_id into the
4542           silcd/serverid.c and added checking for valid Server ID's in
4543           silc_server_new_server.  The Server ID must always be based
4544           on the server's public IP address.
4545
4546         * Added logging of DISCONNECT packet message in the server.
4547           Affected file silcd/server.c.
4548
4549 Sat Mar 16 18:04:30 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4550
4551         * Changed all library interfaces that use Global RNG to also
4552           accept SilcRng as argument.  Affected files are
4553           lib/silcclient/command.c, lib/silccore/silcauth.[ch],
4554           lib/silccore/silcchanel.[ch], lib/silcclient/client_channel.c,
4555           silcd/packet_send.c, lib/silccore/silcprivate.[ch],
4556           lib/silcmath/silcprimegen.c, lib/silcmath/silcmath.h, and
4557           lib/silccrypt/rsa.c.
4558
4559         * Added function silc_pkcs_generate_key to the
4560           lib/silccrypt/silcpkcs.[ch] for applications so that they
4561           don't need to do pkcs->pkcs->init calls anymore.
4562
4563         * Remove SilcSocketConnection from the SFTP API since it really
4564           wasn't needed there.  The application has the information
4565           saved in its contexts anyway and the SFTP layer doesn't need
4566           know about it.  Affected files lib/silcsft/silcsftp.h and
4567           lib/silcsftp/sftp_[server/client].c.
4568
4569         * Rewrote the SILC SIM (modules) interface in lib/silcsim.[ch].
4570           The SilcSimContext is not SilcSim.
4571
4572         * Fixed possible buffer overflows in silc_id_render in the
4573           lib/silcutil/silcutil.c.
4574
4575         * On EPOC the global crypto module lists are not used at all
4576           in the crypto library.  Added support for using the constant
4577           algorithm list on EPOC.  Affected files are
4578           lib/silccrypt/silccipher.c, silchash.c, silchmac.c and
4579           silcpkcs.c.
4580
4581         * Fixed the handling of third parameter of KICKED notify, since
4582           it was mistakenly updated to SILC Protocol 1.0 even though it
4583           is to be included in 1.1.  Since it is not in 1.0 it is not
4584           mandatory, and this fix now handles it only if it is provided,
4585           and it is not error if it is not provided.  Affected file
4586           lib/silcclient/client_notify.c.
4587
4588 Sat Mar 16 09:07:27 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4589
4590         * Handled CHANNEL_CHANGE notify (ignore it) in Irssi SILC
4591           client.  Affected file irssi/src/silc/core/client_ops.c.
4592
4593         * Merged with Irssi 0.8.4 from irssi.org CVS.
4594
4595 Thu Mar 14 12:53:57 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4596
4597         * Check for valid socket connection in client entries before
4598           sending any messages.  Fixes a crash, but doesn't fix some
4599           other underlaying bug that is lurking there.  Affected
4600           file silcd/packet_send.c.
4601
4602 Thu Mar 14 13:38:12 EET 2002  Timo Sirainen <tss@iki.fi>
4603
4604         * $usermode, $cumode and $cumode_space expandos shouldn't do
4605           anything with non-SILC server records. Affected file
4606           irssi/src/silc/core/silc-expandos.c
4607
4608 Wed Mar 13 21:38:26 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4609
4610         * Fixed the silc_net_check_[host/local]_by_sock to support
4611           IPv6 bound sockets as well.  Now they can return IPv6 addresses
4612           as well.  Affected file lib/silcutil/silcnet.c.
4613
4614         * Fixed silc_net_addr2bin to correctly convert IPv6 addresses.
4615           Affected lib/silcutil/unix/silcunixnet.c.
4616
4617         * Fixed ID rendering (at least on some platforms, not NetBSD)
4618           for IPv6 addresses.  Affected file lib/silcutil/silcutil.c.
4619
4620 Tue Mar 12 17:58:59 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4621
4622         * Added silc_hash_public_key and silc_hash_public_key_compare
4623           functions to be used with SilcHashTable.  They can be used to
4624           hash public keys and compare public keys in hash table.  Affected
4625           file lib/silcutil/silcutil.[ch].
4626
4627         * Added support for specifying multiple public keys for Client
4628           connection section in server configuration file.  This makes it
4629           possible to accept multiple public keys from same host, or to
4630           make a section that accepts any incoming host, and have the
4631           accepted public keys listed in the section.
4632
4633           Added functions silc_sever_[find/get]_public_key,  added the
4634           support for this actually to all connection sections but only
4635           the Client section is currently allowed to specify multiple
4636           public keys.
4637
4638           Affected files are silcd/server.c, server_internal.h,
4639           command.c, protocol.c, server_util.[ch], packet_receive.c.
4640
4641 Mon Mar 11 23:37:38 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4642
4643         * Merged Irssi 0.8.2 from irssi.org CVS.
4644
4645 Sun Mar 10 23:34:48 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
4646
4647         * If silc_debug is TRUE, also output standard logging messages
4648           to stderr with the debug output.
4649
4650           Made silc_log_reset_all() flushing all channels before returning.
4651           Also fixed some documentation typos.
4652
4653           Affected files are lib/silcutil/silclog.[ch].
4654
4655 Sun Mar 10 20:07:49 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4656
4657         * Fixed the server to check correctly the amount of connections
4658           from single host, by checking also the type of the connection.
4659           Fixed also the comparison of number of connections and number
4660           of allowed connections.  Affected files are silcd/server.c,
4661           server_util.[ch].
4662
4663 Fri Mar  8 17:16:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4664
4665         * Fixed the USERS command reply to save the user's mode on the
4666           channel as well.  Fixed JOIN command reply to check whether a
4667           client is on channel already and not join it twice.  Affected
4668           file lib/silcclient/command_reply.c.
4669
4670         * Added new file silc-expandos.c into irssi/silc/core/ to return
4671           various stuff for various signal for the statusbar etc. updating.
4672           Now Irssi SILC client prints channel user modes etc. on the
4673           statusbar.
4674
4675         * The user mode (like server/router operator changes) is now shown
4676           on the Irssi SILC client's statusbar.  The affected files are
4677           irssi/src/silc/core/client_ops.c, silc-expandos.c.
4678
4679 Thu Mar  7 19:21:22 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4680
4681         * Changed silc_mutex_[un]lock calls in lib/silcutil/silcschedule.c
4682           to SILC_SCHEDULE_[UN]LOCK macros.
4683
4684         * Added more error printing to logs in server code.  Affected
4685           files silcd/server.c and silcd/protocol.c.
4686
4687         * Fixed -S option parsing in Irssi SILC Client.  Affected file
4688           irssi/src/silc/core/silc-core.c.
4689
4690         * Added silc_buffer_alloc_size function.  Affected file is
4691           lib/silcutil/silcbuffer.h.
4692
4693 Tue Mar  5 14:37:27 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4694
4695         * Changed all silc_[hash|hmac|cipher|pkcs]_default tables to
4696           constants.  Affected files in
4697           lib/silccrypt/silcpkcs.[ch], silchash.[ch], silchmac.[ch] and
4698           silccipher.[ch].
4699
4700         * Changed the internal SFTP Memory FS table to const.  Affected
4701           file lib/silcsftp/sftp_fs_memory.c.
4702
4703 Sun Mar  3 18:37:13 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4704
4705         * Fixed the buffer formatting and unformatting routines to
4706           check the size of 64 bits types with sizeof().  Affected
4707           file is lib/silcutil/silcbuffmt.c.
4708
4709 Mon Feb 25 17:19:05 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4710
4711         * Removed 0.6.x backwards support.
4712
4713 Sun Feb 24 12:53:25 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4714
4715         * Changed all integer type names:
4716           [u]int[8/16/32/64] -> Silc[UInt/Int][8/16/32/64].  This is
4717           to avoid collisions with other libraries using same type names
4718           as we did.
4719
4720 Sat Feb 23 20:31:43 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4721
4722         * Added `prefer_ipv6' argument to the functions
4723           silc_net_gethostbyname[_async].  If it is TRUE it will return
4724           IPv6 address over IPv4.  If FALSE IPv4 address is returned
4725           even if IPv6 address was found.  Affected files
4726           lib/silcutil/silcnet.[ch].
4727
4728         * Added support silc_net_create_connection[_async] to fallback
4729           to IPv4 address if IPv6 address could not be used (like if
4730           it doesn't work on a specific system).  Affected file in
4731           lib/silcutil/unix/silcunixnet.c.
4732
4733 Sat Feb 23 15:20:30 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4734
4735         * Added silc_schedule_reinit function to do the enlarging
4736           of the max tasks handling capabilities of the scheduler.
4737           Affected files lib/silcutil/silcschedule.[ch].
4738
4739 Wed Feb 20 20:41:01 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4740
4741         * Added automatic extern "C" { ... } for C++ compilers so the
4742           application does not need to define them.  Affected file
4743           includes/silcincludes.h.
4744
4745         * Renamed lib/silcclient/silcapi.h to silcclient.h as the
4746           old name went against naming convention.  Applications now
4747           include "silcclient.h" instead of "clientlibincludes.h".
4748           Removed includes/clientlibincludes.h, it is redundant now.
4749
4750         * Renamed includes/version.h to silcversion.h.
4751
4752         * Added really preliminary support for OS/2 into the util
4753           library.  Only thread & mutex API is implemented, others
4754           are still to be implemented.  Created the lib/silcutil/os2/
4755           directory.  Created also file includes/silcos2.h.
4756
4757 Wed Feb 20 18:48:49 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4758
4759         * Added preliminary BeOS support into the util library.
4760           Created lib/silcutil/beos/, and implemented all the needed
4761           functions to support SILC on BeOS.  Created also file
4762           includes/silcbeos.h.
4763
4764 Mon Feb 18 15:49:22 EET 2002  Timo Sirainen <tss@iki.fi>
4765
4766         * Added proper initializations to silc's irssi code, so it's
4767           now possible to load it as module.  Affected files
4768           irssi/src/silc/core/silc-core.c,
4769           fe-common/silc/fe-common-silc-core.[ch] and fe-text/silc.c
4770
4771 Sun Feb 17 19:02:56 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4772
4773         * Merged latest Irssi (0.8.1) from the irssi.org's CVS into
4774           the SILC tree.
4775
4776         * Fixed the silcdoc document generator to correct generate
4777           docs from all kinds of filenames.  Affected files are
4778           util/robodoc/Source/generator.c, scripts/silcdoc/silcdoc
4779
4780         * ROBOdoc documented lib/silcutil/silcmemory.h.
4781           Added also new function silc_memdup.
4782
4783         * Removed lib/silcutil/silcbufutil.h and moved those routines
4784           to the lib/silcutil/silcbuffer.h.
4785
4786 Sun Feb 17 15:52:30 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4787
4788         * Added `user_count' to the SilcChannelEntry which now tells the
4789           number of users on the channel.  The user count is now saved
4790           in normal server of global channels as well.  Affected files
4791           silcd/server.c, idlist.h, packet_receive.c and command.c.
4792
4793         * Splitted lib/silcutil/silcutil.[ch] into silcfileutil.[ch] to
4794           include file utility functions.
4795
4796         * Fixed the lib/silcsftp/sftp_fs_memory.c to use silcutil routines
4797           instead of calling directly OS routines.
4798
4799         * Fixed NICK change printing in Irssi SILC Client. Fixed
4800           KICKED notify printing in Irssi SILC Client.  Affected file
4801           irssi/src/silc/core/client_ops.c.
4802
4803         * Fixed a NICK change bug in client library, to not recreate the
4804           client_entry->channels hash table everytime nick is changed.
4805           Affected file lib/silcclient/client.c.
4806
4807 Sun Feb 17 10:10:14 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4808
4809         * ROBOdoc documented the lib/silcske/silcske.h, and improved
4810           the SKE interface a bit.
4811
4812         * Fixed padding problem in PKCS#1. The padding was not actually
4813           random since the random number generator was used incorrectly.
4814           This security bug affects only when encrypting with PKCS#1, and
4815           it is not currently used at all in SILC. SILC only use signing
4816           with PKCS#1. Affected file lib/silccrypt/pkcs1.c.
4817
4818 Sat Feb 16 13:44:24 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4819
4820         * Rewrote the notify handling in Irssi SILC client to not call
4821           the events as signals.  Fixes problems with Perl support.
4822           Affected files irssi/src/silc/core/client_ops.c, silc-channels.c.
4823
4824         * Send the auto-nicking NICK command in client library with
4825           little timeout after connecting.  The affected file is
4826           lib/silcclient/client.c.
4827
4828         * Added following new config file settings:
4829           channel_rekey_secs, key_exchange_rekey, key_exchange_pfs,
4830           key_exchange_timeout, conn_auth_timeout, connections_max,
4831           links_max.
4832
4833           Implemented all the new config settings handling in the server.
4834
4835           Optimized the use of SKE Mutual flag usage.  Use it only
4836           if connection authentication protocol is not based in public
4837           key authentication.
4838
4839           Renamed all SilcServerConfigSection* to SilcServerConfig*
4840           to have a bit shorter names.
4841
4842           Affected files silcd/serverconfig.[ch], server.[ch], and
4843           protocol.[ch].
4844
4845 Sat Feb 16 02:46:43 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
4846
4847         * Cleaned up the listening sockets code, preparing for the rehash
4848           support.  Affected file is silcd/server.c.
4849
4850         * Fixed some output messages.  Affected files are silcd/silcd.c,
4851           and silcd/server.c.
4852
4853 Fri Feb 15 19:10:20 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4854
4855         * Create lib/doc/silcrng_intro.html document as introduction
4856           to SILC RNG.  ROBOdoc documented lib/silccrypt/silcrng.h.
4857
4858 Fri Feb 15 13:23:03 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
4859
4860         * Fixes to the silcd config template.  Affected file is
4861           doc/example_silcd.conf.in.
4862
4863         * Removed type casts from silc_calloc(), conforming to the
4864           CodingStyle.  Affected file is lib/silcutil/silcconfig.c.
4865
4866         * Removed param_name member from client, server, and router
4867           section structs, now identifying the param directly.
4868
4869           Added CONFIG_FREE_AUTH macro in config file parsing.
4870
4871           Affected files are silcd/serverconfig.[ch].
4872
4873 Fri Feb 15 12:24:08 EET 2002  Timo Sirainen <tss@iki.fi>
4874
4875         * Fixed command line parameter handling. All SILC initialization
4876           is now done in silc_core_init() which also fixes autoconnecting
4877           to servers.
4878
4879           Affected files irssi/src/silc/core/silc-core.c,
4880           irssi/src/fe-text/silc.c.
4881
4882 Thu Feb 14 22:03:58 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4883
4884         * Added new configuration options and blocks:
4885           keepalive_secs, reconnect_count, reconnect_interval,
4886           reconnect_interval_max, reconnect_keep_trying and
4887           require_reverser_lookup.  Added ConnectionParam block, and
4888           implemented the connection parameters when connecting as
4889           initiator and when accepting connections as responder.
4890
4891           Added CONFIG_IS_DOUBLE macro in config file parsing, to check
4892           whether given configuration value has been given already.
4893
4894           Affected files silcd/serverconfig.[c], server.[c].
4895
4896         * Splitted the doc/example_silcd.conf.in.  Separated the crypto
4897           algorithm parts and created new file silcalgs.conf, that
4898           is now included from the example_silcd.conf.in.
4899
4900         * Optimized the silc_server_connect_to_router_second to take
4901           the connection configuration object from the SilcServerConnection
4902           object instead of finding it during the connecting phase.
4903           Added the configuration object to SilcServerConnection struct.
4904           Affected files silcd/server_internal.h, server.c.
4905
4906 Thu Feb 14 16:02:26 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4907
4908         * Add the client on channel after it was resolved at the
4909           channel message receiving, and it was not already on the
4910           channel.  Affected file lib/silcclient/client_channel.c.
4911
4912 Wed Feb 13 23:16:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4913
4914         * Fixed the public key authentication to allocate always the
4915           destination signature buffer instead of using static buffer.
4916           Affected file silcd/protocol.c.
4917
4918 Wed Feb 13 20:51:13 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4919
4920         * Unified the serverconfig.[ch]'s helper function interface.
4921           Affected file silcd/serverconfig.[ch].
4922
4923         * Removed doc/example_silc.conf.in since it is redundant.
4924           The make install will now install irssi/silc.conf file.
4925
4926         * Added new Passphrase and Publickey authentication methods to
4927           config file, allowing both public key and passphrase based
4928           authentication to be set at the same time.
4929
4930           Added `prefer_passphrase_auth' setting in config file which
4931           can be used to set to prefer passwd auth if both passwd and
4932           public key is set.  If not set, public key is preferred.
4933           This has effect only when being initiator (responder will try
4934           both anyway).
4935
4936           Added support for authentication with passphrase and public key
4937           at the same time.  The passphrase is tried first always since
4938           it is faster to check.
4939
4940           Affected file silcd/serverconfig.[ch], server.c, protocol.[ch].
4941
4942 Wed Feb 13 12:46:25 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
4943
4944         * Merged the new SILC Config library, with the server parsing
4945           support.  Read the header file silcconfig.h or the toolkit
4946           documentation for the news.  Affected files are
4947           doc/example_silcd.conf.in lib/silcutil/silcconfig.[ch]
4948           silcd/command.c silcd/packet_receive.c silcd/packet_send.c
4949           silcd/protocol.c silcd/server.c silcd/server_backup.c
4950           silcd/serverconfig.[ch] silcd/silcd.c.
4951
4952         * Fixed some silclog documentation.  Affected file is
4953           lib/silcutil/silclog.h.
4954
4955 Sun Feb 10 18:11:30 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4956
4957         * The silc_cipher_register, silc_hash_register and
4958           silc_hmac_register now checks if the object to be registered
4959           is registered already.  Affected files are
4960           lib/silccrypt/silccipher.c, silchash.c and silchmac.c.
4961
4962 Sun Feb 10 15:48:38 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4963
4964         * Merged new irssi from irssi.org's CVS, the version 0.7.99.
4965
4966 Sat Feb  9 14:54:33 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4967
4968         * Allow zero length channel messages inside the Channel Message
4969           Payload.  Affected file lib/silccore/silcchannel.c.
4970
4971         * Fixed scripts/silcdoc/silcdoc to support all kinds of filenames
4972           as header filenames.
4973
4974         * Removed lib/silcclient/README and created HTML file
4975           lib/silcclient/silcclient_using.html, which is now included
4976           as part of Toolkit documentation.
4977
4978 Thu Feb  7 10:12:25 CET 2002  Pekka Riikonen <priikone@silcnet.org>
4979
4980         * Fixed CUMODE_CHANGE notify handling to change the mode of
4981           correct client.  Affected file lib/silcclient/client_notify.c.
4982
4983         * Make silc_rng_alloc fail if it cannot allocate the sha1
4984           hash algorithm.  Affected file lib/silccrypt/silcrng.c.
4985
4986 Sun Feb  3 17:20:52 EET 2002  Pekka Riikonen <priikone@silcnet.org>
4987
4988         * Fixed the file transfer's key agreement payload to include
4989           zero port also if the hostname is NULL because it could not
4990           be bound.
4991
4992           Call file transfer monitor callback now also if error occurs
4993           during key agreement protocol.
4994
4995           Changed the silc_client_file_send interface to return the
4996           SilcClientFileError instead of session id.  The session ID
4997           is returned into pointer provided as argument.
4998
4999           Check that the file exists locally before sending the
5000           file transfer request at all.
5001
5002           Affected file lib/silcclient/client_ftp.c, silcapi.h.
5003
5004         * Added SILC_CLIENT_FILE_KEY_AGREEMENT_FAILED file transfer
5005           error than can occur while key agreement protocol.  Affected
5006           file lib/silcclient/silcapi.h.
5007
5008         * Fixed the event_mode CMODE handler to not crash when mode
5009           is changed and +k mode is set in the channel.  Affected file
5010           irssi/src/silc/core/silc-channels.c.
5011
5012         * Fixed SILC_LOG_ERROR to give out Error and not Warning, and
5013           SILC_LOG_WARNING to give out Warning and not Error.  Affected
5014           file lib/silcutil/silclog.c.
5015
5016         * Fixed the channel message payload decryption in the function
5017           silc_channel_message_payload_decrypt to not modify the original
5018           buffer before it is verified that the message decrypted
5019           correctly.  Otherwise, next time it is called with correct
5020           channel key it won't encrypt since the payload is corrupted.
5021           Affected file lib/silccore/silcchannel.c.
5022
5023 Sun Feb  3 11:46:12 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5024
5025         * Do not constantly resize the window.  A fix patch by cras.
5026           Affected file irssi/src/fe-text/screen.c.
5027
5028 Sat Feb  2 16:54:18 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5029
5030         * Applied IPv6 fix patch from Jun-ichiro itojun Hagino.
5031           Affected file lib/silcutil/silcnet.c.
5032
5033 Fri Feb  1 22:33:11 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5034
5035         * Fixed a bug in hash table internal routine for traversing
5036           the table with foreach callback.  The current entry may
5037           become invalid in the callback but it was referenced after
5038           the callback returned.
5039
5040           Do not allow auto rehashing of hash table during the
5041           silc_hash_table_foreach operation, for same reasons as it is
5042           not allowed for SilcHashTableList.  Affected files are
5043           lib/silcutil/silchashtable.[ch].
5044
5045 Fri Feb  1 14:55:00 CET 2002  Pekka Riikonen <priikone@silcnet.org>
5046
5047         * Defined DLLAPI into silcincludes.h and silcwin32.h for
5048           Win32 DLL.  extern's in header files are now declared with
5049           DLLAPI.
5050
5051 Thu Jan 31 23:34:33 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5052
5053         * Fixed private message handling.  It used some old code that
5054           caused the client to crash.  Affecte file is
5055           lib/silcclient/client_prvmsg.c.
5056
5057 Thu Jan 31 19:06:22 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5058
5059         * Added function silc_client_add_channel,
5060           silc_client_replace_channel_id, and removed functions
5061           silc_client_new_channel_id and silc_idlist_get_channel_by_id
5062           from client library.
5063
5064         * Added cross reference of the joined channels to the
5065           SilcClientEntry, and changed the SilcChannelEntry's
5066           users list to SilcHashTable.  The affected files are
5067           lib/silcclient/idlist.[ch].
5068
5069         * Fixed a bug in hash table tarversing.  While the hash table
5070           is traversed with SilcHashTableList the table must not be
5071           rehashed.  It is now guaranteed that auto rehashable tables
5072           are not rehashed while tarversing the list.  Also defined that
5073           silc_hash_table_rehash must not be called while tarversing
5074           the table.  Added function silc_hash_table_list_reset that must
5075           be called after the tarversing is over.  The affected files are
5076           lib/silcutil/silchashtable.[ch].
5077
5078         * Changed all hash table traversing to call the new
5079           silc_hash_table_list_reset in server and in client library.
5080
5081         * Added function silc_client_on_channel to return the
5082           SilcChannelUser entry if the specified client entry is joined
5083           on the specified channel.  This is exported to application as
5084           well.  Affected files lib/silcclient/client_channel.c, silcapi.h.
5085
5086 Wed Jan 30 19:14:31 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5087
5088         * Fixed founder regaining problem with JOIN command on normal
5089           server.  The notify for mode change must be sent always and
5090           not only if !cmd->pending.  Affected file silcd/command.c.
5091
5092         * Fixed the WHOWAS command's reply sending to support the
5093           lists correctly.  Affected file silcd/command.c.
5094
5095 Wed Jan 30 11:11:47 CET 2002  Pekka Riikonen <priikone@silcnet.org>
5096
5097         * When sending JOIN command to router for processing the
5098           sender's old command identifier was not saved back to the
5099           sender's command context, fixed now.  The affected file is
5100           silcd/command.c.
5101
5102         * Create the key in JOIN command of the router did not return
5103           the channel key, added check for this.  Affected file is
5104           silcd/command.c.
5105
5106         * Fixed a channel ID update bug in JOIN command reply.  Do
5107           not directly upgrade the ID but call the function
5108           silc_idlist_replace_channel_id if the ID was changed.
5109           Affected file silcd/command_reply.c.
5110
5111         * Fixed memory leaks from command calling if it would fail.
5112           Affected file silcd/command.c.
5113
5114 Tue Jan 29 19:49:31 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5115
5116         * Applied patches from cras:
5117
5118           Memory leak fixes around libaries, irssi window resize fix,
5119           new silclist.h and silcdlist.h, all extern inline changed to
5120           static inline.
5121
5122         * Removed dotconf from lib/dotconf, not needed anymore.
5123
5124         * Removed TRQ from lib/trq, not needed anymore.
5125
5126         * Do more frequent heartbeats (5 minutes instead of 10 minutes)
5127           with server connections.  Later this will be configurable
5128           in config file after new config file is done.  Affected file
5129           silcd/server.c.
5130
5131 Tue Jan 29 10:35:03 CET 2002  Pekka Riikonen <priikone@silcnet.org>
5132
5133         * Fixed a crash in server related to channel announcements.
5134           Affected file silcd/server.c.
5135
5136 Mon Jan 28 17:49:42 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5137
5138         * Fixed memory leaks in silc_server_create_new_channel*
5139           functions.  Affected file silcd/server.c.
5140
5141         * Fixed the CHANNEL_CHANGE notify to re-announce the channel
5142           which ID was changed.  This way the router will send the
5143           user list for the channel again, and server won't be in
5144           desync in some rare circumstances.  Affected file is
5145           silcd/packet_receive.c.
5146
5147 Sun Jan 27 21:04:19 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5148
5149         * Check for NULL socket pointer in the function
5150           silc_server_packet_send_to_channel_real.  Affected file
5151           silcd/packet_send.c.
5152
5153         * Fixed the BAN notify handling to correctly remove ban
5154           list.  Affected file silcd/packet_receive.c.
5155
5156 Sat Jan 26 23:01:03 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5157
5158         * Fixed some header addition to Toolkit distribution in
5159           lib/silcutil/Makefile.am and lib/trq/Makefile.am.
5160
5161         * Added lib/silcclient/client_ops_example.h as an template
5162           file for application programmers to quickly start using
5163           the SilcClientOperation functions in their application.
5164           Updated the lib/silcclient/README as well to tell about this
5165           nice file made available.
5166
5167 Sat Jan 26 10:45:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5168
5169         * Call silc_server_remove_from_channels when removing client
5170           entry when NO_SUCH_CLIENT_ID was received.  Affected file
5171           is silcd/command_reply.c.
5172
5173 Fri Jan 25 19:12:36 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5174
5175         * Added server & router operator statistics updating.  Affected
5176           file silcd/packet_receive.c and silcd/command.c.
5177
5178         * Fixed the SERVER_SIGNOFF notify handling on normal server
5179           not to save the history information for clients.  Same was
5180           fixed earlier in remove_clients_by_server function, but not
5181           here.  Affected file silcd/packet_receive.c.
5182
5183         * Raised the default connection-retry count from 4 to 7 in
5184           server.  Affected file silcd/server.h.
5185
5186         * Cancel any possible reconnect timeouts when we start the
5187           key exchange.  Affected file silcd/server.c.
5188
5189         * Do not reconnect on connection failure when SCONNECT was
5190           given.  Affected files silcd/server.[ch].
5191
5192 Tue Jan 22 18:19:36 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5193
5194         * Removed assert()'s from the lib/silcclient/client_keyagr.c.
5195
5196         * Fixed the NICK command to always give the unformatted
5197           nickname to the one giving the NICK command.  If unformatted
5198           nickname is cached already it will be formatted and the
5199           local entry will always get the unformatted nickname.
5200           Affected file lib/silcclient/idlist.c.
5201
5202         * Fixed some double frees from client library commands.
5203           Affected file is lib/silcclient/command.c.
5204
5205         * Fixed CUMODE command in server to assure that no one can
5206           change founder's mode than the founder itself, there was a
5207           little bug.  Affected file silcd/command.c.
5208
5209 Mon Jan 21 19:07:53 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5210
5211         * Removed the SilcClientCommandDestructor from the client
5212           libary, it is not needed anymore.  Affected files are
5213           lib/silcclient/silcapi.h, command[_reply].[ch],
5214           client_notify, idlist.c.
5215
5216         * Fixed GETKEY command to first resolve client, and then
5217           resolve the server only if the client was not found, instead
5218           of resolving both at the same time.  Affected file is
5219           lib/silcclient/command.c.
5220
5221         * Added silc_client_start_key_exchange_cb and lookup the
5222           remote hostname and IP address before starting the key
5223           exchange with server.  The affected file is
5224           lib/silcclient/client.c.
5225
5226         * The server's public key is now saved using the IP address
5227           of the server and not the servername for the filename.
5228           The hostname public key filename is checked as an fall back
5229           method if the IP address based filename is not found.
5230
5231           Fixed the GETKEY command to save the fetched server key
5232           in correct filename.
5233
5234           Print the remote server's hostname now when new key is
5235           received during connection process.  Affected file is
5236           irssi/src/silc/core/client_ops.c.
5237
5238         * Return always our own public key to the client if it asks
5239           for it with GETKEY command.  Affected file silcd/command.c.
5240
5241         * Removed the use_auto_addr variable from default config
5242           file since it was in wrong section.  Affected file is
5243           irssi/src/config.
5244
5245         * Fixed TOPIC_CHANGE notification to not route it when it
5246           was sent using silc_server_send_notify_to_channel function.
5247           Affected file silcd/command.c.
5248
5249         * Fixed silc_server_send_notify_kicked to send the kicker's
5250           Client ID also, it was missing.  Affected files are
5251           silcd/command.c, silcd/packet_send.[ch].
5252
5253 Thu Jan 17 18:59:11 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5254
5255         * Do not save client history information in SERVER_SIGNOFF.
5256           Fixes the bug in normal server that it does not detect
5257           the client becoming valid after the server becomes back
5258           online.  Affected file silcd/server_util.c.
5259
5260         * Added `sock_error' field  into the SilcSocketConnection
5261           context.  When error occurs during socket operation (read
5262           or write) the error is saved.  Added also new function
5263           silc_socket_get_error to return human readable socket error
5264           message.  Affected files are lib/silcutil/silcsockconn.[ch],
5265           lib/silcutil/unix/silcunixsockconn.c, and
5266           lib/silcutil/win32/silcwin32sockconn.c.
5267
5268         * The server now prints the socket error message in the
5269           signoff for client.  Affected file silcd/server.c.
5270
5271         * Fixed the `created' channel information sending from router
5272           to server in JOIN command.  Checks now whether the channel
5273           really was created or not and set it according that.
5274
5275           Fixed the JOIN command to use the client entry's current
5276           ID during the joining procedure instead of the one it sent
5277           in the command (it is checked though), since it can change
5278           between the packet processing and command processing, and
5279           would just case unnecessary pain in the client end.  Affected
5280           file silcd/command.c.
5281
5282         * Fixed a channel key payload sending to use correct channel
5283           ID when the server was forced to change the channel's ID by
5284           router.  Router sent the key payload with the old Channel ID.
5285           Affected file silcd/packet_receive.c.
5286
5287 Wed Jan 16 22:26:30 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5288
5289         * Call silc_server_save_channel_key only if the key payload
5290           was provided in the JOIN command's command reply.  Affected
5291           file silcd/command_reply.c.
5292
5293 Tue Jan 15 18:49:41 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5294
5295         * Fixed silc_mp_sizeinbase to return the value correctly with
5296           MPI.  Affected file lib/silcmath/mp_mpi.c.
5297
5298         * Fixed the stop_server signal to correctly stop the scheduler
5299           and gracefully stop the server when SIGTERM or SIGINT signals
5300           are received.  Affected file silcd/silcd.c.
5301
5302 Mon Jan  7 23:38:19 CET 2002  Johnny Mnemonic <johnny@themnemonic.org>
5303
5304         * Simple handling of TERM and HUP signals. Also added some log
5305           flushing call around.  Affected file is
5306           silcd/silcd.c.
5307
5308         * Fixed small bugs in silclog.c. Now buffering output will take
5309           effect after 10 seconds since startup: This will ensure that
5310           no important startup messages are lost. Also output redirection
5311           will preserve original format ([Date] [Type] message).
5312           Affected file is lib/silcutil/silclog.c.
5313
5314         * Added two options to the config file, in the logging section:
5315           quicklogs:<yes/no>: and flushdelay:<seconds>:.  Affected files
5316           lib/silcutil/silclog.[ch], silcd/serverconfig.[ch].
5317
5318 Sun Jan  6 12:49:40 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5319
5320         * Do not print the warning about log files not being initialized
5321           more than once to avoid excess logging.  Affected file is
5322           lib/silcutil/silclog.c.
5323
5324         * Fixed the SIM compilation in lib/silcsim/Makefile.am.  Fixed
5325           the SIM copying in make install in Makefile.am.pre.
5326
5327 Sun Jan  6 01:10:21 CET 2001  Johnny Mnemonic <johnny@themnemonic.org>
5328
5329         * Rewritten silclog APIs. Globally interesting changes follows:
5330           silc_log_set_files() changed to silc_log_set_file().
5331           silc_log_set_callbacks() changed to silc_log_set_callback().
5332           ROBOdoc documented silclog header file.
5333           SilcLogCb now returns bool to wether inihibit the default
5334           handler or not (to keep the old behaviour return always TRUE).
5335           The new APIs should also fix the problem of the
5336           silcd_error.log file that was written in the current directory.
5337
5338           New features:
5339           Log files streams will remain opened after silc_log_set_file()
5340           call, means less CPU usage notably on high traffic servers.
5341           File streams are now full buffered, and flushed to the disk
5342           every 5 minutes, lesses HD activity and CPU usage.
5343           Messages can be redirected, allowing admins to configure
5344           one single logfile for all server messages.
5345           the silc_log_quick global variable to activate fast-logging.
5346           Affected files lib/silcutil/silclog.[ch]
5347
5348         * Changed some code to conform new silclog APIs. Affected
5349           files are doc/example_silcd.conf.in, silcd/server.c
5350           irssi/src/silc/core/silc-core.c, silcd/serverconfig.[ch],
5351           silcd/silcd.c.
5352
5353         * Fixed a memory leak that could occur in some situations.
5354           Affected file silcd/serverconfig.c.
5355
5356 Sat Jan  5 13:37:29 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5357
5358         * Added the silc_client_del_client to remove the client from
5359           all channels as well.  Affected file lib/silcclient/idlist.c.
5360
5361         * Fixed the client library to correctly remove the client
5362           from all channels when the client entry is being destroyed.
5363           Affected file lib/silcclient/client_notify.c, command.c.
5364
5365         * Added auto-nicking support to the client library.  If the
5366           applicatio now sets client->nickname it will be sent to the
5367           server after connecting by the library.  This way for example
5368           SILCNICK (or IRCNICK) environment variables will have effect
5369           and always change the nickname automatically to whatever
5370           it is wanted.  Affected file lib/silcclient/client.[ch].
5371
5372         * Renamed silc_server_command_bad_chars to the
5373           silc_server_name_bad_chars and moved it to the
5374           silcd/server_util.[ch].  Added also new function
5375           silc_server_name_modify_bad to return nickname that
5376           includes bad characters as new nickname without those
5377           bad characters.  This check and modify is now used in
5378           silc_server_new_client when the username is initially set
5379           as nickname, so it must be checked to be valid nickname.
5380           Affected file silcd/packet_receive.c.
5381
5382         * The nickname length is now taken from the packet for real
5383           and not trusted to strlen() since it clearly can return
5384           wrong length for nickname including bad characters.  This
5385           also applies to channel names.  Affected file silcd/command.c.
5386
5387         * Removed the lib/silcsilm/modules directory.  Modules are now
5388           compiled into the lib/silcsim.  Fixed the copying of the
5389           modules to follow symbolic links in Makefile.am.pre.
5390
5391 Wed Jan  2 18:56:21 EET 2002  Pekka Riikonen <priikone@silcnet.org>
5392
5393         * Fixed silc_string_regexify list creation.  Fixes bugs with
5394           BAN and INVITE commands in server.  The affected file is
5395           lib/silcutil/unix/silcunixutil.c.
5396
5397 Sun Dec 30 13:41:34 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5398
5399         * Removed the command destructor entirely from the server's
5400           command and command reply routines.  It is not needed, and
5401           its usage was buggy and caused crashes.  Affected files are
5402           silcd/command[_reply].[ch].
5403
5404 Fri Dec 28 12:43:22 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5405
5406         * Cancel protocol and NULL sock->protocol if timeout
5407           occurred during protocol.  Affected file silcd/server.c.
5408
5409         * Cancel protocol timeouts always before calling the final
5410           callback, to assure that after final callback is called
5411           no other state will be called for the protocol anymore.
5412           Affected file silcd/protocol.c.
5413
5414         * Print error log if incoming connection configuration could
5415           not be found.  Affected file silcd/server.c.
5416
5417         * Fixed JOIN command to correctly save the founder mode
5418           to the client on normal SILC server, when the channel
5419           was created by the router.  Affected file silcd/command.c.
5420
5421         * Fixed LIST command (hopefully) to send correct reply
5422           packets.  Affected file silcd/command.c.
5423
5424 Thu Dec 20 16:14:52 CET 2001  Pekka Riikonen <priikone@silcnet.org>
5425
5426         * The silc_packet_receive_process now returns FALSE if the
5427           read data was invalid packet, and TRUE if it was ok.
5428
5429           The server now checks that if unauthenticated connection
5430           sends data and its processing fails the server will close
5431           the connection since it could be a malicious flooder.
5432
5433           Affected files lib/silccore/silcpacket.[ch], silcd/server.c.
5434
5435 Wed Dec 19 21:31:25 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5436
5437         * Make sure the warning about error opening a log file is
5438           printed only once and not everytime it fails (produces
5439           too much useless log).  Affected file lib/silcutil/silclog.c.
5440
5441 Wed Dec 19 18:21:51 CET 2001  Johnny Mnemonic <johnny@themnemonic.org>
5442
5443         * Made the silc_server_daemonise() function more readable.
5444           Affected file silcd/server.c.
5445
5446         * Pid file is now optional, the user may comment it out from
5447           the config file. Removed define SILC_SERVER_PID_FILE, we
5448           don't need a default any longer.  Affected file
5449           configure.in.pre, lib/Makefile.am.pre.
5450
5451         * Make some use of the pid file. The server now dies at startup
5452           if it detects a valid pid file on his path. The server would
5453           die anyway in this circumstance, because of the bind() failure.
5454           Affected file silcd/silcd.c.
5455
5456         * No longer compiling lib/dotconf.
5457
5458 Mon Dec 17 18:24:27 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5459
5460         * Fixed JOIN command parsing not to crash.  Affected file
5461           lib/silcclient/command.c.
5462
5463         * Fied the NICK_CHANGE notify to add the new client entry
5464           even it is resolved.  This removes an <[unknown]> nick
5465           thingy bug in the client.  Affected file is
5466           lib/silcclient/client_notify.c.
5467
5468         * Do not try to allocate 0 bytes (efence does not like it)
5469           in lib/silccore/silccomand.c when encoding payload.
5470
5471         * Do not take IRCNICK as nickname in Irssi SILC client since
5472           it is not possible to set nickname before hand connecting
5473           the server (TODO has an entry about adding auto-nicking
5474           support).
5475
5476         * Changed the silc_server_command_pending to check whether
5477           there already exists an pending entry with the specified
5478           command, command identifier and pending callback.  This is
5479           to fix IDENTIFY and WHOIS related crashes that may register
5480           multiple pending commands with same identifier.  Affected
5481           file silcd/command.c.
5482
5483         * Fixed the server to reconnect to the router even if it
5484           was already reconnecting and EOF was received.  This to
5485           fix a possibility that the server wouldn't ever try to
5486           auto-reconnect to the router.  Affected file silcd/server.c.
5487
5488 Sat Dec 15 20:31:50 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5489
5490         * Fixed the server's password authentication to use the
5491           length of the locally saved password, and not the one
5492           sent in the packet.  Affected file silcd/protocol.c.
5493
5494         * Fixed same password authentication problem in the
5495           Authentication Payload handling routines in
5496           lib/silccore/silcauth.c.
5497
5498         * Yet another password authentication problem fixed with
5499           channel password handling in silcd/command.c.
5500
5501 Mon Dec 10 19:57:40 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5502
5503         * If first character of string in silc_parse_userfqdn is '@'
5504           then do not parse it.  Affected file is
5505           lib/silcutil/silcutil.c.
5506
5507 Sun Dec  9 22:18:50 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5508
5509         * Fixed minor bug in IDENTIFY command reply sending, which
5510           caused various weird problems during JOIN when it was
5511           resolving names for users.  Affected file silcd/command.c.
5512
5513 Sun Dec  9 19:18:41 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5514
5515         * Fixed the IDENTIFY command reply sending to chech better valid
5516           clients.  It was possible to send incomplete list of replies.
5517           Affected file silcd/command.c.
5518
5519 Sat Dec  8 15:58:31 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5520
5521         * Added silc_client_command[s]_[un]register functions now to
5522           dynamically register the commands in client library.  Removed
5523           the static table of commands.  This allows the client library
5524           to call commands without causing the application to know about
5525           what commands library has called.
5526
5527           Removed the INFO command reply kludge to detect when the command
5528           was called by library.  Now library use its own command reply
5529           function for INFO command.
5530
5531           Added function silc_client_command_call to call a command.
5532           Application can use it to call command, not access the structure
5533           directly.
5534
5535           Now all commands that are sent by the client library (not
5536           explicitly sent by application) use own command reply functions.
5537
5538           Affected files around lib/silcclient/ and in
5539           irssi/src/silc/core/.
5540
5541         * Fixed the WHOIS command reply sending to chech better valid
5542           clients.  It was possible to send incomplete list of replies.
5543
5544           Fixed the WHOIS and IDENTIFY to send the request to router
5545           if normal server did not do it and did not find any results.
5546
5547           Affected file silcd/command.c.
5548
5549 Thu Dec  6 17:21:06 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5550
5551         * Moved the internal data from SilcClient context into its
5552           own file, not accesible to application.  Affected files
5553           lib/silcclient/client.h and lib/silcclient/client_internal.h,
5554           and other files in client library.
5555
5556 Thu Dec  6 10:37:55 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5557
5558         * Added doc/examples installation target in Makefile.am.pre.
5559           A patch by salo.
5560
5561 Tue Dec  4 17:43:19 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5562
5563         * If NO_SUCH_CLIENT_ID notify is received for WHOIS or IDENTIFY
5564           commands the found client entry will be removed from the
5565           cache, after notifying application about the error.  Affected
5566           file lib/silcclient/command_reply.c.
5567
5568         * Changed the /MSG to check for exact nickname user gave, and
5569           not let `nick' match `nick@host' if it is only one found.  Now,
5570           user must type the exact nickname (like nick@host2) even if
5571           there are no more than one same nicks found.  This is to avoid
5572           a possibility of sending nickname to wrong nickname since
5573           `nick' could match `nick@host'.  Affected file is
5574           irssi/src/core/silc-servers.c.
5575
5576 Mon Dec  3 18:49:45 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5577
5578         * Do not print "you are now server operator" or similar when
5579           giving /away command.  Affected files are
5580           irssi/src/silc/core/client_ops.c, silc-servers.h.
5581
5582         * Made the silc_server_command_pending_error_check to send
5583           the same command reply payload it received back to the
5584           original sender of the command.  This way all arguments
5585           that was received by the server will be received by the
5586           client too.  Affected file silcd/command.c.
5587
5588         * Added the silc_idcache_add to return the created cache entry
5589           to a pointer.  Affected file lib/silccore/silcidcache.[ch].
5590
5591         * Add global clients to expire if they are not on any channel.
5592           This is because normal server will never know if they signoff
5593           if they are not on any channel.  The cache expiry will take
5594           case of these entries.  This is done by normal servers only.
5595           The affected files are silcd/command_reply.c,
5596           silcd/idlist.[ch], silcd/server and silcd/packet_receive.c.
5597
5598         * If server receives invalid ID notification for WHOIS or
5599           IDENTIFY and the ID exists in the lists, it is removed.
5600           Affected file silcd/command_reply.c.
5601
5602         * If NO_SUCH_CLIENT_ID is received for WHOIS or IDENTIFY command
5603           in client then client entry that it matches is searched and
5604           the nickname is printed on the screen for user.  Affected
5605           file irssi/src/silc/core/client_ops.c.
5606
5607 Mon Dec  3 11:56:59 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5608
5609         * Use cache entry expire time in the LIST command reply to
5610           purge old entries from the cache after the LIST command
5611           reply has been received.  This way we don't have non-existent
5612           entries in the cache for too long.  Affected file is
5613           silcd/command_reply.c.
5614
5615 Sun Dec  2 23:29:07 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5616
5617         * If we are normal server, and we've not resolved client info
5618           in WHOIS or IDENTIFY from router, and it is global client,
5619           we'll check whether it is on some channel.  If it is not
5620           then we cannot be sure about its validity and will resolve it
5621           from router.  Fixes a bug in WHOIS and IDENTIFY.  Affected
5622           file silcd/command.c.
5623
5624         * Search channel by name (if possible) rather than by ID
5625           in IDENTIFY command's command reply.  Affected file is
5626           silcd/command_reply.c.
5627
5628 Sun Dec  2 13:48:46 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5629
5630         * Distribute to the channel passphrase in CMODE_CHANGE notify.
5631           Updated specs and implemented it.  Affected file silcd/command.c,
5632           silcd/packet_send.c and silcd/packet_receive.c.
5633
5634         * Implemented the <founder auth> payload handling in the JOIN
5635           command.  If provided all conditions for channel joining
5636           except requirement to provide correct passphrase can be
5637           overrided by the channel founder.  Updated the protocol specs.
5638           Affected file silcd/command.c.
5639
5640           Added support for founder auth in JOIN command in client
5641           library.  Fixed the parsing of the JOIN command now to support
5642           all options as they should be.  The affected file is
5643           lib/silcclient/command.c.
5644
5645         * Optimized the WHOIS and IDENTIFY commands to send the request
5646           to router only if it includes nicknames or other names.  If
5647           they include only IDs then check the local cache first before
5648           routing.  Affected file is silcd/command.c.
5649
5650         * Added channels topic announcements.  Affected file is
5651           silcd/packet_receive.c and silcd/server.c.
5652
5653         * Fixed the silc_server_send_notify_topic_set to really destine
5654           the packet to channel.  Affected file silcd/packet_send.c.
5655
5656         * Fixed a crash in CHANNEL_CHANGE notify handling in the client
5657           library.  Affected file lib/silcclient/client_notify.c.
5658
5659         * Added UMODE announcements.  Affected file silcd/server.c.
5660
5661 Sat Dec  1 12:52:39 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5662
5663         * Memory leak fixes in:
5664
5665           lib/silcutil/silcsockconn.c
5666           lib/silcske/silcske.c
5667           lib/silcske/groups.c
5668           lib/silccrypt/rsa.c
5669           lib/silccrypt/silcpkcs.c
5670           lib/silccore/silccommand.c
5671           lib/silccore/silcidcache.c
5672           silcd/idlist.c
5673           silcd/packet_send.c
5674           silcd/command.c
5675
5676         * ROBOdoc documented the lib/silcske/groups.h file and a
5677           bit changed the interface for better.
5678
5679 Thu Nov 29 22:12:50 EET 2001  Pekka Riikonen <priikone@silcnet.org>'
5680
5681         * Update the client entry context in the ID cache after
5682           nick change.  Affected file lib/silcclient/command.c.
5683           Fixes the CUMODE command when regaining founder privileges,
5684           and a little WHOIS problem.
5685
5686         * Fixed silc_net_gethostbyname to correctly call the
5687           inet_ntop.  Affected file lib/silcutil/silcnet.c.
5688
5689 Thu Nov 29 19:31:23 EET 2001  Pekka Riikonen <priikone@silcnet.org>'
5690
5691         * Added IPv6 support checking to the configure.in.pre, added
5692           also --enable-ipv6 option to override the check.  Affected
5693           file configure.in.pre.
5694
5695         * The silc_thread_create now calls the start function
5696           directly if threads support is not compiled in.  Removes
5697           ugly #ifdef's from generic code.  Affected files are
5698           lib/silcutil/unix/silcunixthread, win32/silcwin32thread.c.
5699
5700         * Added silc_net_gethostby[name/addr]_async to asynchronously
5701           resolve.  Affected files are lib/silcutil/silcnet.[ch].
5702
5703         * Added support for rendering IPv6 based server, client and
5704           channel IDs.  Affected file lib/silcutil/silcutil.c.
5705
5706         * Added support for creating IPv6 based server IDs.  Affected
5707           file is silcd/serverid.c.
5708
5709 Wed Nov 28 23:46:09 EET 2001  Pekka Riikonen <priikone@silcnet.org>'
5710
5711         * Added silc_net_gethostby[addr/name] into the
5712           lib/silcutil/silcnet.[ch].  Added IPv6 support to Unix network
5713           routines.  Added silc_net_is_ip[4/6].  Affected file is
5714           lib/silcutil/unix/silcunixnet.c.  All routines that take
5715           address as argument now supports both IPv4 and IPv6 addresses.
5716
5717 Mon Nov 26 18:09:48 EET 2001  Pekka Riikonen <priikone@silcnet.org>'
5718
5719         * Fixed LIST command reply sending in server.  Affected file
5720           silcd/command.c.
5721
5722         * Server now sends the kicker's client ID in the KICK notify
5723           to the kicked client.  Affected file silcd/command.c.
5724
5725         * The client library now parses the kickers client ID and
5726           UI displays it.  Affected files lib/silcclient/client_notify.c
5727           and irssi/src/silc/core/silc-channels.c, module-formats.c.
5728
5729         * Made all payload parsing function prototypes consistent.
5730           They all take now const unsigned char * and uint32 pair as
5731           the payload data instead of SilcBuffer.  Changes all around
5732           the source tree.  Other unsigned char* -> const unsigned char*
5733           changes around the tree as well.
5734
5735         * Optimized SFTP client and server packet sending not to
5736           allocate new buffer for each packet but to recycle the
5737           first allocated buffer.  Affected files are
5738           lib/silcsftp/sftp_client.c, sftp_server.c, sftp_util.[ch].
5739
5740         * Optimized the SFTP client to use SilcList instead of
5741           SilcDList for requests, because it is faster.  Affected file
5742           is lib/silcsftp/sftp_client.c.
5743
5744         * Moved the ID Payload routines from lib/silccore/silcpayload.[ch]
5745           into lib/silccore/silcid.[ch].
5746
5747           Renamed silcpayload.[ch] into silcargument.[ch].
5748
5749 Mon Nov 26 15:01:53 CET 2001  Pekka Riikonen <priikone@silcnet.org>
5750
5751         * If client entry is deleted with active key agreement
5752           session, abort the session.
5753
5754           The silc_client_abort_key_agreement now calls the completion
5755           callback with new SILC_KEY_AGREEMENT_ABORTED status.
5756
5757           Affected file lib/silcclient/silcapi.h, client_keyagr.c and
5758           idlist.c.
5759
5760 Sun Nov 25 18:01:45 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5761
5762         * Don't use __restrict in older GCC's.  Affected file is
5763           lib/silcmath/mpi/mpi-priv.h.  A patch by salo.
5764
5765         * silc_net_localhost now attempts to reverse lookup the
5766           IP/hostname.  Affected file lib/silcutil/silcnet.c.
5767
5768         * Defined <founder auth> argument to the SILC_COMMAND_JOIN
5769           command.  It can be used to gain founder privileges at
5770           the same time when joining the channel.
5771
5772           Defined that the SILC_NOTIFY_TYPE_KICKED send the
5773           kicker's client ID as well.  Updated protocol specs.
5774
5775           Defined that the server must send SILC_COMMAND_IDENTIFY
5776           command reply with error status to client who sent
5777           private message with invalid client ID.
5778
5779           Updated the protocol specification.
5780
5781         * Added silc_server_send_command_reply to send any
5782           command reply.  Affected file silcd/packet_send.[ch].
5783
5784         * Added silc_id_payload_encode_data to encode ID payload
5785           from raw ID data.  Affected file lib/silccore/silcpayload.[ch].
5786
5787         * The server now send IDENTIFY command reply with error
5788           status if client ID in private message is invalid.  Affected
5789           file silcd/packet_receive.c.
5790
5791         * Save the server key file with server's IP address in
5792           the filename instead of hostname.  The affected file is
5793           irssi/src/silc/core/client_ops.c.
5794
5795 Sat Nov 24 20:08:22 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5796
5797         * Typo fixes in irssi/src/fe-common/silc/module-formats.c.
5798           A patch by Sunfall.
5799
5800         * Added libtool support for compiling shared objects in
5801           lib/silcsim.  Affected file configure.in.pre and
5802           lib/silcsim/Makefile.am.  Original patch by cras.
5803
5804 Fri Nov 23 23:30:59 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5805
5806         * Pid file configuration, and server's config file fixes
5807           patch by toma.  Updated CREDITS file.
5808
5809 Sun Nov 18 01:34:41 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5810
5811         * Fixed silc_client_channel_message to not try to decrypt
5812           the message twice if it resolved the destination client
5813           information.  This could cause of dropping one channel
5814           message.  Affected file lib/silcclient/client_channel.c.
5815
5816 Wed Nov 14 23:44:56 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5817
5818         * Added silc_client_run_one into lib/silcclient/silcapi.h and
5819           lib/silcclient/client.c. This function is used when the SILC
5820           Client is run under some other scheduler, or event loop or
5821           main loop.  On GUI applications, for example this may be
5822           desired to used to run the client under the GUI application's
5823           main loop.  Typically the GUI application would register an
5824           idle task that calls this function multiple times in a second
5825           to quickly process the SILC specific data.
5826
5827 Wed Nov 14 19:16:52 CET 2001  Johnny Mnemonic <johnny@themnemonic.org>
5828
5829         * Fixed silc_server_drop() for dropping the supplementary
5830           groups as well, this could cause a security hole on some
5831           systems.
5832
5833 Wed Nov 14 16:22:25 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5834
5835         * __pid_t -> pid_t in lib/silccrypt/silcrng.c.  A patch by
5836           johnny.
5837
5838         * Write PID file after dropping privileges.  Added -F option
5839           to run server on foreground.  A patch by debolaz.
5840           Affected files silcd/server.c, silcd/silcd.c.
5841
5842         * Fixed MOTD to return the MOTD file server name.  Affected
5843           file silcd/command.c.
5844
5845         * Added INFO command reply handling to the Irssi SILC Client.
5846           Affected file irssi/src/silc/core/client_ops.c.
5847
5848 Wed Nov 14 00:18:08 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5849
5850         * Fixed the silc_idcache_list_* routines to really support
5851           the dynamic list.  Fixes a crash.  Affected file is
5852           lib/silccore/silcidcache.c.
5853
5854         * Fixed the LIST command reply to really call LIST command's
5855           pending callbacks.  Affected file silcd/command_reply.c.
5856
5857 Tue Nov 13 00:49:17 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5858
5859         * Update conn->local_entry->nickname after giving NICK
5860           command.  Affected file lib/silcclient/command.c.
5861
5862 Sun Nov 11 23:43:02 PST 2001  Brian Costello <bc@wpfr.org>
5863
5864         * Added the [pid] option to the silcd configuration file
5865
5866           Affected files: serverconfig.[ch] and silcd.c
5867
5868 Sun Nov 11 23:56:39 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5869
5870         * Save fingerprint in WHOIS command reply in server.
5871           Affected file silcd/command_reply.c.
5872
5873         * Fixed NICK commands pending callback registration.
5874           Affected file lib/silcclient/command.c.
5875
5876 Sun Nov 11 10:49:10 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5877
5878         * Use ++server->cmd_ident when sending commands in server,
5879           instead of random number.  Affected file silcd/command.c.
5880
5881         * Fixed GETKEY command reply to call actually GETKEY pending
5882           command callbacks.  Affected file silcd/command_reply.c.
5883
5884         * A bit stricter check for nicknames.  Check for same nickname
5885           in NICK command also.  Affected file silcd/command.c.
5886
5887         * Do not call INFO command everytime client ID changes, only
5888           during first connecting.  Affected file lib/silcclient/client.c.
5889
5890         * Set the new nickname only after successful command reply for
5891           NICK command is returned by server.  Affected file
5892           lib/silcclient/command.c.
5893
5894         * Remove nicknames from nicklist during server_signoff notify.
5895           Should fix /NAMES bit more.  The affected file is
5896           irssi/src/silc/core/silc-channels.c.
5897
5898         * Added `fingerprint' field to the SilcIDListData in the
5899           silcd/idlist.h to hold the fingerprint of the client's
5900           public key.
5901
5902           Send the fingerprint of the client's public key in WHOIS
5903           command reply.
5904
5905           Affected files silcd/command.c, and silcd/idlist.[ch].
5906
5907         * Added silc_fingerprint into lib/silcutil/silcutil.[ch] to
5908           create fingerprint from given data.
5909
5910         * Show the fingerprint of the client's public key in WHOIS.
5911           Affected files irssi/src/module-formats.[ch] and
5912           irssi/src/silc/core/client_ops.c.
5913
5914         * Format the multiple same nicknames also during JOIN and
5915           NICK_CHANGE notifys.  Affected file is
5916           lib/silcclient/client_notify.c.
5917
5918         * Do not print error on screen for invalid private message
5919           payload since it can come if someone is sending private
5920           messages with wrong key.  Affected file
5921           lib/silccore/silcprivate.c.
5922
5923         * Fixed multiple concurrent /PING crash.  Affected file
5924           lib/silcclient/command.c.
5925
5926         * Changed the wrong ID encoding.  All IP addresses must be
5927           in MSB first order in encoded format.  They were encoded
5928           wrong and was in LSB format.  Affected files are
5929           silcd/serverid.c, lib/silcutil/silcutil.c.
5930
5931         * Remove silc_net_addr2bin_ne from lib/silcutil/silcnet.[ch].
5932
5933         * Call the `connect' client operation through the scheduler
5934           in case of error.  Affected file lib/silcclient/client.c.
5935
5936         * Call the `failure' client operation even if the error
5937           occurred locally during a protocol.  Affected file is
5938           lib/silcclient/protocol.c.
5939
5940         * Added support of sending LIST command to router from normal
5941           server.  This way normal server can get list of all channels
5942           in the network too.  Fixed the channel list sending in the
5943           server too.  Affected files are silcd/command.c, and
5944           silcd/command_reply.[ch].
5945
5946         * Added silc_server_update_channels_by_server and
5947           silc_server_remove_channels_by_server.  They are used during
5948           disconnection of primary router and in backup router protocol.
5949           Affected file silcd/server_util.[ch], silcd/server.c and
5950           silcd/server_backup.c.
5951
5952         * Fixed channel adding to global list in IDENTIFY command
5953           reply in server.  Affected file silcd/command_reply.c.
5954
5955 Sat Nov 10 21:39:22 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5956
5957         * If the incoming packet type is REKEY or REKEY_DONE process
5958           that packet always synchronously.  Fixes yet another MAC
5959           failed error on slow (dialup) connections.  Affected file
5960           lib/silcclient/client.c and silcd/server.c.
5961
5962 Thu Nov  8 22:21:09 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5963
5964         * Call check_version SKE callback for initiator too.  Affected
5965           file lib/silcske/silcske.c.
5966
5967         * Implemented fix for security hole found in the SKE that was
5968           fixed in the specification few days back; the initiator's
5969           public key is now added to the HASH value computation.
5970           Added backwards support for the old way of doing it too, for
5971           old clients and old servers.  Affected file is
5972           lib/silcske/silcske.c.
5973
5974         * Enabled mutual authentication by default in SKE.  If initiator
5975           is not providing mutual authentication the responder will
5976           force it.  This will provide the proof of posession of the
5977           private key for responder.  The affected files are
5978           lib/silcclient/protocol.c and silcd/protocol.c.
5979
5980         * Do not cache anymore the server's public key during SKE.
5981           We do mutual authentication so the proof of posession of
5982           private key is done, and if the server is authenticated in
5983           conn auth protocol with public key we must have the public
5984           key already.  Affected file silcd/protocol.c.
5985
5986         * Added new global debug variable: silc_debug_hexdump.  If
5987           it is set to TRUE SILC_LOG_HEXDUMP will be printed.  Affected
5988           file lib/silcutil/silclog.[ch].
5989
5990         * Fixed compilation warning due to char * -> const char *.
5991           Affected files lib/silcutil/silcnet.h, and
5992           lib/silccore/silcauth.[ch].
5993
5994 Wed Nov  7 20:43:03 EET 2001  Pekka Riikonen <priikone@silcnet.org>
5995
5996         * Fixed CMODE command when new channel key was created.  If
5997           the creation failed the old key was removed.  Next time giving
5998           same command would crash the server since the old key was
5999           freed already.  Affected file silcd/command.c.
6000
6001         * Fixed the silc_server_announce_get_channels to not crash
6002           on reconnect.  Affected file silcd/server.c.
6003
6004 Wed Nov  7 17:15:07 EET 2001  Pekka Riikonen <priikone@silcnet.org>
6005
6006         * Added silc_log_set_debug_string function to set a regex
6007           string to match for debug output.  Only the function names,
6008           or filenames matching the given debug string is actually
6009           printed.  This way it is possible to filter out those debug
6010           strings that user is not interested in.
6011
6012           Fixed a bug in silc_string_regexify.
6013
6014           Affected files lib/silcutil/silclog.[ch], and
6015           lib/silcutil/unix/silcunixutil.c.
6016
6017         * Changed the -d options in both server and Irssi SILC client
6018           to take the debug string as argument.  Affected files
6019           silcd/silcd.c and irssi/src/silc/core/silc-core.c.
6020
6021 Tue Nov  6 21:31:54 EET 2001  Pekka Riikonen <priikone@silcnet.org>
6022
6023         * Added silc_hash_babbleprint to create a Bubble Babble
6024           Encoded fingerprint.  The encoding is developed by Antti
6025           Huima (draft-huima-babble-01.txt), and it creates human
6026           readable strings out of binary data.  Affected file
6027           lib/silccrypt/silchash.[ch].
6028
6029         * Print the babble print now in addition of fingerprint as well
6030           in Irssi SILC client.  Affected files are
6031           irssi/src/fe-common/silc/module-formats.[ch],
6032           irssi/src/fe-common/silc/core/client_ops.c.
6033
6034 Sun Nov  4 23:37:28 EET 2001  Pekka Riikonen <priikone@silcnet.org>
6035
6036         * Fixed a security problem found in SKE.  The initiator's
6037           public key too is now added to the HASH hash value creation
6038           which is signed by the responder to create the SIGN value.
6039           This will prevent anyone in the middle to lie to the responder
6040           about the initiator's public key.  If this is done now, the
6041           man in the middle will get caught.  Updated the protocol
6042           specification.
6043
6044 Sun Nov  4 11:43:53 EET 2001  Pekka Riikonen <priikone@silcnet.org>
6045
6046         * Better installation directory handling.  Configure module
6047           paths and other paths automatically to example_silc* files
6048           in doc/.  A patch by toma.
6049
6050         * Fixed compiler warning from MPI library, and from SILC RNG.
6051           A patch by johnny.
6052
6053         * Added SILC_SERVER_PID_FILE to define the pid file for server.
6054           It can be configured with ./configure.  A patch by toma.
6055
6056 Sat Nov  3 23:48:23 EET 2001  Pekka Riikonen <priikone@silcnet.org>
6057
6058         * Find correct make to use in prepare-clean.  A patch by
6059           toma.  Affected file prepare-clean.
6060
6061 Sat Nov  3 22:04:00 PST 2001  Brian Costello <bc@mksecure.com>
6062
6063         * Added irssi variables use_auto_addr, auto_bind_ip,
6064           auto_bind_port and auto_public_ip.
6065
6066         * Changed the interface for silc_client_send_key_agreement
6067           in lib/silcclient/silcapi.h
6068
6069         Affected files:
6070
6071          irssi/src/silc/core/silc-core.c
6072          irssi/config
6073          lib/silcclient/silcapi.h
6074          irssi/src/silc/core/silc-channels.c
6075          lib/silcclient/client_keyagr.c
6076          irssi/docs/help/key
6077
6078 Sat Nov  3 17:48:55 EET 2001  Pekka Riikonen <priikone@silcnet.org>
6079
6080         * Added silc_pkcs_public_key_compare to compare two
6081           public keys.  Affected file lib/silccrypt/silcpkcs.[ch].
6082
6083         * Check that the client who set the founder mode on the
6084           channel is the same client that is giving the founder
6085           mode to itself.  It is done by comparing the saved public
6086           key (it is saved even in the authentication is passphrase).
6087           Affected file silcd/command.c.
6088
6089 Fri Nov  2 18:52:08 EST 2001  Pekka Riikonen <priikone@silcnet.org>
6090
6091         * Do not process packet for disconnected socket connection.
6092           Affected file lib/silccore/silcpacket.c.
6093
6094         * Process the DISCONNECT packet through scheduler in the
6095           client library.  Affected file lib/silcclient/client.c.
6096
6097         * Fixed the silc_client_packet_parse to not to increase
6098           the packet sequence number if the conn->sock and the
6099           current socket connection is not same.  This can happen
6100           for example during key agreement when the conn includes
6101           multiple socket connections (listeners).  Affected file
6102           lib/silcclient/client.c.
6103
6104         * The sender of the file transfer request now provides also
6105           the pointer (listener) for the key exchange protocol.  If
6106           the listener cannot be created then it sends empty key
6107           agreement and lets the receiver provide the listener.
6108
6109           Added `local_ip' and `local_port' arguments to the
6110           silc_client_file_send.  If they are provided they are used,
6111           if not then it will attempt to find local IP address, if
6112           not found or bind fails then the remote client will provide
6113           the listener.
6114
6115           Affected files are lib/silcclient/client_ftp.c and
6116           lib/silcclient/silcapi.h.
6117
6118         * Extended the FILE SEND command to support defining the
6119           local IP and port for key exchange listener.  They are
6120           optional.  Affected file irssi/src/silc/core/silc-servers.c.
6121
6122 Thu Nov  1 22:10:07 EST 2001  Pekka Riikonen <priikone@silcnet.org>
6123
6124         * Defined to WHOIS command reply the sending of fingerprint
6125           of the client's public key (if the proof of posession of the
6126           corresponding private key is verified by the server).
6127           Updated to the protocol specification.
6128
6129         * Added support of receiving the client's public key's
6130           fingerprint in command reply in client library.  Affected
6131           file is lib/silcclient/command_reply.c, and
6132           lib/silcclient/idlist.[ch].
6133
6134 Thu Nov  1 18:06:12 EST 2001  Pekka Riikonen <priikone@silcnet.org>
6135
6136         * Do not send over 128 chars long nickname to the server
6137           in NICK command.  Affected file lib/silcclient/command.c.
6138
6139         * Do not send over 256 chars long channel names to the server
6140           in JOIN command.  Affected file lib/silcclient/command.c.
6141
6142 Tue Oct 30 22:48:59 EST 2001  Pekka Riikonen <priikone@silcnet.org>
6143
6144         * Assure that silc_server_close_connection cannot be called
6145           twice for same socket context.  Affected file is
6146           silcd/server.c.
6147
6148 Tue Oct 30 16:58:14 EST 2001  Pekka Riikonen <priikone@silcnet.org>
6149
6150         * Send error message to application if opening file for
6151           writing during file transfer fails.  Affected file is
6152           lib/silcclient/client_ftp.c.
6153
6154           Remove all file transfer sessions for a client that we're
6155           removing from ID cache.
6156
6157           Affected file is lib/silcclient/client_ftp.c.
6158
6159         * Fixed silc_net_addr2bin to return correct address.  Affected
6160           file lib/silcutil/[unix/win32]/silc[unix/win32]net.c.
6161
6162         * Fixed file transfer session removing on signoff notify.
6163           Affected file irssi/src/silc/core/silc-servers.c.
6164
6165         * Added the SilcClientFileError to be returned in the monitor
6166           callback.  Added NO_SUCH_FILE and PERMISSION_DENIED errors.
6167           Affected file lib/silcclient/silcapi.h.
6168
6169 Mon Oct 29 17:43:04 EST 2001  Pekka Riikonen <priikone@silcnet.org>
6170
6171         * Fixed a crash in silc_client_ftp_free_sessions and
6172           silc_client_ftp_session_free_client.  Affected file
6173           lib/silcclient/client_ftp.c.
6174
6175         * Added `disabled' field in the SilcChannelEntry in the server
6176           to indicate if the server entry is disabled.  Affected file
6177           silcd/idlist.h, silcd/command[_reply].c.
6178
6179         * SILC server adds now /var/run/silcd.pid everytime it is
6180           started.  Affected file silcd/silcd.c.
6181
6182         * Added silc_server_packet_send_clients to send a packet to
6183           the provided table of client entries.  Affected file
6184           silcd/packet_send.[ch].
6185
6186         * Fixed a crash in client resolving in client_prvmsg.c in
6187           client library.  Affected file lib/silcclient/client_prvmsg.c.
6188
6189         * Do not actually remove the client directly from ID cache
6190           during SERVER_SIGNOFF, but invalidate it.  This way we
6191           preserve the WHOWAS info for the client.  Affected file
6192           silcd/server_util.c.
6193
6194         * Fixed SERVER_SIGNOFF notify handling in the server.  The
6195           server is now able to process incoming SERVER_SIGNOFF notify
6196           for a server that it doesn't even know about.  It will remove
6197           the clients provided in the notify.  Affected file
6198           silcd/packet_receive.c.
6199
6200         * Check for partial packet in data queue after every packet that
6201           was found from the queue.  Return and wait for more data if
6202           there is partial data in queue.  Affected file is
6203           lib/silccore/silcpacket.c.
6204
6205 Sun Oct 28 18:46:27 EST 2001  Pekka Riikonen <priikone@silcnet.org>
6206
6207         * Added SilcClietFileError enum to indicate error in
6208           file transfer.  Added SILC_CLIENT_FILE_MONITOR_KEY_AGREEMENT
6209           and SILC_CLIENT_FILE_MONITOR_ERROR new monitor statuses.
6210           Affected files lib/silcclient/silcapi.h and
6211           lib/silcclient/client_ftp.c.
6212
6213         * Check that newsize in silc_buffer_realloc is larger than
6214           the old buffer's size.  Affected file lib/silcutil/silcbufutil.h.
6215
6216         * Added better monitor of file transfers.  It now monitors
6217           key agreement protocol during the file transfer too.  Added
6218           error reporting too.  Affected files
6219           irssi/src/silc/core/silc-servers.c,
6220           irssi/src/fe-common/silc/module-formats.[ch].
6221
6222         * Wrote a help file for FILE command.
6223
6224         * Added silc_rng_global_get_byte_fast to get not-so-secure
6225           random data as fast as possible.  Random data is read from
6226           /dev/urandom if available and from the SILC RNG if not
6227           available.  It is used in padding generation.  Affected file
6228           lib/silccrypt/silcrng.[ch].
6229
6230         * All packets in client library are now processed synchronously.
6231           Optimized packet processing a lot.  Affected file
6232           lib/silcclient/client.c.
6233
6234         * All server connection packets are processing synchronously
6235           now in server, to optimize packet processing.  Affected file
6236           silcd/server.c.
6237
6238         * Include files are installed now only in Toolkit distribution
6239           if make install is given.  Affected files: all Makefile.am's.
6240
6241 Thu Oct 25 22:44:06 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6242
6243         * Assure that silc_client_notify_by_server_resolve does not
6244           resolve the client information multiple times.  If it cannot
6245           be found by the first it cannot be found at all.  Affected
6246           file lib/silcclient/client_notify.c.
6247
6248         * Fixed WHOWAS command reply calling.  Affected file
6249           lib/silcclient/command_reply.c.
6250
6251         * Removed all references to silc_idlist_get_client from the
6252           Irssi SILC client since that call is internal call used by
6253           the library.  The Irssi SILC client will use now client
6254           retrieval functions found in silcapi.h.
6255
6256         * Fixed a bug in resolving nickname info before sending
6257           private message.  It used freed memory.  Affected file
6258           irssi/src/silc/core/silc-servers.c.
6259
6260 Thu Oct 25 19:04:49 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6261
6262         * Assure my_channels statistics cannot go negative in server.
6263           Affected files silcd/server.c, silcd/server_util.c.
6264
6265 Wed Oct 24 19:53:05 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6266
6267         * Upgraded dotconf 1.0.2 to 1.0.6 in lib/dotconf.
6268
6269 Tue Oct 23 13:51:19 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6270
6271         * Win32 Toolkit changes.  Affected files
6272           win32/silc.dsw, win32/libsilc/libsilc.def,
6273           win32/libsilcclient/libsilc.def,
6274           lib/silcutil/silcutil.c, and
6275           lib/sftp/sftp_fs_memory.c.
6276
6277 Mon Oct 22 16:35:05 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6278
6279         * Added silc_net_localip to return local host's IP address.
6280           Affected file lib/silcutil/silcnet.[ch].
6281
6282         * If key exchange or rekey protocol is active for a connection
6283           parse all packets syncronously since there might be packets
6284           in packet queue that we are not able to process without first
6285           processing packets before them.  Affected file silcd/server,
6286           lib/silcclient/client.c.
6287
6288         * SilcPacketParserCallback now returns TRUE or FALSE to indicate
6289           whether library should continue processing the packet.
6290           Affected file lib/silccore/silcpacket.h.
6291
6292         * Added SilcSFTPMonitor callback, SilcSFTPMonitors and
6293           SilcSFTPMonitorData to SFTP server to monitor various
6294           SFTP client requests.  Affected file lib/silcsftp/silcsftp.h,
6295           lib/silcsftp/sftp_server.c.
6296
6297         * Added silc_file_size to return file size.  Affected file
6298           lib/silcutil/silcutil.[ch].
6299
6300         * Implemented the file transfer support for the client library.
6301           Added preliminary support for simple client to client one-file
6302           transmission.  Affected file lib/silcclient/client_ftp.c,
6303           lib/silccilent/client.[ch].
6304
6305         * Added new local command FILE to the Irssi SILC Client.
6306           It is used to perform the file transfer.  It has subcommands
6307           SEND, RECEIVE, SHOW and CLOSE.  Affected files
6308           irssi/src/silc/core/client_ops.c,
6309           irssi/src/silc/core/silc-server.[ch].
6310
6311 Mon Oct 22 12:50:08 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6312
6313         * Relay the SILC_PACKET_FTP in the server.  Affected files
6314           silcd/server.c and silcd/packet_receive.c.
6315
6316 Sun Oct 21 20:21:02 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6317
6318         * Renamed silc_file_read and silc_file_write to functions
6319           silc_file_readfile and silc_file_writefile.  Added function
6320           silc_file_open and silc_file_close.  Affected files
6321           lib/silcutil/silcutil.[ch].
6322
6323 Thu Oct 18 20:58:13 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6324
6325         * Resolve the client info when received private message or
6326           channel message for a client which nickname we don't know.
6327           Affected files lib/silcclient/client_prvmsg.c and
6328           lib/silcclient/client_channel.c.
6329
6330         * Do not crash in /KEY if client is not connected.  Affected
6331           file irssi/src/silc/core/silc-channels.c.
6332
6333         * Added SilcClientStatus field to the SilcClientEntry in the
6334           lib/silcclient/idlist.h.
6335
6336           Added SILC_CLIENT_STATUS_RESOLVING to mark that the entry
6337           is incomplete and is being resolved, it won't be resolved
6338           twice.
6339
6340           Make sure also that USERS command reply does not resolve
6341           twice information.  Affected file is
6342           lib/silcclient/command_reply.c.
6343
6344           Make sure that silc_client_get_clients_by_list does not
6345           resolve twice same information.
6346
6347         * Check for valid client->id in the silc_server_free_client_data.
6348           Affected file silcd/server.c.
6349
6350         * Fixed /GETKEY nick@server not to crash if the server entry
6351           is not found.  Affected file lib/silcclient/command.c.
6352
6353         * Fixed the silc_server_check_cmode_rights to check the
6354           requested modes correctly.  Affected file silcd/command.c.
6355
6356 Thu Oct 18 12:10:22 CEST 2001  Pekka Riikonen <priikone@silcnet.org>
6357
6358         * Better checks for non-printable chars in nick added.
6359           Affected file silcd/command.c.
6360
6361 Thu Oct 18 09:18:58 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6362
6363         * Call the silc_server_udpate_servers_by_server in the
6364           primary router that comes back online in the backup resuming
6365           protocol.  Otherwise it routes packets wrong.  Affected file
6366           silcd/server_util.[ch], silcd/server_backup.c.
6367
6368 Wed Oct 17 16:51:18 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6369
6370         * Added SILC_STR_UI8_[N]STRING[_ALLOC] formats to the
6371           lib/silcutil/silcbuffmt.[ch].
6372
6373         * Redefined the SILC packet header to include the padding
6374           length.  Affected file lib/silccore/silcpacket.[ch].
6375
6376         * Added SILC_PACKET_PADLEN_MAX macro to return the padding
6377           length for maximum padding up to 128 bytes).  Affected
6378           file lib/silccore/silcpacket.h.
6379
6380         * Removed all backwards support for old 0.5.x MAC thingies.
6381           The SILC packet header change makes it impossible to be
6382           backwards compatible.
6383
6384         * Send the ENDING packet with timeout in the backup resuming
6385           protocol.  This is to assure that all routers has connected
6386           to the primary router.  Affected file silcd/server_backup.c.
6387
6388         * Changed the RNG to take the first IV from random data.  It
6389           used to take it from zero actually.  Changed the RNG also
6390           to use /dev/urandom during session.  /dev/random is used
6391           in initialization.  Affected file lib/silccrypt/silcrng.[ch].
6392
6393 Tue Oct 16 20:45:49 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6394
6395         * Changed the SILC packet header to have the first two bytes
6396           (the packet length) encrypted.  Affected files aroung the
6397           code tree, lib/silccore/silcpacket.[ch].  Removed the
6398           SilcPacketCheckDecrypt callback.  It is not needed anymore
6399           since the silc_packet_receive_process will determine now
6400           whether the packet is normal or special.
6401
6402         * Implemented the unidirectional MAC keys.  Affected files
6403           lib/silcske/silcske.c, silcd/protocol.c and
6404           lib/silcclient/protocol.c.
6405
6406         * Implemented the packet sequence number to the MAC computation.
6407           Affected files lib/silccore/silcpacket.c, silcd/protocol.c,
6408           silcd/packet_send.c, silcd/server.c, lib/silcclient/client.c,
6409           lib/silcclient/protocol.c.
6410
6411 Mon Oct 15 17:42:55 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6412
6413         * Allow backup router to announce servers.  All servers
6414           announced by backup router are added to the global list
6415           automatically.  Update hte server's socket to our primary
6416           router also when backup router announces a server.
6417           Affected file silcd/packet_receive.c.
6418
6419         * Do not update the client->router in the function
6420           silc_server_udpate_clients_by_server if the client is on
6421           global list.  We might fail to find any specific server
6422           for locally connected clients and local cell clients.  They
6423           should still use the `from' and not `to' as client->router.
6424           This fixes backup router resuming protocol.  Affected file
6425           silcd/server_util.c.
6426
6427         * Decrease channel statistics count only if the channel
6428           deletion worked.  Affected files are silcd/server.c and
6429           silcd/server_util.c.
6430
6431         * Added silc_server_update_servers_by_server to update origin
6432           of all server entries.  Used during backup router protocol.
6433           Affected files silcd/server_util.[ch], silcd/server.c. and
6434           silcd/backup_router.c.
6435
6436         * ROBODoc documented the lib/silccrypt/silchmac.h.  Added new
6437           function silc_hmac_init, silc_hmac_update, silc_hmac_final,
6438           silc_hmac_get_hash and silc_hmac_get_name.  Affected file
6439           lib/silccrypt/silchmac.c.
6440
6441 Sun Oct 14 18:28:22 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6442
6443         * Assure that router cannot reroute the same channel message
6444           to the sender.  Affected file silcd/packet_receive.c.
6445
6446 Sat Oct 13 12:46:18 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6447
6448         * Made better checks that the channel message is not sent
6449           to the router it came from.  Affected file is
6450           silcd/packet_send.c.  Fixed memory leak too.
6451
6452         * Announce informations for incoming router connection, but
6453           only after checking if it is replaced by backup router.
6454           Affected file silcd/packet_receive.c.
6455
6456 Fri Oct 12 18:37:24 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6457
6458         * Fixed the backup resuming protocol to work in multiple
6459           router environment.  Affected file silcd/server_backup.c.
6460
6461         * Route packet only to one router in the function
6462           silc_server_packet_send_to_channel.  Affected file is
6463           silcd/packet_send.c.
6464
6465         * Fixed silc_server_send_notify_dest to set the broadcast
6466           flag.  Fixed the silc_server_send_notify_topic to actually
6467           send the TOPIC_CHANGE notify and not SERVER_SIGNOFF notify.
6468           Affected file silcd/packet_send.c.
6469
6470         * Changed the SFTP Filesystem interface.  Changed the
6471           SilcSFTPFilesystemStruct to SilcSFTPFilesystemOps to include
6472           the filesystem operation function.  The SilcSFTPFilesystem
6473           is now a context that is allocated by all filesystem allocation
6474           functions and it already includes the operations structure
6475           and filesystem specific context.  It is given as argument
6476           now to the silc_sftp_server_start.  This made the interface
6477           a bit cleaner.  Affected file lib/silcsftp/silcsftp[_fs].h,
6478           lib/silcsftp/sftp_fs_memory.c and sftp_server.c.
6479
6480 Thu Oct 11 22:19:26 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6481
6482         * Changed the backup router adding and getting interfaces
6483           in the server.  The router that will be replaced by the
6484           specified backup router is now sent as argument.  Affected
6485           files silcd/serverconfig.[ch], silcd/backup_router.[ch], and
6486           silcd/server.c.
6487
6488         * Added silc_net_addr2bin_ne to return the binary form of
6489           the IP address in network byte order.  Affected files
6490           lib/silcutil/[unix/win32].silc[unix/win32]net.[ch].
6491
6492 Thu Oct 11 12:14:19 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6493
6494         * Check for existing server ID in silc_server_new_server
6495           and in silc_server_connect_to_router_final and remove the
6496           old entry if it exists.  Affected file silcd/packet_receive.c,
6497           silcd/server.c.
6498
6499         * Send the channel message always to only one router, either
6500           in upstream or downstream.  Affected file is
6501           silcd/packet_send.c.
6502
6503 Tue Oct  9 17:45:43 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6504
6505         * Wrote the definition of the backup resuming protocol to the
6506           protocol specification.
6507
6508         * Removed one redundant channel key generation from normal
6509           server during joining procedure.  Removed one redundant
6510           channel key sending from server to router during joining
6511           procedure.  Affected file silcd/command.c.
6512
6513         * Made minor bugfixes to the backup router resuming protocol.
6514           Affected file silcd/server_backup.c, server.c.
6515
6516 Mon Oct  8 16:47:42 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6517
6518         * Added --disable-asm configuration option.  Affected files
6519           configure.in.pre, lib/silcmath/mpi/configure.in.  A patch
6520           by salo.
6521
6522         * Implemented the backup resuming protocol that is used to
6523           resume the primary router position in the cell after the
6524           primary router comes back online.  Affected files
6525           silcd/server_backup.[ch], silcd/server, silcd/packet_receive.c,
6526           and silcd/server_util.[ch].
6527
6528 Sun Oct  7 12:29:25 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6529
6530         * Sleep two (2) seconds after sending QUIT command to server.
6531           Affected file lib/silcclient/command.c.
6532
6533         * Assure that if outgoing data buffer is pending do not force
6534           send any data.  Affected file silcd/packet_send.c.
6535
6536         * Assure that if outgoing data buffer is pending do not force
6537           send any data.  Affected file lib/silcclient/client.c.
6538
6539         * Implemented the backup router support when the primary router
6540           goes down.  The servers and routers can now use the backup
6541           router as new primary router without loosing connectivity.
6542
6543 Sat Oct  6 21:18:54 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6544
6545         * Added new SILC_IDLIST_STATUS_DISABLED flag for entries
6546           in the server to indicate disabled entry.  All data read
6547           from the connection will be ignored and no data is sent
6548           for entry that is disabled.  Affected files are
6549           silcd/idlist.h, silcd/server.c.
6550
6551 Fri Oct  5 00:03:29 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6552
6553         * Created SFTP client and server test programs in the
6554           lib/silcsftp/tests directory.
6555
6556 Wed Oct  3 23:31:42 EDT 2001  Pekka Riikonen <priikone@silcnet.org>
6557
6558         * Implemented memory filesystem (virtual filesystem) for
6559           SFTP server.  Affected file lib/silcsftp/silcsftp_fs.h,
6560           sftp_fs_memory.c.
6561
6562 Sun Sep 30 22:10:57 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6563
6564         * Implemented the SFTP (SSH File Transfer Protocol) to the
6565           lib/silcsftp.  It includes SFTP client and SFTP server
6566           implementations.
6567
6568 Sun Sep 30 10:35:44 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6569
6570         * Moved lib/silccore/silcprotocol.[ch] to the
6571           lib/silcutil library.
6572
6573         * Added silc_buffer_format_vp and silc_buffer_unformat_vp to
6574           take variable argument list pointer as argument.  Affected
6575           file lib/silcutil/silcbuffmt.[ch].
6576
6577         * Added silc_buffer_set function that is used to set data
6578           to a SilcBuffer that is not allocated at all (SilcBufferStruct).
6579           Affected file lib/silcutil/silcbuffer.h.
6580
6581         * Changed various routines in the core library to use the new
6582           silc_buffer_set instead of allocating new buffer only for
6583           temporary purposes.
6584
6585         * Added 64-bit value formatting and unformatting support to the
6586           silc_buffer_[un]format routines.  Affected file is
6587           lib/silcutil/silcbuffmt.[ch].
6588
6589           Added also 64-bit macros: SILC_GET64_MSB and SILC_PUT64_MSB,
6590           to includes/bitmove.h.
6591
6592 Fri Sep 28 21:30:10 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6593
6594         * Fixed channel user mode saving in client library.  Affected
6595           file lib/silcclient/command[_reply].c.
6596
6597 Thu Sep 27 22:52:30 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6598
6599         * Defined the file transfer to the SILC Protocol.  Added
6600           new packet type SILC_PACKET_FTP and defined File Transfer
6601           Payload.  The mandatory file transfer protocol is SFTP
6602           (SSH File Transfer Protocol).  Affected file in addition
6603           of the internet draft is lib/silccore/silcpacket.h.
6604
6605         * Deprecated the SILC_PACKET_CELL_ROUTERS and defined new
6606           packet SILC_PACKET_RESUME_ROUTER instead.  The new packet
6607           is used as part of backup router protocol when the primary
6608           router of the cell is back online and wishes to resume
6609           the position as primary router.
6610
6611         * Redefined the MAC generation keys in the protocol.  The
6612           same key is not used anymore in both direction.  Both
6613           direction will now use different keys for sending and
6614           receiving.  This fixes a potential security flaw.  This
6615           change causes incompatibilities in the protocol.
6616
6617         * Redefined also the MAC computation from the packet.
6618           An packet sequence number is now added to the MAC
6619           computation.  This prevents possible replay attacks against
6620           the protocol.  This change too causes incompatibilities
6621           in the protocol.
6622
6623           Added `sequence' field to the SilcPacketContext to hold
6624           the current sequence number for the packet.
6625
6626 Wed Sep 26 20:15:22 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6627
6628         * Added `created' field to the SilcIDListData in the file
6629           silcd/idlist.h to indicate the time when the entry was
6630           created.
6631
6632         * Added `created' field to the SilcChannelEntry too.  Affected
6633           file silcd/idlist.h.
6634
6635         * Added `creation_time' aguments to all the announcement functions
6636           in the server.  If it is provided then only the entries that
6637           was created after the provided time frame are actually
6638           announced.  Affected file silcd/server.[ch].
6639
6640         * The protocol says that the Channel ID's IP address must be
6641           based on the router's IP address.  Added check for this in
6642           the silc_server_new_channel when processing incoming New Channel
6643           Payload.  Affected file silcd/packet_receive.c.
6644
6645         * Print out the correct version with --version in SILC client.
6646           Affected file irssi/src/silc/core/silc-core.c.
6647
6648 Mon Sep 24 17:19:00 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6649
6650         * Fixed WHOWAS command to check for completnes of the client
6651           entry always, not just when the command is coming from client.
6652           Affected file silcd/command.c.
6653
6654         * Added new function silc_server_packet_queue_purge to purge the
6655           outgoing data queue to the network.  After the function returns
6656           it is guaranteed that the outgoing packet queue is empty.
6657           Affected file silcd/packet_send.[ch].
6658
6659         * Purge the outgoing packet queue in the rekey protocol's final
6660           callback to assure that all rekey packets go to the network
6661           before quitting the protocol.  Affected file silcd/server.c.
6662
6663         * Added silc_client_packet_queue_parse as similar function as
6664           in server to the client library.  The affected file is
6665           lib/silcclient/client.c.
6666
6667 Sun Sep 23 15:15:53 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6668
6669         * Splitted silcd/server.c and created silcd/server_util.[ch]
6670           for utility functions.
6671
6672         * Added new socket flag SILC_SF_DISABLED to indicate that the
6673           connection is open but nothing can be sent to or received from
6674           the connection.  Affected file lib/silcutil/silsockconn.[ch].
6675           The checking for disabled socket is checked in the low level
6676           silc_socket_write and silc_socket_read functions.
6677
6678 Thu Sep 20 23:11:28 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6679
6680         * Allow only nicknames and channel names that fits into the
6681           7-bit unsigned char ASCII set.  Affected file silcd/command.c.
6682
6683 Thu Sep 20 18:04:12 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6684
6685         * When processing JOIN command reply in server check that if
6686           the channel exists in our global list we'll move it the local
6687           list.  Affected file silcd/command_reply.c.
6688
6689         * Fixed the check whether client is joined on the channel already
6690           in JOIN command.  Affected file lib/silcclient/command.c.
6691
6692         * Fixed the JOIN command reply to check whether the channel
6693           already exists.  Affected file lib/silcclient/command_reply.c.
6694
6695 Wed Sep 19 22:58:32 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6696
6697         * Added silc_ske_status_string to map the SKE error numbers
6698           to readable strings.  The affected files are
6699           lib/silcske/silcske[_status].[ch].
6700
6701 Tue Sep 18 22:50:41 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6702
6703         * Do not show the private channels on the WHOIS channel list
6704           as it is not allowed by the protocol.  The affected file is
6705           silcd/server.c.
6706
6707 Sun Sep 16 12:32:58 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6708
6709         * Assure that the packet length digged from the actual packet
6710           is something sensible in the silc_packet_decrypt_rest_special
6711           in lib/silccrypt/silcpacket.c.
6712
6713         * Free and NULL the allocated pointer in silc_hmac_alloc if
6714           the HMAC allocation fails.  The affected file is
6715           lib/silccrypt/silchmac.c.
6716
6717         * Print the selected security properties to the log files in
6718           the server.  Affected file silcd/protocol.c.
6719
6720         * Add SKE's reference counter even if calling the completion
6721           callback manually.  Otherwise it goes negative, although it
6722           does not cause any problems.  The affected file is
6723           lib/silcske/silcske.c.
6724
6725         * Remove the client entry with short timeout after giving the
6726           KILL command.  Affected file lib/silcclient/command.c.
6727
6728         * Fixed to send error reply in WHOIS and IDENTIFY commands in
6729           case all found clients are already disconnected (WHOWAS would
6730           found them) in the server.  Affected file silcd/command.c.
6731
6732         * Update the last_receive (time of last data received) to be
6733           updated only when received private or channel message so that
6734           the idle time showed in WHOIS makes more sense.
6735
6736         * Added boolean field `valid' in to the SilcClientEntry in the
6737           client library to indicate whether the entry is valid or not.
6738           This fixes the nickname change bug on channel when changing
6739           the nickname to be same than the old (like nick to Nick) the
6740           nickname formatter doesn't set the new nick anymore to Nick@host.
6741           Affected file lib/silcclient/idlist.[ch].
6742
6743         * Now actually fixed the nickname changing on disconnection.
6744           Added new function silc_change_nick to the Irssi SILC Client.
6745           Affected file irssi/src/silc/core/client_ops.c,
6746           irssi/src/silc/core/silc-nicklist.[ch].
6747
6748 Sat Sep 15 13:29:17 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6749
6750         * Check that the public key exists in the GETKEY command before
6751           trying to encode it.  Affected file silcd/command.c.
6752
6753         * Print some notifications on received public keys with GETKEY
6754           command in the Irssi SILC Client.  Affected files are
6755           irssi/src/fe-common/silc/module-formats.[ch],
6756           irssi/src/silc/core/client_ops.c.
6757
6758         * Use IDENTIFY command to resolve the server information in the
6759           GETKEY command instead of INFO command.  Affected file
6760           lib/silcclient/command.c.
6761
6762         * All command reply functions in the client library now calls
6763           the pending command reply callbacks even if an error has
6764           occurred.  The server has done this a long time and now it was
6765           time to move the client library to this as well.  Now all
6766           errors can be delivered back to the pending command reply
6767           callbacks if necessary.  Affected files are
6768           lib/silcclient/command[_reply].[ch].
6769
6770         * Change the nickname on disconnection back to the username
6771           because in reconnect the server will enforce it to it anyway.
6772           Affected file irssi/src/silc/core/silc-servers.c.
6773
6774         * Fixed a config file parsing bug in the Irssi SILC client.
6775           Affected file irssi/src/silc/core/clientconfig.c.
6776
6777 Thu Sep 13 23:11:18 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6778
6779         * When printing the channel mode on JOIN, verify that the
6780           channel key and channel's HMAC are valid.  Affected file
6781           irssi/src/silc/core/client_ops.c.
6782
6783 Thu Sep 13 20:24:52 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6784
6785         * Added defines SILC_DEFAULT_CIPHER, SILC_DEFAULT_HMAC,
6786           SILC_DEFAULT_HASH and SILC_DEFAULT_PKCS in the file
6787           lib/silccrypt/[silccipher.h|silchmac.h|silchash.h|silcpkcs.h].
6788
6789         * Removed channel key rekey task deleting from the function
6790           silc_server_save_channel_key.  Affected file silcd/server.c.
6791           Added explicit timeout task context instead that is used to
6792           delete the task if we are registering a new task before the
6793           new task has elapsed.
6794
6795         * When channel key rekey occurs the client library now saves
6796           the old channel key for a short period of time (10 seconds) and
6797           is able to use it in case some is still sending channel
6798           messages encrypted with the old key after the rekey.  Affected
6799           file lib/silcclient/[idlist.h|client_channel.c].
6800
6801 Sun Sep  9 15:49:16 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6802
6803         * Added check to the silc_server_new_id_real to not accept
6804           new ID if it is the sender's own ID.  Affected file is
6805           silcd/packet_receive.c.
6806
6807         * Assure that we do not announce ourself or the one we've
6808           sending our announcements when we're router and are announcing
6809           servers to our primary router.  Affected file silcd/server.c.
6810
6811         * Fixed silc_server_command_identify_check_client to assemble
6812           correct WHOIS packet.  It send corrupted WHOIS packet and
6813           caused problem with router to router connections.  Affected
6814           file silcd/command.c.
6815
6816           Fixed also silc_server_command_whois_check the same way
6817           as for the IDENTIFY command.
6818
6819         * Added new SilcIDListStatus to the server in the SilcIDListData
6820           structure.   The status now includes the current status of
6821           the entry (like registered, resolved etc.).  Affected file
6822           silcd/idlist.[ch].  Defined a bunch of different status types
6823           as well.  This replaced the old boolean registered field as well.
6824
6825           Added resolve_cmd_ident field to the SilcClientEntry structure
6826           too so that if the entry is for example being resolved so
6827           another command may attach to the same pending command reply
6828           without requiring to resolve the same entry again.  This concept
6829           should optimize the WHOIS and the IDENTIFY resolving under
6830           heavy load by taking away unnecessary resolving for entries
6831           that are being resolved already.
6832
6833           Added support for adding multiple pending commands for one
6834           command idenfier.  Affected file silcd/command[_reply].[ch].
6835
6836         * Fixed WHOIS and IDENTIFY save to remove the cache entry
6837           before deleting the data.  Otherwise the hash table will have
6838           freed data in comparison functions.  Affected file is
6839           silcd/command_reply.c.
6840
6841         * Fixed silc_idlist_replace_client_id to add the new entry to
6842           the cache with NULL nickname.  Otherwise there will be invalid
6843           memory as the nickname after the nickname is freed.  Affected
6844           file silcd/packet_receive.c.
6845
6846         * Fixed the silc_idlist_get_clients_by_hash.  The entries was
6847           saved into wrong slots because the previous number of entries
6848           was not taken into account.  Affected file silcd/idlist.c.
6849           Fixed same thing in silc_idlist_get_clients_by_nickname too.
6850
6851         * If we are router and we receive JOIN notify to a channel that
6852           does not have any users then notified client is marked as the
6853           channel founder, as it is it.  The affected file is
6854           silcd/packet_receive.c
6855
6856         * Added to the extended hash table API's table_del_*ext functions
6857           the destructor as argument too, so that the caller can decide
6858           which destructor to use or whether to use destructor at all.
6859           Affected file lib/silcutil/silchashtable.[ch].
6860
6861         * Fixed ID Cache purging.  It actually deleted the entries from
6862           the hash table after the data was freed.  The hash table ended
6863           up comparing freed memory.  The affected file is
6864           lib/silccore/silcidcache.c.
6865
6866 Sat Sep  8 10:22:10 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6867
6868         * Fixed Irssi SILC client's KILL command's HELP syntax.
6869
6870         * The USERS command now resolves the detailed user information
6871           if the userinfo field is missing.  Affected file is
6872           lib/silcclient/command_reply.c.
6873
6874         * Do not print error in silc_file_read if the read file does
6875           not exist.  Just silently return NULL.  Affected file is
6876           lib/silcutil/silcutil.c.
6877
6878         * Fixed the silc_log_output to not wine about NULL filename
6879           and to not create some bogus " " filename.  Affected file is
6880           lib/silcutil/silclog.c.
6881
6882 Fri Sep  7 22:16:38 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6883
6884         * Fixed various printing bugs on the user interface in the
6885           Irssi SILC Client.  Minor changes that were forgotten from
6886           the release.
6887
6888 Fri Sep  7 17:28:37 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6889
6890         * Fixed the configure.in.pre and the compilation and distribution
6891           environment to support the new autoconf 2.52.  That version is
6892           now required to compile the CVS trunk.
6893
6894 Thu Sep  6 12:47:37 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6895
6896         * Renamed function silc_parse_nickname to silc_parse_userfqdn
6897           to generally parse user@fqdn format strings.  Affected file
6898           lib/silcutil/silcutil.c.
6899
6900         * Added nickname_format and nickname_force_format fields to the
6901           SilcClientParams structure.  The first one defines the format
6902           for the nicknames that the library will enforce if the receives
6903           multiple same nicknames.  The second one is boolean value and
6904           can be used to force the library to always enforce the format
6905           to the nicknames regardles whether there are multiple nicknames
6906           or not.  This configurable formatting was employed to flexibly
6907           support accessing multiple nicknames from the user interface.
6908           The userinterface can now set the nicknames to what ever format
6909           they prefer.  Affected file lib/silcclient/silcapi.h.
6910
6911           Added function silc_client_nickname_format to the file
6912           lib/silcclient/idlist.c.  It performs the nickname formatting.
6913
6914           Added new field `hostname´ to the SilcClientEntry context.
6915           It holds the hostname of the client.  Affected file is
6916           lib/silcclient/idlist.h.
6917
6918         * Irssi SILC Client sets the nicknames in nick@hostn format.
6919           Fe. priikone@otaku, priikone@otaku2 etc.  Affected file
6920           irssi/src/silc/core/silc-core.c.
6921
6922           The WHOIS printing now also shows both the real nickname and
6923           the formatted nickname so that user knows how to access the
6924           user if there are multiple same nicknames cached.  Affected
6925           file irssi/src/silc/core/client_ops.c.  Changed the WHOIS
6926           printing formatting too to take the hostname now as a separate
6927           argument.  The Affected file is
6928           irssi/src/fe-common/silc/modules-formats.[ch].
6929
6930         * Changed the silc_client_get_clients_local to accept the formatted
6931           nickname as argument.  It accepts the real nickname too but the
6932           formatted nickname can be used to find the true entry from
6933           multiple entries.  Affected file lib/silcclient/silcapi.h and
6934           lib/silcclient/idlist.c.
6935
6936         * Added nickname_format_parse field to the SilcClientParams.
6937           It is a callback function provided by the application to parse
6938           the nickname out of the formatted nickname string. The library
6939           calls it to get the nickname from the formatted string. Since
6940           the application generally knows better the format of the nickname
6941           string it parses it instead of the library, even though library
6942           encodes the formatted string.  If the callback function is not
6943           provided then the library will use the string as is.  The
6944           affected file is lib/silcclient/silcapi.h.
6945
6946         * All the nickname strings passed to the client library in
6947           commands are now expected to be formatted nickname strings.
6948           If the command does not support the formatted nickname string
6949           it will assume that the sent string is the actual nickname.
6950           Affected file lib/silcclient/command.c.
6951
6952 Tue Sep  4 22:31:28 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6953
6954         * Added public key authentication support to OPER and SILCOPER
6955           commands in the client library.  Affected file is
6956           lib/silcclient/command.c.
6957
6958 Tue Sep  4 12:39:17 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
6959
6960         * Changed the get_auth_methdod client operation to be asynchronous.
6961           It can be async if the application resolves the authentication
6962           method from the server during the negotiation.  Added new
6963           SilcGetAuthMeth completion callback that the application will
6964           call after resolving the authentication method.
6965
6966           Added function silc_client_request_authentication_method that
6967           the application can use to resolve the authentication method
6968           from the server.  Added also SilcConnectionAuthRequest callback
6969           that the library will call after the server has replied.  The
6970           application can call this function if it does not know the
6971           current authentication method.
6972
6973           Affected files are lib/silcclient/client.c and
6974           lib/silcclient/silcapi.h.
6975
6976         * The Irssi SILC client now automatically resolves the authentication
6977           method incase any configuration information is not present (and
6978           currently there never is).  The affected file is
6979           irssi/src/silc/core/client_ops.c.
6980
6981         * Fixed public key authentication from the client library.
6982           Affected file lib/silcclient/protocol.c.  Changed also the
6983           protocol specification about the public key authentication in
6984           the connection authentication protocol.  The actual data to be
6985           signed is now computed with a hash function before signing.
6986
6987         * Fixed the public key authentication from the server as well.
6988           Affected file silcd/protocol.c.
6989
6990         * Removed the mlock()'s from the memory allocation routines.
6991           Affected file lib/silcutil/silcmemory.c.  The ./configure does
6992           not check anymore for the mlock().  Affected file is
6993           configure.in.pre.
6994
6995         * Fixed USERS command in server to allow the execution of the
6996           command for private and secret channels if the client sending
6997           the command is on the channel.  Affected file silcd/command.c.
6998
6999         * Fixed silc_client_get_clients_local to return the clients
7000           count correctly.  It could return wrong value.  Affected file
7001           lib/silcclient/idlist.c.
7002
7003 Mon Sep  3 20:09:59 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7004
7005         * Fixed the lib/silcmath/mpi/mpi.h to always use 32-bit data
7006           types.  The assembler optimizations seemed not to like 64-bit
7007           data types.  The assmebler optimizations thus are now enabled
7008           also for BSD systems as opposed to only enable them for Linux.
7009
7010         * Do not check for threads at all on BSD systems.  Affected
7011           file configure.in.pre.
7012
7013         * Removed -n and -h options from the Irssi SILC Client since
7014           they are not used in silc.
7015
7016         * Fixed the prime generation to assure that the first digit
7017           of the generated random number is not zero since our conversion
7018           routines does not like number strings that starts with zero
7019           digit.  If zero digit is seen the random number is regenerated.
7020           This caused some corrupted RSA keys when the zero first digit
7021           was met.  Affected file lib/silcmath/silcprimegen.c.
7022
7023 Sun Sep  2 17:17:24 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7024
7025         * Fixed WIN32 configuration in the ./configure script.
7026           Fixed to include xti.h on environments that has it.
7027           Patches by Carsten Ilchmann and andrew.
7028
7029 Sat Sep  1 00:29:33 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7030
7031         * Changed the silc_id_create_client_id to be collision
7032           resistant.  It is now assured that there cannot be created
7033           two same client ID's.  I suspect that some weird bugs in
7034           the server were actually caused by duplicate Client IDs.
7035           Affected file silcd/serverid.[ch].  A router receiving
7036           new ID now also assures and informs the sending server
7037           if the ID caused collision.
7038
7039         * Changed the silc_id_create_channel_id to also assure that
7040           there are no collisions.
7041
7042 Wed Aug 29 17:55:01 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7043
7044         * Statement about ignoring the Mutual Authentication flag when
7045           performing rekey with PFS was a bit misleading.  It is ignored
7046           if it was set in the initial negotiation, it cannot be even
7047           set in the rekey.  Fixed in the ke-auth draft.  Started the
7048           new versions of the protocol drafts in the doc/.
7049
7050 Sun Aug 26 14:59:15 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7051
7052         * Fixed a bug in silc_client_command_identify_save when saving
7053           new channel information.  The channel name was no duplicated
7054           and caused crash on exit.  Affected file is
7055           lib/silcclient/command_reply.c.
7056
7057 Fri Aug 17 23:07:45 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7058
7059         * Fixed the getkey command handling in the server.  Send just
7060           empty OK reply to the sender if the key could not be fetched
7061           (but everything else was ok, like the key just was not available).
7062           Changed the public key parameter to optional in the protocol
7063           specs so that empty OK reply can be sent.  Affected file
7064           silcd/command.c.
7065
7066           Added a message to Irssi SILC client to tell to user if the
7067           server did not return a public key.
7068
7069 Tue Aug 14 07:29:27 CEST 2001  Pekka Riikonen <priikone@silcnet.org>
7070
7071         * Fixed a channel key regeneration bug.  It registered new
7072           timeout tasks exponentially until all system resources were
7073           used.  Affected file silcd/server.c.
7074
7075 Sun Aug 12 20:48:14 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7076
7077         * Added the SILC Document generator to the scripts/silcdoc.
7078           It can be used to generate the Toolkit Reference Manual out
7079           of the source tree.  Internally it will also use the RoboDoc
7080           generator now imported in util/robodoc.
7081
7082 Sun Aug 12 12:28:17 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7083
7084         * Added couple of return's in rekey protocol if error orccurred
7085           during the protocol.  The execution must be terminated.
7086           Affected file silcd/protocol.c.  Also, terminate the protocol
7087           always with timeout.
7088
7089 Sat Aug 11 12:36:02 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7090
7091         * The client's Client ID was created initally from the wrong
7092           nickname (it could have been in format nick@host) in the
7093           silc_server_new_client.  Affected file silcd/packet_receive.c
7094
7095 Sat Aug 11 00:29:57 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7096
7097         * Added some SILC_LOG_ERROR's to various error conditions
7098           if client could not be added to ID cache.  Affected files
7099           silcd/packet_receive.c and silcd/server.c.
7100
7101         * When client's sock->user_data is freed, NULL also the
7102           client->router and client->connection pointers.  Added check
7103           for these pointers being NULL to various places around the
7104           code.  Affected file silcd/server.c.
7105
7106         * Added client->data.registered == TRUE checks to various
7107           places around the code to assure that unregistered client's
7108           are not handled when it is not allowed.  Affected file
7109           silcd/server.c.
7110
7111         * Added `bool registered' fields to all
7112           silc_idlist_[server|client]_get_* routines to indicate whether
7113           the fetched client needs to be registered or not.  Affected
7114           file silcd/idlist.[ch].
7115
7116         * Add your own entry as registered to the ID cache in the
7117           server.  Affected file server.c.
7118
7119         * Fixed a bug in silc_server_new_server.  The SilcServer was
7120           set as the new server's context instead of SilcServerEntry.
7121           This naturally caused some weird bugs.
7122
7123         * Added "updated" field the SilcChannelEntry which indicates
7124           the time since the channel entry was last accessed.  This
7125           can be used to determine whether it is necessary to
7126           announce the channel after backup resuming protocol.
7127           Affected files silcd/idlist.[ch].
7128
7129 Thu Aug  9 18:28:37 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7130
7131         * Do not delete the channel rekey task when adding it
7132           for in silc_server_create_channel_key.
7133
7134         * Changed the silc_server_create_channel_key to return
7135           TRUE or FALSE to indicate the success of the channel key
7136           creation.
7137
7138 Thu Jul 26 11:32:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7139
7140         * Fixed MSVC++ project files and added missing files to
7141           Makefiles under win32/.
7142
7143 Wed Jul 25 18:43:54 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7144
7145         * Do not add TCP_NODELAY flag if the operating system
7146           does not have it defined.  Affected files are
7147           lib/silcutil/[unix/win32]/silc[unix/win32]net.c.
7148
7149         * Fixed buffer overflow from Irssi SILC Client.  Affected
7150           file irssi/src/fe-common/core/themes.c.
7151
7152         * Fixed double free in client library in the file
7153           lib/silcclient/client.c when disconnecting from server.
7154
7155         * Applied double free patch from cras to Irssi SILC client.
7156           Affected files irssi/src/core/[modules/expandos].c
7157
7158         * Fixed the disconnection handling to Irssi SILC Client.
7159           The application must call silc_client_close_connection
7160           in ops->connect client operation in case of failure of
7161           the connection.  Affected file is
7162           irssi/src/silc/core/client_ops.c.
7163
7164         * Do not set sock->protocol to NULL in the function
7165           silc_client_close_connection after executing the protocol's
7166           final callback since the sock might not be valid anymore.
7167           Affected file lib/silcclient/client.c.
7168
7169 Wed Jul 25 16:04:35 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7170
7171         * Do not enable SILC_THREADS if the linking with libpthread
7172           did not happen.  Affected file configure.in.pre.
7173
7174         * Added notion to protocol specification that server must
7175           verify the sent authentication payload with CMODE when
7176           setting the channel founder key.  Implemented it to the
7177           server.  Affected file silcd/command.c.
7178
7179 Mon Jul 23 18:31:43 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7180
7181         * Added _EXTRA_DIST SILC distribution variable to the
7182           distributions file.  It is used to conditionally add extra
7183           files or directories to the specific distribution.  Affected
7184           files ./prepare, Makefile.am.pre and distributions.
7185
7186           Removed the `_' from the start of the distribution names.
7187           It is redundant.
7188
7189         * Added README.WIN32 for instructions to compile the Toolkit
7190           under WIN32.
7191
7192 Mon Jul 23 10:12:37 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7193
7194         * Fixed a double free in disconnection in the server.  Affected
7195           file is silcd/server.c.
7196
7197         * Fixed the lib/silcske/groups.c to work now also with GMP
7198           MP library.  The string conversion did not work when using
7199           specific base and the base is indicated in the string as well.
7200
7201         * Created win32/ directory which now includes MSVC++ specific
7202           stuff so that toolkit (DLLs) may be compiled with MSVC++.
7203           It will appear only in the toolkit distribution
7204
7205 Sun Jul 22 19:40:30 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7206
7207         * Changed the key material distribution function in case when
7208           the hash output is too short.  The data is now concatenated
7209           a bit differently than it used to.  Made the change to the
7210           SKE protocol specification.
7211
7212         * Added better GMP detection to configure.in.pre.  A patch
7213           by salo.
7214
7215 Fri Jul 20 13:16:00 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7216
7217         * Fixed a minor bug in SKE that might cause some problem on
7218           some platforms.  Affected file lib/silcske/silcske.c.
7219
7220         * Added the cookie checking for initiator in the SKE.  It checks
7221           that the responder returns the sent cookie unmodified.  The
7222           affected file is lib/silcske/silcske.c.  Added new SKE
7223           error type INVALID_COOKIE that can be sent during the
7224           negotiation.  Fixed some memory leaks as well.
7225
7226         * Added the "invalid cookie" error message to Irssi SILC client's
7227           message formats.
7228
7229 Thu Jul 19 21:44:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7230
7231         * Added `task_max' field to the SilcClientParams to indicate
7232           the maximum tasks the scheduler can handle.  If set to zero,
7233           default values are used.  Affected file lib/silcclient/silcapi.h.
7234
7235         * Fixed memory leaks in silc_client_close_connection.  Affected
7236           file lib/silcclient/client.c.
7237
7238         * Added silc_client_del_client_entry to client library to free
7239           all memory of given client entry.  Affected file is
7240           lib/silcclient/idlist.[ch].
7241
7242         * Added new functions silc_client_del_channel and
7243           silc_client_del_server to delete channel and server entries.
7244           Affected file lib/silcclient/[silcapi.h/idlist.c].
7245
7246         * Removed silc_client_del_client_by_id from silcapi.h.
7247
7248         * Fixed the INFO command to return the server's own info
7249           correctly when querying by Server ID.  Affected file is
7250           silcd/command.c.
7251
7252 Thu Jul 19 14:47:30 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7253
7254         * Removed the non-blocking settings in WIN32 code in the
7255           silc_sock_[read/write] and added SleepEx instead.  Affected
7256           file lib/silcutil/win32/silcwin32sockconn.c.  The availability
7257           of input data is now checked with FIONREAD and ioctlsocket.
7258
7259 Wed Jul 18 18:34:01 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7260
7261         * Call silc_schedule_task_del_by_context in the
7262           silc_protocol_cancel instead of silc_schedule_task_del_by_callback.
7263           Affected file lib/silccore/silcprotocol.c.
7264
7265         * Call silc_protocol_cancel for active protocols in the
7266           silc_server_close_connection if the funtion
7267           silc_server_free_sock_user_data has not been called.
7268           Affected file silcd/server.c.
7269
7270         * Generic tasks cannot be deleted using the del_by_fd
7271           task deleting function since generic tasks does not match
7272           any specific fd.  Affected file lib/silcutil/silcschedule.[ch].
7273
7274         * Added a notion to SILCOPER help file that the SILCOPER works
7275           only on router server, not on normal server.
7276
7277 Wed Jul 18 09:40:04 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7278
7279         * Added for WIN32 support for the new scheduler as well.
7280           Affected file lib/silcutil/win32/silcwin32schedule.c.
7281
7282         * Fixed the SHA1 implementation to work on various platforms.
7283
7284 Tue Jul 17 23:04:10 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7285
7286         * Rewrote the SILC Scheduler entirely.  Removed the old SILC Task
7287           API.  It is part of the scheduler now.  Everything else is
7288           as previously but some functions has changed their names.
7289           Checkout the lib/silcutil/silcschedule.h for the interface.
7290           Updated all applications to use the new interface.  Affected
7291           files are lib/silcutil/silcschedule.[ch].
7292
7293 Tue Jul 17 16:53:30 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7294
7295         * Found a bug in the SKE implementation.  The HASH value,
7296           specified by the protocol, was not computed correctly.  The
7297           public key of the responder was not added to the computation
7298           even though it is mandatory.  Affected file lib/silcske/silcske.c.
7299           This unfortunately causes incompatibilities with older
7300           clients and servers.
7301
7302         * Added WIN32 specific network init and uninit functions:
7303           silc_net_win32_init and silc_net_win32_uninit to init and uninit
7304           the Winsock2.  Affected file lib/silcutil/silcnet.h and
7305           lib/silcutil/win32/silcwin32net.c.
7306
7307         * Set the socket always to nonblocking mode on WIN32 after
7308           reading data or writing data.  Affected file is
7309           lib/silcutil/win32/silcwin32sockconn.c.
7310
7311 Mon Jul 16 22:55:26 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7312
7313         * Fixed various compilation problems under WIN32.  Affected
7314           files lib/silcutil/win32/silcwin32thread.c and
7315           lib/silcutil/win32/silcwin32schedule.c.
7316
7317         * Removed all _internal.h #includes from public header
7318           files.  Internal headers must never be included from
7319           public headers.
7320
7321           Removed also the lib/silcske/payload_internal.h file.
7322
7323         * All include files that may be needed (public and some others
7324           included by the public headers) by application developers are
7325           now copied to the ./includes directory.  It does not copy any
7326           internal headers.  Affected file Makefile.defines.pre and all
7327           Makefile.am's under lib/ and subdirs.
7328
7329 Thu Jul 12 17:49:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7330
7331         * Do not change the ~/.silc directory's permissions automatically.
7332           Affected file irssi/src/silc/core/clientutil.c.
7333
7334 Thu Jul 12 10:18:40 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7335
7336         * Do not cancel the protocol in silc_server_close_connection
7337           it might cause recursion.  Now cancelled in the function
7338           silc_server_free_sock_user_data.  Affected file silcd/server.c.
7339
7340         * Fixed the silc_server_remove_clients_by_server to regenerate
7341           the channel keys correctly finally.  Added also new function
7342           silc_server_remove_clients_channels to actually do it.
7343           Affected file silcd/server.c.
7344
7345         * Fixed the silc_server_new_channel to not crash by giving
7346           wrong router to the new channel.  Affected file is
7347           silcd/packet_receive.c.
7348
7349 Wed Jul 11 18:31:57 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7350
7351         * Added SilcClientParams structure to the lib/silcclient/silcapi.h
7352           which is given as argument to the silc_client_alloc now.
7353           It can be used to configure the client and set various parameters
7354           that affect the function of the client.
7355
7356         * The USERS command in server did not check whether the channel
7357           is private or secret.  Affected file silcd/command.c.
7358
7359         * Added new argument to the USERS command in protocol specification.
7360           The USERS command now can take the channel name as argument
7361           as well.  Added support for this in client and server and
7362           updated the protocol specs.
7363
7364         * Completed the GETKEY command in client. It can be now used
7365           to fetch also servers public key not only some clients.
7366           Affected files lib/silcclient/command[_reply].c.
7367
7368         * Added silc_client_get_server to return server entry by the
7369           server name.  Affected files lib/silcclient/silcapi.h and
7370           idlist.c.
7371
7372         * Redefined the IDENTIFY command in protocol specification to be
7373           more generic.  It now can be used to query information about
7374           any entity in the SILC Network, including clients, servers and
7375           channels.  The query may be based either the entity's name
7376           or the ID.  Added support for this in both client and server.
7377
7378           Affected files silcd/command.c and lib/silcclient/command.c
7379           and command_reply.c.
7380
7381         * Optimized the WHOIS and WHOWAS commands in the server. Removed
7382           the _from_client and _from_server functions.  Affected file
7383           silcd/command.c.
7384
7385         * Added silc_client_get_channel_by_id_resolve to the file
7386           lib/silcclient/silcapi.h to resolve channel information by
7387           its ID.  Added also silc_client_get_channel_by_id that
7388           does not resolve it from the server.
7389
7390 Tue Jul 10 18:05:38 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7391
7392         * Added SilcServerEntry context into the client library
7393           to represent one server.  The INFO command now allocates
7394           these to save the resolved server info.  For now on the
7395           client library will also keep information about servers,
7396           connected and resolved with INFO.
7397
7398           The INFO command now allocates the SilcServerEntry context
7399           and saves the server info there.  The COMMAND_REPLY in
7400           the INFO now returns the parameters to application in
7401           same order as defined in the protocol specification.
7402
7403           The entries are cached in the client->server_cache.
7404
7405         * The INFO command is now issued after received the Client ID
7406           from the server.  Affected file lib/silcclient/client.c.
7407
7408         * The CMODE_CHANGE notify may now return also an SilcServerEntry
7409           to the application as the mode changer might be server.
7410           It is guaranteed that NULL is not returned anymore to the
7411           application.  Affected file lib/silcclient/client_notify.c.
7412
7413           The ID Type is now also passed to the application so that
7414           it can check whether the returned entry is SilcClientEntry
7415           or SilcServerEntry.
7416
7417           Added new function silc_client_get_server_by_id to return
7418           the server entry by ID.  Affected files are the
7419           lib/silcclient/silcapi.h and lib/silcclient/idlist.c.
7420
7421         * Do not create the channel in the Irssi SILC Client when issuing
7422           the JOIN command but when received the sucessful JOIN command
7423           reply.  Otherwise the channel might get created even though we
7424           could not join it.  The Affected file is
7425           irssi/src/silc/core/[silc-channels.c/client_ops.c].
7426
7427         * Fixed a channel joining bug in router.  The router must also
7428           check the channel modes, invite and ban lists etc. when serving
7429           the JOIN command sent by normal server.  Affected file is
7430           silcd/command.c.  The router now resolves the client's
7431           information from the server who sent the JOIN command if it
7432           does not know it, and processes the JOIN command only after
7433           that.
7434
7435         * Changed the SilcCommandCb to take new argument; void *context2.
7436           Affected file lib/silccore/silccommand.h
7437
7438           The second argument in the command callbacks in the server now
7439           includes the SilcServerCommandReplyContext if the command was
7440           called as pending command callback from the command reply.
7441           Otherwise it is NULL. When called as pending the status of the
7442           command reply will be checked and if it was erronous the
7443           error will be sent to the original sender of the command.
7444           This way the client always receives the error messages even
7445           though the server was actually the one who received the error
7446           when it resent the command to router, for example.  Affected
7447           files silcd/command[_reply].[ch].
7448
7449         * Fixed sending WHOWAS command's error message to client if
7450           the requested client could not be found.  It was missing.
7451           silcd/command.c.
7452
7453         * Changed the CMODE and CUMODE commands reply arguments in the
7454           protocol specification.  The Channel ID is now sent in both
7455           of the commands to identify the channel.  Implemented this
7456           new feature to the client and server.  Affected files
7457           lib/silcclient/command_reply.c and silcd/command.c.
7458
7459         * Made better checks for invite and ban lists in the JOIN
7460           command in server.  Affected file silcd/command.c.
7461
7462 Mon Jul  9 18:28:34 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7463
7464         * The server now performs the incoming host IP/DNS lookup
7465           using the silc_socket_host_lookup and thus does not block
7466           the server anymore.  Affected file silcd/server.c.
7467
7468         * Completed the multi-thread support for SILC Scheduler in
7469           the lib/silcutil/silcschedule.c.
7470
7471         * Fixed the configure.in.pre to detect the pthread correctly
7472           on various systems.
7473
7474         * Fixed a deadlock in silc_task_queue_wakeup in the file
7475           lib/silcutil/silctask.c.
7476
7477 Mon Jul  9 13:40:03 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7478
7479         * Added new function silc_schedule_wakeup that is used in
7480           multi-threaded environment to wakeup the main thread's
7481           schduler. It needs to be used when a thread adds a new task
7482           or removes a task from task queues. After waking up, the
7483           scheduler will detect the task queue changes. If threads
7484           support is not compiled in this function has no effect.
7485           Implemented the wakeup mechanism to both Unix and WIN32
7486           systems.  Affected files are lib/silcutil/silcschedule.[ch],
7487           lib/silcutil/unix/silcunixschedule.c and the
7488           lib/silcutil/win32/silcwin32schedule.c.
7489
7490         * Added new function silc_task_queue_wakeup to wakeup the
7491           scheduler by the specified task queue.  Affected file
7492           lib/silcutil/silctask.[ch].
7493
7494         * The silc_socket_host_lookup_start now wakes up the scheduler
7495           after adding the timeout task.  Affected file is
7496           lib/silcutil/silcsockconn.c.
7497
7498         * The silc_socket_host_lookup is synchronous now if the threads
7499           support is not compiled in.  However, the callback is still
7500           called asyncronously through the scheduler, anyway.  Affected
7501           file lib/silcutil/silcsockconn.c.
7502
7503 Mon Jul  9 00:24:45 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7504
7505         * Added new function silc_socket_host_lookup to perform
7506           asynchronous IP and FQDN lookups for the socket connection.
7507           Affected files lib/silcutil/silcsockconn.[ch].
7508
7509 Sun Jul  8 18:44:53 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7510
7511         * Added SILC_MUTEX_DEFINE to define the mutex on environments
7512           that may or may not compile the mutex support in.
7513
7514           Changed the silc_mutex_alloc interface. It allocates the
7515           mutex now to the sent pointer and returns TRUE or FALSE.
7516
7517           Affected file lib/silcutil/silcmutex.h.
7518
7519         * Wrote the SILC Task Queue interface to support multi-threads.
7520           Affected file lib/silcutil/silctask.[ch].
7521
7522         * Wrote the SILC Scheduler to support multi-threads.  Affected
7523           file lib/silcutil/silcschedule.c.
7524
7525 Sun Jul  8 11:16:01 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7526
7527         * Implemented the SILC Mutex API and SILC Thread API for WIN32
7528           in lib/silcutil/win32/.
7529
7530 Sun Jul  8 00:18:15 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7531
7532         * Defined SILC Mutex API and SILC Thread API and implemented
7533           them for Unix.  Affected files are
7534           lib/silcutil/silcmutex.h, lib/silcutil/silcthread.h,
7535           lib/silcutil/unix/silcunixmutex.c and
7536           lib/silcutil/unix/silcunixthread.c.
7537
7538 Sat Jul  7 14:40:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7539
7540         * Fixed the silc_server_remove_clients_by_server's channel
7541           key re-generation.  The hash table handling was incorrect
7542           and would not work with many channels.  Affected file is
7543           silcd/server.c.
7544
7545         * Fixed some memory leaks around the server code.
7546
7547         * Rewrote the silc_server_get_users_on_channel to support IPv6
7548           based Client ID's.  Affected file silcd/server.c.
7549
7550         * Defined the SILC_MESSAGE_FLAG_SIGNED to the protocol
7551           specification.  However, a separate document must be written
7552           to define the detailed signing procedure and the payload
7553           associated with the flag.  Defined the flag to the
7554           lib/silccore/silcchannel.h as well.
7555
7556 Fri Jul  6 18:26:31 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7557
7558         * Changed the dynamic tables to static size tables in the
7559           lib/silccrypt/silchmac.c.
7560
7561         * Removed GCC dependencies from the code.  A patch by cras.
7562
7563 Fri Jul  6 09:39:35 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7564
7565         * Do not show the error "Error receiving packet bla bla"
7566           in server if it really was not an error (-2 means that reading
7567           is pending).  Affected file silcd/server.c.
7568
7569 Thu Jul  5 21:22:32 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7570
7571         * Fixed a possible crash in silc_server_remove_clients_by_server
7572           in silcd/server.c.  Fixed there also some memory leaks.
7573
7574         * Fixed the silc_idlist_replace_client_id.  It could replace
7575           wrong key in the hash table.  Affected file silcd/idlist.c.
7576
7577         * Do not check whether there are global users on the channel
7578           if the channel->global_users is FALSE.  Affected functions
7579           silc_server_remove_from_one_channel and
7580           silc_server_remove_from_channels in silcd/server.c.  Also,
7581           do not check if the removed client is local as we can be
7582           sure that global client was not removed from the channel
7583           and checking for global users is not needed.
7584
7585         * The silc_server_remove_clients_by_server now re-generates
7586           the channel keys correctly for those channels that had
7587           clients removed from them.  Affected file silcd/server.c.
7588
7589 Tue Jul  3 11:39:20 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7590
7591         * Found the reason of random crashes in the server.  We weren't
7592           ignoring the SIGPIPE signal (which can be sent in write())
7593           and it crashed the server.  Affected file silcd/silcd.c.
7594
7595 Fri Jun 29 20:05:25 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7596
7597         * Assure that sock->user_data is not NULL in the function
7598           silc_server_packet_send in silcd/packet_send.c.
7599
7600         * Disconnect the remote connection if it could not be added
7601           to any ID lists in the server.  The affected file is
7602           silcd/server.c.
7603
7604         * Check in silc_server_packet_send[_real/dest] that the
7605           socket is not disconnecting and ignore the data if it is.
7606           Affected file silcd/packet_send.c.
7607
7608         * Define inline to __inline on native WIN32 compilation.
7609           Affected file includes/silcwin32.h.
7610
7611         * Added some explicit type casts for inline code since MSVC
7612           require them.  Affected files lib/silcutil/silcbuffer.h,
7613           lib/trq/silcdlist.h and lib/trq/silclist.h.
7614
7615         * Print warning in log files from now on if the packet
7616           decryption fails.  Affected file silcd/server.c.
7617
7618 Thu Jun 28 21:30:39 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7619
7620         * Changed the `say' client operation's interface to accept
7621           new `type' argument to indicate the type of the message sent
7622           by the library.  The application may filter the library's
7623           messages according the type.  The affected file is the
7624           lib/silcclient/silcapi.h.
7625
7626         * Added two new functions to lib/silcclient/silcapi.h:
7627           silc_client_del_client and silc_client_del_client_by_id.
7628           Affected file lib/silcclient/idlist.c.
7629
7630         * Moved the clientincludes.h from includes/ to silc/ and
7631           serverincludes.h from includes/ to silcd/.
7632
7633         * The modes for the CMODE and CUMODE are now passed as
7634           uint32 for application with COMMAND_REPLY.  The affected
7635           file is lib/silcclient/command_reply.c.
7636
7637 Wed Jun 27 22:24:47 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7638
7639         * /WHOIS without arguments shows client's own information.
7640           Affected file lib/silcclient/command.c.
7641
7642         * Changed PING to not accept any arguments.  The specs
7643           says that client can ping only the connected server so
7644           requiring an argument is not needed.  Affected file is
7645           lib/silcclient/command.c.
7646
7647 Wed Jun 27 00:10:33 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7648
7649         * Fixed a fatal bug in private message sending and reception
7650           encryption and decryption when using private message keys.
7651           The implementation was incorrect and did not follow the
7652           specification.  It causd that some of the message were
7653           lost since it did not use the sending and receiving keys
7654           as the protocol suggests.  This has been fixed and will cause
7655           incompatibilities with older clients when sending private
7656           message encrypted with private message keys.  Affected files
7657           lib/silcclient/client_prvmsg.c, lib/silcclient/client_keyagr.c
7658           and various other in Irssi SILC Client.
7659
7660           Added `responder' boolean argument to the functions
7661           silc_client_add_private_message_key[_ske] to indicate when
7662           the key is added as responder or initiator of the key
7663           negotiation.
7664
7665 Tue Jun 26 19:23:07 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7666
7667         * Removed the silc_ske_check_version function and created
7668           a SilcSKECheckVersion callback.  Added also a function
7669           silc_ske_set_callbacks that is now used to set all SKE
7670           callbacks.  The callback functions are not given to
7671           the SKE functions anymore, but this function is used to
7672           set the callbacks.
7673
7674         * Fixed the WIN32 DLL generation in lib/Makefile.am.pre.
7675
7676         * Added `silc_version' argument to the silc_client_alloc
7677           to define the version of the application for the library.
7678           The library will use the version string to compare it
7679           against the remote host's (usually a server) version
7680           string.  Affected file lib/silcclient/silcapi.h
7681
7682         * Added the KE protocol context to Key Agreement context
7683           in client library so that we can abort the SKE if it
7684           is in process when we get timeout.  Affected file is
7685           lib/silcclient/client_keyagr.c.
7686
7687         * Do not resolve the client ID forever if it returns in the
7688           first time that such client does not exist.  This was done
7689           for example with private message.  Affected file is
7690           lib/silcclient/client_prvmsg.c.
7691
7692 Mon Jun 25 21:42:51 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7693
7694         * Do not add regex.h for WIN32.  The affected file
7695           includes/silcincludes.h.
7696
7697         * Added WIN32 DLL generation to lib/Makefile.am.pre.  It might
7698           not work yet 100%.  It generates the DLL's automatically
7699           when compiling with --with-win32 under cygwin.
7700
7701 Sun Jun 24 19:49:23 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7702
7703         * lib/contrib/regex.c is not compiled on WIN32.
7704
7705         * Added silc_net_get_socket_opt function to the
7706           lib/silcutil/silcnet.h.
7707
7708         * Added includes/silcwin32.h for WIN32 specific includes
7709           and definitions.
7710
7711         * Do not use ptime structure or any of the posix process
7712           functions on WIN32 in lib/silccrypt/silrng.c.
7713
7714         * Added silc_gettimeofday to provide generic function
7715           for struct timeval on all platforms.  Added the function
7716           to lib/silcutil/silcutil.h.
7717
7718 Sun Jun 24 12:19:52 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7719
7720         * Moved the lib/silccore/silcsockconn.[ch] to the utility
7721           library as they clearly belong there.  As a plus side we
7722           can make the actual socket connection routines platform
7723           specific.
7724
7725           Added also new generic function silc_socket_read and
7726           silc_socket_write (that used to be silc_packet_[read/write].
7727           The implementation of these are platform specific.
7728
7729         * Added WIN32 specific routines of silc_socket_[read/write]
7730           to lib/silcutil/win32/silcwin32sockconn.c.
7731
7732 Sat Jun 23 16:01:00 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7733
7734         * Added preliminary support for native WIN32 compilation under
7735           cygwin (using the -mno-cygwin option for GCC) to the
7736           ./configure.in.pre.  The --with-win32 now prepares the
7737           compilation for native WIN32.
7738
7739         * Rewrote the SILC Scheduler interface in the file
7740           lib/silcutil/silcschedule.h.  The scheduler is now context
7741           based and does not have anymore any global static scheduler.
7742           Moved the Unix scheduler to the lib/silcutil/unix/ directory
7743           and created lib/silcutil/win32 directory for WIN32 based
7744           scheduler.
7745
7746         * Added Unix specific network routines to the
7747           lib/silcutil/unix/silcunixnet.c and the old
7748           lib/silcutil/silcnet.c includes now only generic routines.
7749
7750           Added WIN32 specific network routines to the
7751           lib/silcutil/win32/silcwin32net.c.
7752
7753         * Added Unix specific utility functions from the
7754           lib/silcutil/silcutil.c to lib/silcutil/unix/silcunixutil.c.
7755
7756         * Added WIN32 SILC Scheduler to the file
7757           lib/silcutil/win32/silcwin32schedule.c. The code is of course
7758           untested.
7759
7760 Fri Jun 22 10:44:14 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
7761
7762         * Do not handle JOIN notify in the server if the target client
7763           is not registered (idata->registered == FALSE).  The affected
7764           file is silcd/packet_receive.c.
7765
7766         * Update the nickrec->founder in event_cumode in the Irssi SILC
7767           client.  Affected file irssi/src/silc/core/silc-channels.c.
7768
7769         * Fixed the CUMODE_CHANGE notify handling in the server when
7770           server and router are announcing their clients on channels.
7771           Now the mode changes are saved and notified correctly.  The
7772           affected file is /silcd/packet_receive.c.
7773
7774         * Fixed silc_idlit_replace_[server/client/channel]_id functions.
7775           They really did not replace the cache entry in the ID Cache.
7776           Now they do that.  Affected file silcd/idlist.c.
7777
7778         * Fixed the KICK notify handling in the Irssi SILC client to
7779           update the channel records so that the kicked client does not
7780           appear to be on the channel.  The affected file is
7781           irssi/src/silc/core/silc-channels.c.
7782
7783         * Always update the conn->current_channel when executing command
7784           on a channel.  Affected file irssi/src/silc/core/silc-servers.c.
7785
7786         * Fixed the KILL notify handling in Irssi SILC client to remove
7787           the killed client on all channels.
7788
7789 Thu Jun 21 17:10:08 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7790
7791         * Fixed the silc_parse_command_line to remove extra spaces
7792           from the start and end of the arguments.  Affected file is
7793           lib/silcutil/silcutil.c.
7794
7795         * Cancel and free any active protocol in the function
7796           silc_server_close_connection.  Affected file silcd/server.c.
7797
7798         * Cancel and free any active protocol in the function
7799           silc_client_close_connction.  Affected file is
7800           lib/silcclient/client.c.
7801
7802         * Do not execute the KILL command for clients that are in
7803           history (ie. they are not in the network).  Affected file is
7804           silcd/command.c.
7805
7806         * Fixed KILL notify handling, client does not crash anymore.
7807           Affected file irssi/src/silc/core/silc-channels.c.
7808
7809         * Reduced the default packet buffer size from 2048 to 1024 in
7810           lib/silccore/silcpacket.c.
7811
7812         * Added SILC_SKE_STATUS_FREED SKE status type and a reference
7813           counter to the SKE context that is incresed when the SKE library
7814           performs async operation outside the library.  If the outside
7815           process frees the SKE context and FREED status will be set
7816           and the library will detect after the sync operation that the
7817           libary is freed.  The affected files are
7818           lib/silcske/silcske[_status].[ch].
7819
7820         * Resolve the client entry information in the function
7821           silc_client_channel_message to assure that NULL pointer is not
7822           passed as client entry to the application. */
7823
7824         * Fixed the task timeout calculation to assure that there is
7825           never negative timeouts.  The affected file is
7826           lib/silcutil/silcschedule.c.
7827
7828         * Fixed the channel user mode notification sending in server.
7829           It was sent point-to-point to the router (or to server by router)
7830           but it needs to be destined to a channel.  The routines now
7831           supports sending the channel user mode notifys to the channels
7832           when announcing clients and channels.  Affected files are
7833           silcd/server.c and silcd/packet_receive.c.
7834
7835         * Fixed the CHANNEL_CHANGE notify handling in the client libary.
7836           It did not actually replace the old channel entry in the cache.
7837           Affected file lib/silcclient/client_notify.c.
7838
7839 Tue Jun 19 22:10:36 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7840
7841         * Fixed a possible crash in silc_packet_send_prepare.  It now
7842           assures always that there is enough space in the buffer and
7843           at the tail area of the buffer (for MAC).
7844
7845           Fixed the inbound buffer reallocation in silc_packet_read.
7846           It was old code and did not handle the reallocation correctly.
7847           Affected
7848
7849           The affected file is lib/silccore/silcpacket.c.
7850
7851         * Fixed buffer overflow in silc_parse_nickname in the file
7852           lib/silcutil/silcutil.c.
7853
7854 Tue Jun 19 13:40:09 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7855
7856         * make install generates new server keys only if there is not
7857           keys already.
7858
7859 Mon Jun 18 18:49:07 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7860
7861         * Set SILC_MESSAGE_FLAG_NOREPLY when sending the away message.
7862           Added check that if the NOREPLY is set then we will not send
7863           the away message.  This avoids infinite loop of away messages
7864           if both clients are away.  The affected file is
7865           lib/silcclient/client_prvmsg.c.
7866
7867         * Fixed client crash if /NICK was given without arguments.
7868           Affected file lib/silcclient/command.c.
7869
7870         * Server does not send the invite list in INVITE command back
7871           to the client if the list was not altered.  Added this notion
7872           to the protocol spec as well.  Affected file silcd/command.c.
7873
7874           Fixed possible crash in INVITE command by checking the
7875           value of silc_server_get_client_route command.
7876
7877         * Fixed the INVITE notify type handling.  The arguments are now
7878           taken in correct order and client does not crash.  The affected
7879           file is irssi/src/silc/core/silc-channels.c.
7880
7881           Removed the "Inviting xxx to channel" message from the
7882           client library away and let the application handle it.
7883           Affected file lib/silcclient/command.c.  Added that message
7884           to Irssi SILC client's message formats.
7885
7886         * Fixed CMODE command crash in client.  It now checks the
7887           amount of arguments correctly and does not crash.  The affected
7888           file is lib/silcclient/command.c.
7889
7890         * Do not create new channel automatically in silc_channels_join
7891           but check whether the channel by that name already exists.
7892           Affected file irssi/silc/core/silc-channels.c.
7893
7894         * Do not send the SERVER_SIGNOFF to router if the disconnected
7895           entity was the router.  Affected file silcd/server.c.
7896
7897         * Added the handling of the SERVER_SIGNOFF notify to the Irssi
7898           SILC client as it was missing from there.
7899
7900           Added the handling of the KICK notify to the Irssi SILC client
7901           as it was missing.  Added "you have been kicked" message to
7902           Irssi SILC client's message modules formats.
7903
7904           Added the handing of the KILL notify to the Irssi SILC client
7905           as it was missing.  Added the kill message module formats
7906           as well.
7907
7908           The affected file is irssi/src/silc/core/silc-channels.c.
7909
7910         * The router did not save the channel mode the server announced.
7911           Affected file silcd/packet_receive.c.
7912
7913         * Fixed a possible crash in INFO command in server.  If the
7914           server did not provide the server info it crashed.  Affected
7915           file silcd/command.c.
7916
7917 Sun Jun 17 15:26:05 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7918
7919         * Fixed the GETKEY command in the server to check also the
7920           global list.  Otherwise the GETKEY would not work correctly
7921           in normal SILC server.  Affected file silcd/command.c.
7922
7923 Sat Jun 16 18:00:00 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7924
7925         * Fixed GETKEY crash, it crashed if the command did not succseed.
7926
7927 Tue Jun 12 21:36:18 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7928
7929         * Redefined the SILC MP API in lib/silcmath/silcmp.h. The API
7930           is now real and not just an macro interface to GMP.
7931
7932           Removed the entire GMP from the source tree and imported new
7933           NSS MPI library instead.  Reason for removing GMP is that it is
7934           extremely large and compiles extremely slow.  The NSS MPI
7935           is only a few files and compiles in less than 10 seconds.
7936           The speed is also about the same as GMP.  The MPI is imported
7937           to lib/silcmath/mpi.
7938
7939           If the system has GMP installed we will still use the GMP.
7940           If it is not then the NSS MPI will be compiled.
7941
7942 Mon Jun 11 18:07:24 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7943
7944         * Merged a long nickname (127 characters long) crash bugfix from
7945           Irssi CVS tree.  Affected file irssi/src/core/misc.c.
7946
7947         * Merged a freed memory reference bugfix from Irssi CVS tree.
7948           Affected file irssi/src/core/commands.c.
7949
7950 Sun Jun 10 16:08:35 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7951
7952         * Added the server's public key sving and verification to the
7953           server when performing the SKE.  This was missing and the
7954           remote server's (or router's) public key was accepted without
7955           checking whether we have it previously or trust it at all.
7956           Affected file silcd/protocol.c.
7957
7958 Sat Jun  9 20:17:30 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7959
7960         * Check in the silc_server_timeout_remote if protocol is active
7961           and make sure that the protocol's final callback is called so
7962           that all memory if freed.  Affected file silcd/server.c.
7963
7964 Sat Jun  9 12:51:27 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7965
7966         * silc_server_whois_send_reply crashed the server if the nickname
7967           was 127 characters long.  Affected file silcd/command.c.
7968
7969 Thu Jun  7 16:29:56 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7970
7971         * Added sanity check to the silc_server_new_client. If the hostname
7972           is provided inside username then check that the provided hostname
7973           really is the same as the resolved one.  If the hostname was not
7974           resolved then check it from the public key.  Affected file is
7975           silcd/packet_receive.c.
7976
7977         * Fixed a fatal bug in Irssi SILC client. Do not send QUIT command
7978           if the server disconnected us and the connection is not valid
7979           anymore.  Affected file irssi/src/silc/core/silc-channels.c.
7980
7981         * Moved the silc_client_[chmode|chumode|chumode_char] away from
7982           the library to the lib/silcutil/silcutil.[ch].
7983
7984 Thu Jun  7 08:57:16 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7985
7986         * Close log file after open.  Affected file
7987           lib/silcutil/silclog.c.
7988
7989         * Check whether sock == NULL in silc_client_send_packet and return
7990           if it is.  Affected file lib/silcclient/silcclient.c.
7991
7992         * Check rec->entry == NULL in the Irssi SILC Client before
7993           sending the channel message.  Affecte file is
7994           irssi/src/silc/core/silc-servers.c.
7995
7996 Tue Jun  5 08:08:21 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
7997
7998         * Merged a splitted window bugfix from Irssi CVS tree.  The
7999           affected file is irssi/src/fe-text/textbuffer-view.c.
8000
8001         * Fixed the ME, ACTION and NOTICE printing in Irssi Client.
8002           It did not print nickname.
8003
8004         * Improved the distributions system a bit.
8005
8006 Mon Jun  4 17:57:16 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8007
8008         * Merged /WINDOW bugfix from irssi CVS tree. Affected file is
8009           irssi/src/fe-text/gui-window.c.
8010
8011         * Fixed a fatal bug in Irssi SILC client. Crashed if sent message
8012           to in-active server.  The affected file is
8013           irssi/src/silc/core/client_ops.c.
8014
8015         * Resolve the client in USERS command reply if the entry does
8016           not have username resolved.  The affected file is
8017           lib/silcclient/command_reply.c.  Also, changed the IDENTIFY
8018           command to WHOIS command to really resolve stuff.  The USERS
8019           is not used any more in any critical section so WHOIS can
8020           be used even though it might be slower than IDENTIFY.
8021
8022         * Changed the lib/silcutil/silchashtable.h header to ROBODoc
8023           format.
8024
8025 Sun Jun  3 14:21:32 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8026
8027         * Changed the protocol API a bit more consistent in the
8028           lib/silccore/silcprotocol.[ch].
8029
8030         * Changed the following headers to ROBODoc format:
8031
8032                 lib/silccore/silcpayload.h
8033                 lib/silccore/silcprotocol.h
8034                 lib/silccore/silcsockconn.h
8035
8036           All core library headers are now formatted.
8037
8038 Sat Jun  2 10:45:09 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8039
8040         * Fixed a bug in Irssi SILC client; do not show that you are
8041           server/router operator if you really are not.  Affected file is
8042           irssi/src/silc/core/client_ops.c.
8043
8044         * Renamed silc_command_free_payload to silc_command_payload_free.
8045           Affected file lib/silccore/silccommand.h
8046
8047         * Added silcmath.h to include the prototoypes of various routines
8048           in the lib/silcmath.  Removed the old modinv.h, mpbin.h and
8049           silcprimegen.h.
8050
8051         * Changed the following headers to ROBODoc format:
8052
8053                 lib/silccore/silcchannel.h
8054                 lib/silccore/silccommand.h
8055                 lib/silccore/silcid.h
8056                 lib/silccore/silcidcache.h
8057                 lib/silccore/silcmode.h
8058                 lib/silccore/silcnotify.h
8059                 lib/silccore/silcpacket.h
8060                 lib/silcmath/silcmath.h
8061
8062 Fri Jun  1 22:19:37 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8063
8064         * Added checking to the server code not to start the server if
8065           ciphers and stuff are not configured properly.  Affected files
8066           silcd/serverconfig.[h] and silcd/server.c.
8067
8068         * Changed the layout of the header files of the public interfaces
8069           in the SILC libraries.  The new layout supports ROBODoc
8070           documentation tool (and some others) so that it is easy to create
8071           a library reference manual.  All the other headers and source
8072           code must still follow the CodingStyle document.  Also source
8073           code must not include these ROBODoc stuffs, only the headers.
8074           Furthermore, all public interface headers must now be named
8075           by using `silc' prefix, example: silcapi.h, silccipher.h.
8076           Some files were renamed due to this.  All the other headers
8077           must not be used as public interfaces.  I will update the
8078           CodingStyle document later.  Changed following headers, so far:
8079
8080                 lib/silcclient/silcapi.h
8081                 lib/silccore/silcauth.h
8082                 lib/silccore/silcprivate.h
8083                 lib/silccrypt/silcdh.h
8084
8085 Fri Jun  1 10:28:09 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8086
8087         * Updated TODO.
8088
8089         * Removed silc_client_packet_send_flush from the client library
8090           as it is not needed.  Affected file lib/silcclient/client.[ch].
8091
8092         * Added printing of message of unresolved authentication method
8093           to the Irssi SILC client.  Added it to the module formats.
8094           Removed the same message from the client library.
8095
8096 Thu May 31 13:57:33 CEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8097
8098         * Added new distribution feature, DISTLABEL.  Every distribution
8099           can define own preprocessor label that can be used in the
8100           source code.  For example: #ifdef SILC_DIST_CLIENT.  Affected
8101           file distributions, acconfig.h.pre and prepare.
8102
8103 Tue May 29 22:16:40 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8104
8105         * Added Makefile.defines_int to include the actual definitions
8106           for Makefile.defines.in.  Tested the new distribution system,
8107           created distributions and tested installation.
8108
8109         * Added AWAY message printing to the Irssi SILC client.  Added
8110           the messages to the irssi/src/fe-common/silc/module-formats.[ch].
8111
8112         * Added SCONNECT command to call the SILC's CONNECT command.
8113           Cannot use CONNECT directly since Irssi uses that internally.
8114           Affected file irssi/src/silc/core/silc-servers.c.
8115
8116           Added ACTION local command.  It is same as ME command but takes
8117           the channel as mandatory argument.
8118
8119           Rewrote some of the Irssi's help files to suite for SILC
8120           protocol.
8121
8122 Mon May 28 19:05:22 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8123
8124         * Added Makefile.defines[.in] that should for now on be included
8125           in all Makefile.am file in the source tree.  That file includes
8126           all common compilation definitions for SILC source tree.
8127
8128 Mon May 28 10:30:51 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8129
8130         * Minor changes to the ./prepare script to change the package
8131           name according the distribution name to the configure.in.
8132
8133 Sun May 27 22:24:57 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8134
8135         * Created new distribution system.  Added file `distributions'
8136           that defines all the distributions that can be created out of
8137           the SILC source tree.  The ./prepare script now reads that
8138           file to determine how to prepare the distributions.  The
8139           first argument to the ./prepare is the name of the distribution
8140           and second is the version of the distribution.  If given
8141           without arguments it creates the default (toolkit) distribution
8142           with the default version (defined in ./prepare).
8143
8144           All Makefile.am files that are subject to the distributions
8145           are now named as Makefile.am.pre.  These are ./Makefile.am
8146           and lib/Makefile.am.  Others may be changed later.
8147
8148 Sun May 27 15:57:17 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8149
8150         * Added invite list, ban list, some key management and connection
8151           error message printing to module formats in the Irssi SILC client.
8152
8153         * Added new silc_client_set_away_message to set the away message
8154           that is back to the person who sent private message.  The
8155           affected file lib/silcclient/silcapi.h and the
8156           lib/silcclient/client_prvmsg.c.
8157
8158 Sun May 27 12:39:48 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8159
8160         * Fixed the private message sending in the Irssi SILC client,
8161           added local command KEY to the Irssi SILC client.
8162
8163           Added key management and key agreement message formats to the
8164           irssi/src/fe-common/silc/module-formats.[ch].
8165
8166           Added USERS (alias WHO) printing, server/router operator
8167           indication and LIST command printing to the module formats.
8168
8169 Sat May 26 17:43:42 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8170
8171         * Fixed channel joining notify handling, cumode notify handling
8172           from Irssi SILC client.
8173
8174         * Added SILC specific module-formats to the Irssi SILC client so
8175           that SILC specific message hilighting, colors etc is possible.
8176           Affected file irssi/src/fe-common/silc/module-formats.[ch].
8177
8178           Added channel mode, channel user mode, actions, notices,
8179           whois and whowas printing to the the module-formats.c.
8180
8181         * Fixed a bug in channel deletion in the server.  The channel
8182           is not left to the cache even if the channel founder auth mode
8183           is set when there are no users anymore on the channel.  Affected
8184           file silcd/server.c.
8185
8186         * The silc_net_localhost now resolves the entire hostname including
8187           the domain name.  Affected file lib/silcutil/silcnet.c.
8188
8189 Sat May 26 12:13:37 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8190
8191         * Changed the ask_passphrase client operation to be ascynchronous.
8192           It has now a completion callback and a context that the
8193           application must call after it has got the passphrase from
8194           the user.  Affected files lib/silcclient/silcapi.h,
8195           lib/silcclient/protocol.c, lib/silcclient/command.c and
8196           silc/client_ops.c.
8197
8198           Added SilcAskPassphrase callback that the application calls
8199           to deliver the passphrase to the library.
8200
8201         * Changed the SKE protocol's SilcSKEVerifyCb to be asynchronous.
8202           The public key verification and especially a certificate
8203           verification is asynchronous procedure.
8204
8205           Added new SILC_SKE_STATUS_PENDING status to indicate the
8206           request is pending and a callback will be called to finalize
8207           the request.
8208
8209           Added also SILC_SKE_STATUS_PUBLIC_KEY_NOT_PROVIDED status to
8210           indicate that remote end did not send its public key (or
8211           certificate), even though we require it.  Added check for this
8212           condition in the SKE.  This was a security bug, now fixed.
8213
8214           Defined new SilcSKEVerifyCbCompletion callback that is called
8215           when the verification process is completed.
8216
8217           The affected files lib/silcske/silcske_status.h and
8218           lib/silcske/silcske.[ch].
8219
8220         * Changed the verify_public_key client operation to be async
8221           as well.  Defined SilcVerifyPublicKey callback that is used to
8222           indicate the success of the public key verification process.
8223
8224           Changed the server and client to use the new async client
8225           operations.
8226
8227         * Changed the Irssi SILC client's internal scheduler to be called
8228           twice as many times as it used to be.  As a result the client
8229           should be a bit faster now.  Affected file is
8230           irssi/src/silc/core/silc-core.c.
8231
8232         * Added support to Irssi SILC client of asynchronous public key
8233           verification and passphrase inquiry.  Affected file is
8234           irssi/src/silc/core/silc-core.c.
8235
8236 Fri May 25 14:38:38 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8237
8238         * Do not say "You have left channel %s" in client library.
8239           Moved it to the application.  Affected files are
8240           lib/silcclient/command.c and silc/client_ops.c.
8241
8242         * Fixed silc_client_get_clients.  Command context was not
8243           duplicated and was freed memory in the callback.  Affected
8244           file lib/silcclient/idlist.c.
8245
8246         * Do not say "you are now talking..." on JOIN command in the
8247           client library.  The appliation must handle it.
8248
8249         * Do not say ".. changed topic to" in command reply in the
8250           client libary.  The application must handle it.
8251
8252         * Fixed TOPIC command sending in the client library.
8253
8254         * Fixed a memory leak in silc_client_command_free in the file
8255           lib/silcclient/command.c.
8256
8257 Thu May 24 19:08:55 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8258
8259         * Imported a modified version of Irssi client to the source tree.
8260           The Irssi will be used to create a new client called
8261           Irssi SILC.  Imported to irssi/.
8262
8263           Added silc_core_init_finish function to the Irssi.  Affected
8264           file irssi/configure.in.
8265
8266           A lot changes in the Makefile.ams around the irssi tree.
8267
8268 Tue May 22 22:23:49 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8269
8270         * Do not rehash if the new size is same as the old size of the
8271           hash table, in the silc_hash_table_rehash*.  The affected file
8272           lib/silcutil/silchashtable.c.
8273
8274         * Replaced hash_table_del_by_context calls from the server
8275           (when channel->user_list and client->channels) to the
8276           hash_table_del as it is sufficient and faster.
8277
8278 Tue May 22 17:27:16 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8279
8280         * Added silc_hash_table_list, silc_hash_table_get and the
8281           SilcHashTableList structure to provide an alternative way to
8282           traverse the hash table.  The affected files are
8283           lib/silcutil/silchashtable.[ch].
8284
8285         * Changed the server's idlist routines to use the hash table
8286           routines to optimize the code.
8287
8288 Mon May 21 21:46:20 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8289
8290         * Replaced the client entry's `channel' list and channel entry's
8291           `user_list' list to hash tables for optimized lookup.  Changed
8292           the code to use the hash table interface around the code.
8293           Affected file lib/silcd/idlist.[ch].
8294
8295         * Added `auto_rehash' boolean argument to the function
8296           silc_hash_table_alloc to indicate whether the hash table should
8297           auto-rehash when it thinks is appropriate time.  It will
8298           increase the hash table size if the there is twice as much
8299           entries in the table than the size of the table, and will
8300           decrease the size if there are twice as less entries than
8301           the size of the table.
8302
8303 Mon May 21 09:51:11 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8304
8305         * Fixed silc_xxx_get_supported to not crash at some circumstances.
8306
8307 Sun May 20 13:45:58 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8308
8309         * silc_idcache_purge_by_context deletes the entry now by context
8310           as it is supposed to do.  Affected file lib/silccore/idcache.c.
8311
8312         * Send the ERR_NO_SUCH_NICK in the WHOIS command reply if the
8313           client is not anymore valid (WHOWAS givens the info) and not
8314           the ERR_NO_SUCH_CLIENT_ID if the nickname still exists.
8315
8316 Sat May 19 16:30:03 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8317
8318         * Removed the `data' and `data_len' arguments from the ID Cache
8319           interfaces and added `name' argument.  ID Cache does not handle
8320           anymore the binary data only a names associated with given ID.
8321
8322         * When hashing a Client ID with silc_hash_id the entire ID is
8323           not hashed anymore, instead only the hash of the Client ID is
8324           hashed.  This way we can access the Client ID from the cache
8325           with Client ID but with the hash of the ID (which is a hash of
8326           the nickname) as well without any difference in performance.
8327
8328           Added also silc_idcache_find_by_id_one_ext to do one on one
8329           searching when we have the actual ID.  Added also function
8330           silc_hash_client_id_compare.  The affected files are
8331           lib/silccore/idcache.[ch] and lib/silcutil/silcutil.[ch].
8332
8333         * When hashing the name associated with a ID it is always done
8334           in lowercase.  This way we can access the cache without worrying
8335           about case-sensitivity, even though, for example nicknames are
8336           case sensitive.
8337
8338         * Fixed a bug in server with channel message sending.  It put
8339           wrong ID type as destination ID.  The affected file
8340           silcd/packet_send.c.
8341
8342         * silc_idcache_del_by_context now deletes from all hash tables
8343           by context.  Affected file lib/silccore/idcache.c.
8344
8345 Fri May 18 17:42:00 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8346
8347         * Changed the client library to use the new ID Cache interface.
8348           Changes around the source tree.
8349
8350         * Added silc_hash_table_rehash_ext to rehash with specific
8351           hash function.  Affected file lib/silcutil/silchashtable.[ch].
8352
8353         * Added silc_hash_string_compare to compare two strings in the
8354           hash table.  Affected file lib/silcutil/silcutil.[ch].
8355
8356 Fri May 18 11:18:45 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8357
8358         * Added new function silc_idcache_del_by_context into the
8359           lib/silccore/idcache.[ch].
8360
8361         * Changed the server's ID list routines to use the new ID Cache
8362           interface.  Changes around the source tree.
8363
8364 Fri May 18 08:35:31 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8365
8366         * Added silc_hash_table_del[_by_context]_ext functions in to the
8367           lib/silcutil/silchashtable.[ch].
8368
8369           Removed silc_hash_table_find_all* routines and added new
8370           silc_hash_table_find_foreach to replace them.
8371
8372           Added silc_hash_table_replace_ext function as extended
8373           replacing function.  Separated the simple hash table interface
8374           from the extended hash table interface in the file
8375           lib/silcutil/silchashtable.h.
8376
8377         * Fixed minor bugs and changed it to use some of the new
8378           hash table functions in lib/silccore/idcache.c
8379
8380 Thu May 17 18:15:12 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8381
8382         * Added new function silc_hash_table_find_all to return all keys
8383           in the hash table by the specified key.  As the hash table is
8384           collision resistant it also makes it possible to have several
8385           duplicate keys in the hash table.  This function may be used to
8386           find all of the keys from the hash.
8387
8388           Added user_context arguments to the SilcHashFunction,
8389           SilcHashCompare and SilcHashDestructor to deliver user specified
8390           context.
8391
8392           Added new fuctions silc_hash_table_find[_all]_ext to do
8393           extended lookup with specified hash and compare functions and
8394           specified user contexts.
8395
8396           Added new function silc_hash_table_add_ext to add the key
8397           with specified hash function and user context.
8398
8399           Added new function silc_hash_table_foreach to traverse all
8400           entrys in the hash table.  Added SilcHashForeach callback
8401           function.
8402
8403           Added new function silc_hash_table_del_by_context to delete
8404           the entry only if the context associated with the key matches.
8405
8406           Affected files are lib/silcutil/silchashtable.[ch].
8407
8408         * Removed silc_hash_[server/client/channel]_id and added just
8409           silc_hash_id to the lib/silcutil/silcutil.[ch].  Added also
8410           silc_hash_id_compare to compare two ID's using as the hash table
8411           comparison function.  Added also silc_hash_data to hash
8412           binary data and silc_hash_data_compare to compare it.
8413
8414         * Removed silc_idlist_find_client_by_hash as it is not needed
8415           anymore.  Affected file silcd/idlist.[ch].
8416
8417         * Rewrote the entire ID Cache system (in lib/silccore/idcache.[ch])
8418           to use internally the SilcHashTable.  The new ID Cache is a lot
8419           faster than the old one.  Some of the ID Cache interface was also
8420           rewritten and obsolete and stupid functions were removed.
8421
8422 Wed May 16 23:03:30 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8423
8424         * Added entry_count field to the SilcHashTable to keep the number
8425           of the entries in the table.  Implemented the function
8426           silc_hash_table_rehash.  Added new function
8427           silc_hash_table_count.  Affected file lib/silcutil/silchashtable.c.
8428
8429           Fixed a minor bug in silc_hash_table_free.
8430
8431         * Added silc_hash_string, silc_hash_uint, silc_hash_ptr,
8432           silc_hash_client_id, silc_hash_server_id and silc_hash_channel_id
8433           into the lib/silcutil/silcutil.[ch].
8434
8435 Wed May 16 20:02:47 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8436
8437         * Implemented a collision resistant hash table into the
8438           lib/silcutil/silchashtable[ch].  See the header and the source
8439           for the SilcHashTable API.
8440
8441 Tue May 15 22:05:46 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8442
8443         * Merged dotconf version 1.0.2 into lib/dotconf.
8444
8445 Sun May 13 19:32:09 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8446
8447         * Do not compile anything in lib/silcsim/* if the SIM support
8448           is not enabled.  The tree should now compile without problems
8449           under cygwin.
8450
8451 Thu May 10 22:49:51 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8452
8453         * Compiled the SILC under cygwin.  Compiled and tested briefly
8454           without problems.  More tests needed.  The SIMs didn't compile
8455           though.
8456
8457         * Added various #ifdef HAVE_* stuff to lib/silccrypt/silrng.c.
8458
8459         * Fixed possible crash in silc_get_username in the
8460           lib/silcutil/silcutil.c.
8461
8462 Tue May  8 09:04:03 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8463
8464         * Fixed a va_arg in silc/client_ops.c.
8465
8466         * Oops, RC5 routines were named AES and caused some problems
8467           when not using SIM's.  Affected file lib/silccrypt/rc5.c.
8468
8469 Sun May  6 13:59:48 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8470
8471         * Added new SilcIDIP structure into the lib/silccore/id.h and
8472           replaced the old `ip' fields from all SILC ID's to that type.
8473           This is a step towards IPv6 support.
8474
8475           The silc_id_get_len takes now the ID as an extra argument.
8476           The silc_id_id2str, silc_id_str2id and silc_id_dup now supports
8477           both IPv4 and IPv6 based ID's.
8478
8479           The affected files are lib/silccore/id.[ch] and other files
8480           around the tree using these routines.
8481
8482         * Removed the ID length arguments in server from various
8483           silc_server_send_notify_* routines -> they are not needed
8484           anymore.
8485
8486 Sat May  5 13:56:33 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8487
8488         * Fixed memory leak in silc_encode_pem_file in the file
8489           lib/silcutil/silcutil.c.
8490
8491 Thu May  3 21:23:50 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8492
8493         * Check minor version as well in the SKE.  Affected files are
8494           silcd/protocol.c and lib/silcclient/protocol.c.
8495
8496         * Added --identifier option to the server so that an identifier
8497           can be when creating the public key for the server.  Affected
8498           file is silcd/silcd.c.
8499
8500         * Fixed minor decoding bug in silc_pkcs_decode_identifier in
8501           lib/silccrypt/silcpkcs.c.
8502
8503 Wed May  2 20:50:49 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8504
8505         * Register default ciphers and stuff when using -C option with
8506           the server.  Affected file sildc/silcd.c.
8507
8508         * Put back the servers public key filename format, it is better
8509           than the new one.  For now, the client keys are saved with the
8510           new filename format.  The affected file silc/client_ops.c.
8511
8512         * Implemented the Cipher API for the rest of the ciphers that
8513           did not implement it or implemented it the wrong way.
8514
8515 Wed May  2 13:31:26 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8516
8517         * Register default ciphers and stuff when using the -S option
8518           in the client.  Affected file silc/silc.c.  Same also when
8519           creating new key pair with -C option.
8520
8521 Tue May  1 14:18:13 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8522
8523         * Fixed the silc_verify_public_key client operation function to
8524           save the public keys differently.  The fingerprint is now
8525           used as filename and not the hostname.  This way also the
8526           client keys are saved uniquely and not with hostnames.  The
8527           affected file is silc/client_ops.c.
8528
8529         * Trimmed the silc_hash_fingerprint function to remove extra
8530           whitespaces from the end of the fingerprint.  The affected
8531           file is lib/silccrypt/silchash.c.
8532
8533         * Updated TODO.
8534
8535         * Added silc_cipher_register_default function to register all
8536           default ciphers.  It can be used when configuration files
8537           does not exist and the application does not want any specific
8538           ciphers in any specific order.
8539
8540           The SilcDList is now used as silc_cipher_list dynamically
8541           allocated cipher list.  Removed the static list all together
8542           and now all ciphers must be allocated to the dynamic list.
8543           The silc_cipher_alloc routine was changed to check only the
8544           dynamic list.
8545
8546           All silc_cipher_* routines that used to return int returns
8547           now bool.
8548
8549           The affected files lib/silccrypt/silccrypt.[ch].
8550
8551         * The same thing was done to silc_hash_* as for silc_cipher_*
8552           routines.  Affected files lib/silccrypt/silchash.[ch].
8553
8554         * The same thing was done to silc_pkcs_* as for silc_cipher_*
8555           routines.  Affected files lib/silccrypt/silcpkcs.[ch].
8556           Added also silc_pkcs_[un]register[_default] functions.
8557           Removed the data_context from the PKCS API.
8558
8559         * Added silc_hmac_register_default function to register default
8560           hmacs.  Affected files lib/silccrypt/silchmac.[ch].  Added also
8561           SILC_ALL_HMACS macro that can be used with silc_hmac_unregister
8562           to unregister all hmacs at once.
8563
8564         * Register the default ciphers, hash functions, PKCSs and HMACs
8565           if client's configuration file does not exist.  The affected
8566           file silc/silc.c.
8567
8568         * The client did not load the hash functions from the SIM
8569           modules at all.  Added support for this.  Affected file is
8570           silc/clientconfig.c.
8571
8572         * When decoding public key with silc_pkcs_public_key_decode, check
8573           the supported algorithm only if PKCS are registered.  Affected
8574           file lib/silccrypt/silcpkcs.c.  The same was done with the
8575           silc_pkcs_private_key_decode.
8576
8577         * Fixed the SILC List routines to keep the list always in order.
8578           It used to change the list's order when traversing the list but
8579           not it preserves the order.  Affected file lib/trq/silclist.h.
8580
8581 Mon Apr 30 17:29:03 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8582
8583         * Added the client library to use the SilcSocketConnection's
8584           reference counter (by silc_socket_dup) to prevent the bug that
8585           the socket object may be freed underneath async operation.
8586
8587         * The name resolv library checking fixes in the configure.in.pre.
8588           The patch by salo.
8589
8590         * Created new version of the protocol drafts for future
8591           development. The -03 drafts are the ones that will be changed
8592           in the trunk now and the -02 will remain as they are.
8593
8594         * Send list of CUMODE notifys to the router when announcing
8595           the channel users to the router.  Affected file silcd/server.c.
8596           If the router receiving channel founder CUMODE for a channel
8597           that already has channel founder it will send CUMODE notify
8598           to the sender to remove the channel founder rights from the
8599           announced client.  Affected file silcd/packet_receive.c.
8600
8601         * The CUMODE notify may now use Server ID as well as the entity
8602           who changes the mode.  Updated protocool specs.
8603
8604         * Updated INSTALL and README files.
8605
8606 Sun Apr 29 23:17:50 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8607
8608         * New web pages in the http://silc.pspt.fi.  The pages was
8609           designed by salo.
8610
8611         * Updated CREDITS.
8612
8613 Sun Apr 29 13:33:41 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8614
8615         * Implemented the [DenyConnectin] config section in the server.
8616           Added silc_server_config_denied_conn to check whether incoming
8617           connection is denied.  Affected file silcd/serverconfig.[ch].
8618
8619         * Do not check the ports when checking the incoming configuration
8620           data if the port is 0, meaning any.  Affected file is
8621           silcd/serverconfig.c.
8622
8623 Fri Apr 20 18:58:43 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8624
8625         * Fixed buffer overflow in silc_string_compare in the file
8626           lib/silcutil/silcutil.c.
8627
8628         * Fixed double free in silc_server_command_leave in the file
8629           silcd/command.c.
8630
8631 Fri Apr 20 14:00:11 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8632
8633         * Fixed the version checking in the server.  Affected file is
8634           silcd/protocol.c.
8635
8636 Thu Apr 19 19:52:46 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8637
8638         * Fixed the configuration data fetching when accepting new
8639           connections in the server.  Affected file silcd/server.c.
8640
8641 Thu Apr 19 11:40:20 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8642
8643         * Added `sender_entry' argument to the function
8644           silc_server_packet_relay_to_channel so that we can check
8645           whether some destination actually belongs to the same route
8646           the sender belongs (ie, we must not resend the packet to the
8647           sender).  Affected file silcd/packet_send.[ch].
8648
8649         * Added `servername' field to the SilcClientEntry in the server
8650           to hold the name of the server where client is from.  Affected
8651           file is silcd/idlist.h.
8652
8653 Wed Apr 18 22:19:03 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8654
8655         * Moved the channel message encrypting in the router betwen
8656           router connections from silc_server_channel_message to the
8657           silc_server_packet_relay_to_channel since we want to check
8658           whether we have anybody channel before encrypting anything.
8659           Affected files silcd/packet_[receive/send].c.
8660
8661 Tue Apr 17 21:18:19 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8662
8663         * Fixed the [AdminConnection] server config section to support
8664           multiple entries.  Affected file silcd/serverconfig.c.
8665
8666         * Added support into the server to check the validity of the
8667           incoming connection before executing any KE or authentication
8668           protocols.
8669
8670         * The connection configuration is now saved to the KE and
8671           connection auth protocol contexts and not fetched anymore in
8672           the protocol.  Affected files silcd/server.c, silcd/protocol.[ch].
8673
8674         * The local hosts listenning address and port is also resolved
8675           now when starting the server.  We want to have the socket object
8676           to include the real address and port for the listener.  Added
8677           new function silc_net_check_local_by_sock into the files
8678           lib/silcutil/silcnet.[ch].
8679
8680         * Fixed a broadcast bug in server -> do not broadcast if we
8681           are standalone.
8682
8683         * Fixed a routing bug.  Do not route broadcast packets ever.
8684           Broadcast packets must be processed always and not routed since
8685           they may be destined to some other host than yourself and thus
8686           would get routed without no good reason.  Affected file is
8687           silcd/server.c.
8688
8689         * Added function silc_server_config_is_primary_route to check
8690           whether primary router connection has been configured (a router
8691           configuration that we are initiating).  If there is not, we
8692           will assume that there is only two routers in the SILC network
8693           and we will use the incoming router connection as our primary
8694           route.  Affected files silcd/serverconfig.[ch], silcd/server.c.
8695
8696         * Changed the order of the broadcasting.  Broadcast _after_ the
8697           packet has been processed not before.  Affected file is
8698           silcd/server.c.
8699
8700         * Fixed a [ClientConnection] parsing bug.  The port was never
8701           parsed correctly thus resulting to port 0.  Affected file
8702           silcd/serverconfig.c.
8703
8704         * Fixed silc_server_send_notify_args -> it ignored the `broadcast'
8705           argument and did not set the broadcast packet flag.  Affected
8706           file silcd/packet_send.c.  Fixed same bug in the function
8707           silc_server_send_notify as well.
8708
8709         * If we receive NEW_ID packet for our own ID in the server, ignore
8710           the packet.
8711
8712 Mon Apr 16 12:10:33 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8713
8714         * Updated TODO.
8715
8716         * Removed the nickname from the Private Message Payload.
8717           Updated the code and the protocol specs.
8718
8719         * Updated protocol specs for submitting to the IETF.
8720
8721         * Tweaked the Random Number Generator a bit.  Affected file
8722           lib/silccrypt/silcrng.c.  Exported a new function
8723           silc_rng_[global]_add_noise which can be used to add more
8724           noise to the RNG.
8725
8726 Sat Apr 14 16:21:32 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8727
8728         * Do not parse packets with different timeout when protocol
8729           is active -> may cause problem with rekey.  Affected file
8730           silcd/server.c.
8731
8732         * When server receives signoff notify it must not create
8733           new channel key if the client is on any channels since the
8734           sender of the signoff notify will create it.
8735
8736 Fri Apr 13 17:12:46 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8737
8738         * Added printing of error messages during SKE protocol from the
8739           failure packet sent by server during SKE.  Affected file
8740           silc/client_ops.c.
8741
8742         * Removed the client's failure_callback handling with timeout
8743           and handle it immediately when received.
8744
8745         * The SKE library returned wrong type in SUCCESS and FAILURE
8746           packets.  They must be 32 bit MSB not 16 bit MSB.
8747
8748 Fri Apr 13 00:09:08 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8749
8750         * Ok, rewrote the logic of the re-key and now it seems to work.
8751           I tested it on high traffic with frequent re-keys without
8752           problems.  Added hmac_receive (and renamed hmac to hmac_send)
8753           in SilcClientConnection in lib/silcclient/client.h and
8754           in SilcIDListData in silcd/idlist.h.  Also, removed the
8755           SilcPacketParserContext's cipher and hmac fields as they are
8756           not needed anymore and actually caused some problems when
8757           the ciphers and hmac's changed underneath the packet parser.
8758
8759 Thu Apr 12 14:42:51 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8760
8761         * If re-key protocol is active then process the incoming packets
8762           synchronously since we must assure that icoming packets encrypted
8763           with the old key is processed before the new keys is set to
8764           use.  This is true other packets than for REKEY packets.
8765           Affected file silcd/server.c.  The same was done to client library
8766           as well, affected file lib/silcclient/client.c.
8767
8768 Thu Apr 12 12:01:52 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8769
8770         * Fixed bug in client and server to accept the force send if
8771           the packet is send from silc_[server/client]_packet_process
8772           function.  Otherwise the packets are never delivered, oops.
8773
8774 Wed Apr 11 22:10:15 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8775
8776         * Disable force sending of packets when REKEY protocol is active.
8777           We must assure that no packet is sent directly when rekey is
8778           performed.  All packets must be sent through packet queue.
8779           Added macro SILC_SERVER_IS_REKEY to silcd/server.h and
8780           SILC_CLIENT_IS_REKEY to lib/silcclient/client.h.  Affected
8781           function is silc_[server/client]_packet_send_real to check
8782           the situation.
8783
8784         * Replaced the SIM paths from example config files to
8785           /usr/local/modules.  Also, make install creates now
8786           /usr/local/silc/logs directory to hold all the SILC server
8787           logs.
8788
8789 Wed Apr 11 16:59:59 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8790
8791         * Made the configure.in.pre work on Solaris.  Patch by salo.
8792
8793         * Made all ciphers compatible with non-x86 machines.  Defined
8794           CBC mode macros into lib/silccrypt/ciphers_def.h.
8795
8796 Tue Apr 10 20:32:44 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8797
8798         * Fixed the make install.
8799
8800 Tue Apr 10 16:20:34 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8801
8802         * When MAC computation fails the silc_packet_decrypt returned 0
8803           even though it was supposed to return -1.  Fixed this.  The
8804           affected file is lib/silccore/silcpacket.c.
8805
8806         * Do not replace the config files in /etc/silc (in make install)
8807           if they already exist.  Affected file ./Makefile.am.
8808
8809         * Do not send re-key packets immediately but through packet queue.
8810           Affected file silcd/protocol.c and lib/silcclient/protocol.c.
8811
8812         * Changed silc_net_check_host_by_sock to return FALSE if the
8813           IP/DNS could not be resolved.  Though, it returns the IP address
8814           now even if it could not resolve it (but returns also FALSE).
8815           Affected file lib/silcutil/silcnet.[ch].
8816
8817 Mon Apr  9 21:54:44 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8818
8819         * Added silc_pkcs_decode_identifier to decode the public key's
8820           identifier.  Affected file lib/silccrypt/silpkcs.[ch].
8821           Added also silc_pkcs_free_identifier.  Added also new context
8822           SilcPublicKeyIdentifier.
8823
8824         * Added -S option to the silc client.  It is used to dump the
8825           contents of the specified public key file.
8826
8827         * Changed the PKCS api to return the public key length when
8828           setting the public key.
8829
8830         * Fixed a fatal bug in the public and private key file loading.
8831           Affected file lib/silccrypt/silcpkcs.c.
8832
8833         * Execute the packet parsing for client with zero (0) timeout
8834           if the protocol is active.  Affected file silcd/server.c.
8835
8836 Sun Apr  8 19:30:56 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8837
8838         * Made the key generation options to the silcd program.  Added
8839           -C option, equivalent to client's option.
8840
8841         * Added new [ServerKeys] config section to the server.  It
8842           configures the server's public and private key.
8843
8844         * Defined generic Public Key Payload into the protocol
8845           specification to send specific type of public keys and
8846           certificates.
8847
8848         * Defined new command SILC_COMMAND_GETKEY to fetch a client's
8849           public key or certificate.
8850
8851         * Implemented the GETKEY command to the server and to the
8852           client library and on user interface.
8853
8854 Sun Apr  8 01:37:21 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8855
8856         * Made preliminary `make install' work.
8857
8858 Thu Apr  5 17:42:30 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8859
8860         * Added SilcServerRekey context into silcd/idlist.h.
8861
8862         * Added the PFS support as defined in the specification to the
8863           SKE protocol.  Affected files lib/silcske/*.c.
8864
8865         * Added `ske_group' field to the SilcServerRekey context to hold
8866           the number of the SKE group that is used with PFS in re-key.
8867           Affected file silcd/idlist.h.
8868
8869         * Added PFS re-key support to the server.  Affected file is
8870           silcd/protocol.c.
8871
8872         * Added silc_protocol_cancel to cancel execution of the next
8873           state of the protocol.  Affected file is
8874           lib/silccore/silcprotocol.[ch].
8875
8876         * Added the re-key support with and without PFS to the client
8877           library.  Re-key is performed once in an hour, by default.
8878
8879           Added new protocol type SILC_PROTOCOL_CLIENT_REKEY.
8880           Added silc_client_rekey_callback and silc_client_rekey_final.
8881           Affected files are lib/silcclient/protocol.[ch] and
8882           lib/silcclient/client.[ch].
8883
8884         * Removed the `hmac_key' and `hmac_key_len' fields from the
8885           SilcClientConnection structure; not needed.  Affected file is
8886           lib/silcclient/client.h.
8887
8888         * Updated TODO.
8889
8890 Wed Apr  4 16:32:31 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8891
8892         * Do not ask whether user wants to use the negotiated private key
8893           for private messages, just use it.  Affected file is
8894           silc/local_command.c.
8895
8896         * Added `send_enc_key' and `enc_key_len' fields to the
8897           SilcIDListData structure since they are needed in the re-key
8898           phase.  Affected file is silcd/idlist.[ch].
8899
8900         * Implemented the simple re-key protocol into the server.
8901           Affected files silcd/server.c and silcd/protocol.[ch].  The
8902           re-key will be performed once in an hour, by default.
8903
8904           Added new protocol type SILC_PROTOCOL_SERVER_REKEY.
8905           Added silc_server_rekey, silc_server_rekey_callback and
8906           silc_server_rekey_final.
8907
8908         * Removed Tunneled flag from the protocol.  Updated the code
8909           and the specifications.
8910
8911         * Adde `pfs' field to the SilcIDListData to indicate whether
8912           the PFS is to be performed in the re-key.  Affected file is
8913           silcd/idlist.h.
8914
8915 Tue Apr  3 21:52:42 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8916
8917         * Defined uint8, int8, uint16, int16, uint32, int32, uint64 and
8918           int64 of at least the xintXX size.  If void * is less that 4
8919           bytes uint32 * will be used.  Defined bool as boolean.
8920
8921         * Changed _ALL_ unsigned long and unsigned int to uint32,
8922           unsgined short to uint16 in the source tree.
8923
8924         * Fixed a fatal bug in silc_server_remove_clients_by_server.  Do
8925           not handle clients that has entry->data.registered == FALSE.
8926           They are not in the network anymore.  Affected file is
8927           silcd/server.c.
8928
8929 Tue Apr  3 16:39:19 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8930
8931         * Implemented the sending of the SERVER_SIGNOFF notify in the
8932           server.  Affected file is silcd/server.c.
8933
8934         * Added silc_server_send_notify_args into silcd/packet_send.[ch].
8935           Added also silc_notify_payload_encode_args into the
8936           lib/silccore/silcnotify.[ch].
8937
8938         * Implemented ther SERVER_SIGNOFF notify handling in the server.
8939           Affected file silcd/packet_receive.c.
8940
8941         * Implemented the SERVER_SIGNOFF notify handling in the client
8942           library.  Affected file lib/silcclient/client_notify.c.  Also,
8943           implemnted the printing of the SERVER_SIGNOFF info to the
8944           application.  Affected file silc/client_ops.c.
8945
8946         * The silc_idlist_del_server now returns TRUE or FALSE to indicate
8947           if the deleting was successful.  Affected file silcd/idlist.[ch].
8948
8949         * Added support for public key authentication in the connection
8950           authentication protocol in the client library.  Affected file
8951           lib/silcclient/protocol.c.
8952
8953         * Changed the server's silc_idlist_get_clients_by_* interface
8954           to support already allocated array so that new entries may be
8955           added to pre-allocated array.  Affected file silcd/idlist.[ch].
8956           This fixes some bugs with WHOIS, WHOWAS and IDENTIFY commands
8957           and command replies.
8958
8959         * All command reply functions in the server now calls the
8960           pending command callback even if error occured.  This way the
8961           error will be delivered to the client as well.  Affected files
8962           silcd/command.c and silcd/command_reply.c.
8963
8964         * Fixed INFO command to return local server's info if no server
8965           was provided.  Affected file lib/silcclient/command.c.
8966
8967         * Removed RESTART command for good.  Updated the code and the
8968           protocol specs.
8969
8970         * Rewrote parts of the task system.  It is a bit simpler now.
8971           Removed unsued task priorities. The affected files are
8972           lib/silcutil/silctask.[ch].
8973
8974 Mon Apr  2 20:02:33 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8975
8976         * Moved the USERS printing from the library to the application.
8977           Affected files lib/silcclient/command.c and silc/client_ops.c.
8978
8979 Mon Apr  2 13:13:23 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8980
8981         * Updated TODO.
8982
8983         * Added channel key re-key support.  The re-key is perfomed
8984           only by the router and is done once in an hour.  Added `rekey'
8985           field to the SilcChannelEntry in the server.  Affected files
8986           silcd/server.c and silcd/idlist.h.
8987
8988         * Added silc_task_unregister_by_context into the file
8989           lib/silcutil/silctask.[ch].
8990
8991 Sun Apr  1 19:49:34 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
8992
8993         * Added SILC_UMODE_GONE mode to indicate when the client is not
8994           present in the SILC network.  Added also support to the local
8995           command AWAY that will set this mode.  Added support of showing
8996           "xxx is gone" in WHOIS command.  The USERS command shows the
8997           gone status as well.
8998
8999         * Fixed setting server and router operator privileges in the
9000           server's UMODE command.  Affected file silcd/command.c.
9001
9002         * Merged the SKE KE1 and KE2 payloads into one payload.  The
9003           new KE payload is equivalent to the old KE2 payload.
9004
9005           Cleaned up the SKE Start Payload parsing.  It now uses the
9006           simple buffer unformatting to do the parsing.  A lot faster
9007           now.
9008
9009           Added new Mutual Authentication flag (SILC_SKE_SP_FLAG_MUTUAL)
9010           to the SKE that is used to indicate whether both of the SKE
9011           parties should perform authentication.  By default only the
9012           responder performs authentication.  By setting this flag also
9013           the initiator must do authentication.  By default it is unset
9014           since in normal SKE case, client to server connection, only
9015           the responder should do authentication.  When doing SKE between
9016           two clients both should perform authentication.  Updated the
9017           code and the protocol specs.
9018
9019         * A little fix to IDENTIFY command in the server.  Search the
9020           client first by hash not nickname.  Affected file is
9021           silcd/command.c.
9022
9023         * Fixed the silc_client_close_connection to support closing
9024           the client to client connections wihtout deleting too much
9025           data.  Affected file lib/silcclient/client.c.
9026
9027         * Fixed a fatal bug in server and client; if KE1 or KE2 packets
9028           are received if protocol used to be active but is not anymore
9029           the application would crash due to NULL pointer dereference.
9030           Affected files silcd/server.c and lib/silcclient/client.c.
9031
9032         * Added `hash' field to the SilcClientConnection to include
9033           the hash function negotiated in the SKE protocol.
9034
9035         * Added new channel mode SILC_CMODE_FOUNDER_AUTH that is used
9036           to set the channel founder authentication data.  A client can
9037           claim the founder rights later by providing the authentication
9038           data to the CUMODE command using SILC_CUMODE_FOUNDER mode.
9039           This way the channel founder can regain the channel founder
9040           privileges even it is left the channel.  This works only on
9041           local server and the client must be connected to the same
9042           server to be able to regain the founder rights.  Updated the
9043           protocol specs accordingly.
9044
9045           Added support to the CMODE command in the client to set the
9046           founder auth data.  Read the README to see how to set it.
9047
9048           Added support to the CUMODE command to claim the founder
9049           rights.  Read the README to see how to do it.
9050
9051           Added support for the founder authentication to the Channel
9052           Entry in the server.  Affected file silcd/idlist.h.
9053
9054           Added support for the SILC_CMODE_FOUNDER_AUTH mode in the
9055           server's CMODE command.  Affected file silcd/command.c.
9056
9057         * Added the following new functions into lib/silccore/silcauth.[ch]:
9058           silc_auth_get_method and silc_auth_get_data.
9059
9060         * The server now saves the remote hosts public key to the
9061           SilcIDListData pointer.  Affected file silcd/protocol.c.
9062
9063         * The normal server now does not remove the channel entry from
9064           the cache if the founder authentication data is set.  It used
9065           to remove it if the founder was the last one on the channel on
9066           the server and left the channel.  The auth data is saved and
9067           if the channel is re-joined later the old entry is used with
9068           the old auth data.  Affected files silcd/command_reply.c and
9069           silcd/server.c.
9070
9071         * Removed the `pkcs' field from the SilcIDListData structure
9072           in the server; it is not used.  Affected file silcd/idlist.h.
9073
9074 Sat Mar 31 15:38:36 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9075
9076         * Fixed packet processing on slow links.  Partial packets were
9077           never re-processed because the incoming data buffer was cleared
9078           by the application.  Application must not directly clear the
9079           sock->inbuf, the packet processing routines handle it.  Fixed
9080           this in client library and in server.
9081
9082 Fri Mar 30 16:35:27 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9083
9084         * Fixed the WHOIS and IDENTIFY send reply function to really
9085           check whether to send list or just one entry.  Affected file
9086           silcd/command.c.
9087
9088         * Cleaned up the LEAVE command's channel key distribution.  The
9089           affected file silcd/command.c.
9090
9091         * Changed CMODE_CHANGE's <Client ID> to <ID Payload> as server
9092           can enforce the channel mode as well.  In that case the ID
9093           includes the ID of the server.  The code now enforces the
9094           mode change if the router have different mode than the server.
9095
9096         * The notify client operation with CMODE_CHANGE notify can now
9097           return NULL client_entry pointer if the CMODE was not changed
9098           by client.  Application must check for this.
9099
9100         * Added <Server ID> argument to INFO command to support server
9101           info fetching by Server ID.
9102
9103         * Added silc_server_announce_get_channel_users to get assembled
9104           packets of channel users of the specified channel.  Affected
9105           file silcd/server.[ch].
9106
9107         * Fixed bug in CHANNEL_CHANGE notify in the server.  The new ID
9108           was freed underneath the ID Cache.
9109
9110         * Re-announce clients when the server received CHANNEL_CHANGE
9111           notify from the router.  Affected file silcd/packet_send.c.
9112
9113 Thu Mar 29 19:10:28 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9114
9115         * Fixed a fatal bug when client does /join 1 2 3 4 5 6 the server
9116           crashed since it did not handle the fact that there is no cipher
9117           called "3" and didn't check the error condition.  Now fixed.
9118
9119         * Added SILC_MESSAGE_FLAG_REQUEST message flag as generic request
9120           flag.  It can be used to send message requests.
9121
9122 Thu Mar 29 12:26:25 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9123
9124         * Implemented the RESTART command in the client.
9125
9126         * Added SILC_MESSAGE_FLAG_NOTICE message flag for informational
9127           notice type messages.  Added notice printing to the user
9128           interface.
9129
9130         * The channel keys are not re-generated if the channel's mode
9131           is PRIVKEY, ie private key on the channel exists.  Affected
9132           files silcd/server.c and silcd/command.c.
9133
9134         * Fixed a little bug in channel message delivery when channel
9135           private keys are set in the server.  Affected file is
9136           silcd/packet_send.c.
9137
9138         * Changed the setting on channel->on_channel = TRUE from the
9139           silc_client_save_channel_key to the JOIN command reply.  The
9140           key payload is not received if the private channel key is set.
9141           Affected file lib/silcclient/command_reply.c and the
9142           lib/silcclient/client_channel.c.
9143
9144         * When the CMODE_CHANGE notify is sent and the channel private
9145           key mode is removed the channel key must be re-generated in
9146           other cells as well.  Added this support for the router in the
9147           silcd/packet_receive.c.
9148
9149         * Added new local command NOTICE to send notice message on
9150           channel.  Affected file silc/local_command.[ch].
9151
9152 Wed Mar 28 23:55:54 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9153
9154         * Added new local command ME to the client.  It is used to send
9155           message to a channel with SILC_MESSAGE_FLAG_ACTION to indicate
9156           some action.  Affected file silc/local_command.[ch].
9157
9158         * Changed channel_message and private_message client operations
9159           to deliver the message flags to the application.  Added also
9160           the `flags' arguments to the silc_client_send_channel_message
9161           and silc_client_send_private_message functions.  Affected file
9162           silcapi.h.
9163
9164 Wed Mar 28 20:50:47 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9165
9166         * Redefined the Private Message Payload to support private message
9167           keys and to support the new private message flags.  Updated
9168           the protocol specs.  Flags makes it possible to have for example
9169           CTCP style messages.
9170
9171         * Added new type SilcPrivateMessagePayload and defined an API
9172           for it in the lib/silcclient/silcprivate.[ch].
9173
9174         * Tested private message private keys successfully.  Tested the
9175           private message key set, unset and list commands with the new
9176           KEY command.
9177
9178         * Redefined the Channel Message Payload to include the channel
9179           message flags (equal with private message flags) to support
9180           for example CTCP style messages.
9181
9182         * Defined some of the message (for channel and private message)
9183           flags.  Updated the protocol specs and added the flags to the
9184           lib/silccore/silcchannel.h.  The type is SilcMessageFlags.
9185
9186 Wed Mar 28 15:52:36 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9187
9188         * Added SilcKeyAgreementStatus type to the key agreement routines
9189           to indicate the current status and error if one occured.
9190           The status types are defined in the lib/silcclient/silcapi.h.
9191
9192         * Added new local command KEY that is used to set and unset private
9193           keys for channels, set and unset private keys for private messages
9194           with remote clients and to send key agreement requests and
9195           negotiate the key agreement protocol with remote client.  The
9196           key agreement is supported only to negotiate private message keys,
9197           it currently cannot be used to negotiate private keys for channels,
9198           as it is not convenient for that purpose.
9199
9200         * Fixed a minor pending callback setting bug in the function
9201           silc_client_get_client_by_id_resolve, now the function works.
9202           Affected file lib/silcclient/idlist.c.
9203
9204         * Added function silc_net_get_local_port to get local bound
9205           port by socket.  Added to lib/silcutil/silcnet.[ch].
9206
9207         * Added `sockets' and `sockets_count' fields to the SilcClient
9208           object.  They hold the sockets of the listenning sockets in
9209           the client.  Listenning sockets may be for example the key
9210           agreement server.  Affected file lib/silcclient/client.[ch].
9211           Added functions the silc_client_add_socket and the
9212           silc_client_del_socket.  They are exported to the application
9213           as well.
9214
9215         * Added ~./silc/clientkeys to support other client's public keys.
9216
9217         * Renamed verify_server_key client operation to verify_public_key
9218           and added one argument to indicate the type of the connection
9219           (server, client etc.).
9220
9221 Tue Mar 27 22:22:38 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9222
9223         * Added silc_server_connection_auth_request to handle the
9224           incoming CONNECTION_AUTH_REQUEST packet.  Affected file is
9225           silcd/packet_receive.[ch].
9226
9227         * Added silc_server_send_connection_auth_request into the
9228           silcd/packet_send.c to send the connection auth request packet.
9229
9230         * Cleaned up the silcd/protocol.c a bit and fixed some memory
9231           leaks.
9232
9233         * Fixed the public key authentication in responder side in the
9234           server.  The `auth_data' pointer includes the SilcPublicKey
9235           not the path to the public key.  Affected file silcd/protocol.c.
9236
9237         * Implemented the public key authentication in the initiator side
9238           in the server.  Affected file silcd/protocol.c.
9239
9240         * Removed the [RedirectClient] config section from the server
9241           configuration.  Is not needed and I don't want to implement it.
9242
9243 Tue Mar 27 12:49:56 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9244
9245         * Cleaned up the CMODE command in the server.  It now works
9246           correctly and supports all the modes defined in the protocol.
9247           Affected file is silcd/command.c.
9248
9249         * Added `hmac_name' field to the SilcChannelEntry in the server
9250           to hold the default HMAC of the channel.  It can be set when
9251           creating the channel (with JOIN command).  Affected files
9252           silcd/idlist.[ch].
9253
9254         * Added <cipher> and <hmac> argument to the CMODE_CHANGE notify
9255           type to indicate the change of the current cipher and hmac
9256           on the channel.  Client can safely ignore the <cipher> argument
9257           (if it chooses to do so) since the CHANNEL_KEY packet will
9258           force the channel key change anyway.  The <hmac> argument is
9259           important since the client is responsible of setting the new
9260           HMAC and the hmac key into use.
9261
9262         * Fixed the CMODE command in the client library as well.
9263
9264         * Tested CMODE command in router environment successfully.
9265
9266 Mon Mar 26 14:39:48 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9267
9268         * Show the version of the remote client (or server) when connecting
9269           to the server.  It is logged to the log file.  Affected file
9270           is silcd/protocol.c.
9271
9272         * Fixed the KILLED notify handling in the client library.  The
9273           client must be removed from all channels when receiving the
9274           KILLED notify.
9275
9276           Also, do not remove the client entry when giving the KILL
9277           command but when the KILLED notify is received.
9278
9279         * Removed silc_idlist_find_client_by_nickname from the server.
9280           Not needed anymore.  Affected files silcd/idlist.[ch].
9281
9282         * Implemented the CHANNEL_CHANGE notify type handling to the
9283           server.  Affected file silcd/server.c.
9284
9285         * Updated TODO.
9286
9287 Mon Mar 26 12:11:14 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9288
9289         * Added silc_server_send_notify_invite to send the INVITE
9290           notify between routers.
9291
9292         * Implemented the INVITE command correctly to the server.
9293
9294         * Implemented the INVITE notify type handling in the server.
9295
9296         * Implemented the INVITE command to the client library and on the
9297           user interface.
9298
9299 Sun Mar 25 20:27:09 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9300
9301         * Added function silc_server_get_client_resolve to find the
9302           client entry by ID from all ID lists and then resolve it
9303           (using WHOIS) if it cannot be found.  Affected file is
9304           silcd/server.[ch].
9305
9306 Sun Mar 25 13:52:51 EEST 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9307
9308         * Implemented the BAN command to the client library.
9309
9310         * The JOIN command in the server now checks the invite list
9311           and the ban list.
9312
9313         * Changed the silc_command_reply_payload_encode_va and the
9314           silc_command_payload_encode_va to support that if argument is
9315           NULL it ignores and checks the next argument.  Affected file
9316           lib/silccore/silccommand.c.
9317
9318         * Added silc_server_send_notify_ban to send the BAN notify
9319           type between routers.
9320
9321         * Chaned the silc_notify_payload_encode to support that if
9322           argument is NULL it ignores and checks the next argument.
9323           Affected file lib/silccore/silcnotify.c.
9324
9325         * Tested ban lists in router environment successfully.
9326
9327 Sat Mar 24 14:47:25 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9328
9329         * Implemented BAN command to the server, in silcd/command.[ch].
9330
9331         * Removed the BAN and INVITE_LIST modes from the CMODE command
9332           in the server code.
9333
9334         * Added function silc_string_match to regex match two strings.
9335           Affected files lib/silcutil/silcutil.[ch].
9336
9337 Fri Mar 23 22:02:40 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9338
9339         * Redefined parts of the SilcChannelEntry in the server to support
9340           the new ban and invite lists.
9341
9342 Fri Mar 23 16:25:11 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9343
9344         * Redefined the INVITE command.  The same command can be used to
9345           invite individuals to the channel but also to manage the invite
9346           list of the channel (to add to and remove from the invite list).
9347           Updated the protocol specs.
9348
9349         * Added new command SILC_COMMAND_BAN that can be used to manage
9350           the ban list of the channel.  Updated the protocol specs.
9351
9352         * Removed the channel modes: the SILC_CMODE_BAN and the
9353           SILC_CMODE_INVITE_LIST as they were a bit kludge to be included
9354           in the CMODE command.  The equivalent features are now available
9355           using INVITE and BAN commands.  Updated the protocol specs.
9356
9357         * Added new SILC_NOTIFY_TYPE_BAN notify type to notify routers
9358           in the network about change in the current ban list.  The notify
9359           type is not used by the client.
9360
9361         * Redefined parts of the SILC_NOTIFY_TYPE_INVITE command to
9362           support the invite lists.
9363
9364 Thu Mar 22 22:52:23 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9365
9366         * Added new function silc_string_regexify that converts string
9367           including wildcard characters into regex string that can
9368           be used by the GNU regex library.  Added into the file
9369           lib/silcutil/silcutil.[ch].
9370
9371           Added silc_string_regex_combine to combine to regex strings
9372           into one so that they can be used as one regex string by
9373           the GNU regex library.  Added into the file
9374           lib/silcutil/silcutil.[ch].
9375
9376           Added silc_string_regex_match to match two strings.  It returns
9377           TRUE if the strings match.  Added into lib/silcutil/silcutil.[ch].
9378
9379 Thu Mar 22 15:29:42 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9380
9381         * Imported GNU regex to the soruce tree into lib/contrib.
9382           Fixed some compiler warning from the regex.c.
9383
9384 Wed Mar 21 15:27:58 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9385
9386         * Fixed MOTD command in the server to work in router environment.
9387
9388         * Fixed the MOTD command in the client library to support
9389           the server argument in the command.
9390
9391         * Added `nickname_len' argument to the silc_idlist_add_client
9392           in the server, as the `nickname' argument may be binary data
9393           (it may be hash).
9394
9395         * Added silc_idlist_get_channels to return all channels from
9396           the ID list.
9397
9398         * Implemented LIST command to the server.  Affected file is
9399           silcd/command.c.
9400
9401         * Implemented the LIST command to the client library and on the
9402           user interface.
9403
9404         * Added [<user count>] argument to the LIST command reply.
9405           With private channels the user count is not shown.
9406
9407         * Updated TODO and README.
9408
9409 Tue Mar 20 21:05:57 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9410
9411         * The client entry's data.registered must be TRUE even with
9412           global client entry on global client list.  The data.registered
9413           is used to check whether the client is anymore in the network,
9414           for example with WHOWAS command so it must be valid.
9415
9416         * Fixed the WHOWAS command in the server.  It now actually works
9417           in router environment.  Added function into silcd/command_reply.c
9418           silc_server_command_reply_whowas_save.
9419
9420         * Added silc_idlist_purge function to the silcd/idlist.c
9421           to periodically purge the ID Cache.
9422
9423         * Fixed INFO command in the server.  It works now in router
9424           environment.  Added <server name> argument to the INFO command
9425           reply.  Updated the protocol specs.
9426
9427         * Fixed minor bug in silc_idcache_purge to not purge if the
9428           expire value is zero.
9429
9430         * Fixed various bugs in WHOIS and IDENTIFY command handling as
9431           they were buggy because of the WHOWAS information.
9432
9433         * Fixed local command MSG to handle the async resolving of
9434           the remote client properly.  It used to fail the first MSG.
9435           Affected file silc/local_command.c.
9436
9437         * Added `data_len' field to SilcIDCache context.
9438
9439 Tue Mar 20 16:29:00 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9440
9441         * Update TODO.  Todo in commands in the server.
9442
9443 Tue Mar 20 15:45:14 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9444
9445         * Added new notify type SILC_NOTIFY_TYPE_UMODE_CHANGE that is
9446           used by routers as broadcast packet to inform other routers
9447           about the changed user mode.
9448
9449           Implemented the notify handling in the server.  Affected file is
9450           silcd/packet_receive.c.  Added the function
9451           silc_server_send_notify_umode to the silcd/packet_send.[ch].
9452
9453         * Added new generic Channel Payload and deprecated the New Channel
9454           Payload.  The New Channel Payload is now the generic Channel
9455           Payload.
9456
9457         * Added new argument `mode' to the silc_server_send_new_channel
9458           as it is required in the Channel Payload now.
9459
9460         * Renamed the SilcChannelPayload to SilcChannelMessagePayload
9461           and created a new and real SilChannelPayload to represent the
9462           new generic Channel Payload.  Implemented the encode/decode
9463           for Channel Payload.  Affected file lib/silccore/silcchannel.[ch].
9464
9465         * Added silc_server_get_client_channel_list to return the list
9466           of channels the client has joined for WHOIS command reply.
9467           Affected file silcd/server.[ch].
9468
9469         * Implemented the channel list sending in the WHOIS command reply
9470           in server and in the client.
9471
9472           Implemented the channel list displaying on the user interface
9473           as well.  Affected file silc/client_ops.c.
9474
9475         * Added silc_channel_payload_parse_list to parse list of Channel
9476           Payloads.  It returns SilcDList list of SilcChannelPayloads.
9477           Client for example can use this function to parse the list of
9478           channels it receives in the WHOIS command reply.  The caller
9479           must free the list by calling silc_channel_payload_list_free.
9480           Affected files lib/silccore/silcchannel.[ch].
9481
9482 Mon Mar 19 21:39:15 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9483
9484         * Added one new argument <user mode> to the WHOIS command reply
9485           to return the mode of the user in SILC.  Updated the protocol
9486           specs.
9487
9488           Implemented it to the server and client.
9489
9490 Mon Mar 19 18:43:06 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9491
9492         * Fixed the mode printing on the user interface on joining.
9493           Affected file silc/client_ops.c.
9494
9495         * Implemented the UMODE command and user modes in general to the
9496           client library and to the user interface.
9497
9498         * Implemented the UMODE command to the server.
9499
9500         * The server now sends UNKNOWN_COMMAND error status if client sends
9501           unknown command.  Affected file silcd/command.c.
9502
9503         * All server commands now handle the command identifier the right
9504           way when sending the command reply to the client.  The client can
9505           use to identify the command replies with the identifier.
9506
9507 Mon Mar 19 16:13:07 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9508
9509         * Added silc_server_get_client_route to resolve the route to
9510           the client indicated by the client ID.  Affected file is
9511           silcd/server.[ch].
9512
9513         * Added silc_server_relay_packet as general function to relay
9514           packet to arbitrary destination.  This deprecates functions
9515           like _send_private_message_key, _relay_notify etc.  Affected
9516           file is silcd/packet_send.[ch].
9517
9518           Removed silc_server_send_key_agreement,
9519           silc_server_send_private_message_key and
9520           silc_server_packet_relay_notify functions from the file
9521           silcd/packet_send.[ch].
9522
9523         * Updated TODO.
9524
9525         * Implemented the SILC_NOTIFY_TYPE_KILLED notify handling in the
9526           server.  Affected file silcd/packet_receive.[ch].
9527
9528         * Implemented the KILL command to the client.  Implemented the
9529           SILC_NOTIFY_TYPE_KILLED notify handling in the client library.
9530           Affected files lib/silcclient/command[_reply].c and
9531           lib/silcclient/client_notify.c.  Implemented the KILL notify
9532           printing in the user inteface.
9533
9534         * Fixed a lot silc_parse_nick memory leaks from the client
9535           library in the file lib/silcclient/command.c.
9536
9537         * Changed the silc_server_send_notify_on_channels's `sender'
9538           argument from SilcSocketConnection to SilcClientEntry to
9539           check the sender as entry and not as connection object and not
9540           to send to the client provided as argument.  The affected file
9541           is silcd/packet_send.[ch].
9542
9543         * The notify packets that are destined directly to the client used
9544           to not to be processed by the server.  Now changed that and the
9545           server processes all notify packets.  After relaying the packet
9546           to the client the notify packet is processed in the server.
9547
9548         * The silc_server_free_client_data now checks whether there is
9549           pending outgoing traffic for the client and purges the data to
9550           the network before removing the client entry.
9551
9552 Sun Mar 18 21:02:47 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9553
9554         * Added SILC_NOTIFY_TYPE_KILLED notify type.  It is sent when
9555           an client is killed from the SILC Network.  Updated the protocol
9556           specs accordingly.
9557
9558           Added new function silc_server_send_notify_killed to the
9559           silcd/packet_send.[ch].
9560
9561         * Added function silc_server_packet_relay_notify to relay notify
9562           packets that are destined directly to a client.  In this case
9563           the server does not process the notify packets but merely relays
9564           it to the client.  Affected file silcd/packet_send.[ch].
9565
9566           Added also silc_server_packet_process_relay_notify to check
9567           whereto relay the notify.  Affected file is
9568           silcd/packet_receive.[ch].
9569
9570         * Implemented the KILL command to the server.
9571
9572         * Updated TODO.
9573
9574         * Added the backup schema desgined last fall to the protocol
9575           specs for everyone to see.  The specification is in the
9576           *-spec-xx.txt draft and the packet type definitions for the
9577           backup routers is in *-pp-xx.txt draft.  Thusly, added also
9578           new packet type SILC_PACKET_CELL_ROUTERS.
9579
9580         * A big security problem in the implementation discovered.  The
9581           signoff of an client did not cause new channel key generation
9582           which it of course should've done.  The channel keys must be
9583           always re-generated when client leaves (or signoffs) the channel.
9584           The silc_server_remove_from_channels funtion now handles
9585           the channel key re-generation.
9586
9587         * Added `sender' argument to the silc_server_send_notify_on_channels
9588           to not to send the client provided as argument.  Affected file
9589           silcd/packet_send.[ch].
9590
9591 Fri Mar 16 15:52:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9592
9593         * Implemented OPER and SILCOPER commands into the server and
9594           the client library.
9595
9596         * Added silc_auth_verify and silc_auth_verify_data to verify
9597           the authentication directly from the authentication payload.
9598           It supports verifying both passphrase and public key based
9599           authentication.  Affected file lib/silccore/silcauth.[ch].
9600
9601         * Added `hash' field to the SilcIDListData structure.  It is the
9602           hash negotiated in the SKE protocol.  Affected file is
9603           silcd/idlist.[ch].
9604
9605         * Slight redesigning of the SilcAuthPayload handling routines.
9606           Do not send SilcPKCS but SilcPublicKey as argument.
9607
9608         * Implemented the public key authentication support to the
9609           serverconfig.  The public key is loaded from the provided path
9610           and saved as authentication data to void * pointer.  Thus,
9611           changed the unsigned char *auth_data to void *auth_data;
9612
9613         * Fixed SHUTDOWN command to send the reply before the server
9614           is shutdown. :)  Affected file silcd/command.c.
9615
9616         * Fixed fatal bug in CONNECT command.  The hostname was invalid
9617           memory and server crashed.  Affected file silcd/command.c.
9618
9619         * Fixed fatal bug in CLOSE command.  The server_entry became
9620           invalid but was referenced later in the command.  Affected file
9621           silcd/command.c.
9622
9623 Thu Mar 15 12:46:58 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9624
9625         * Fixed fatal bug in failure packet handling.  Server ignored
9626           the failure and thus crashed when it came.
9627
9628         * Updated TODO.
9629
9630 Wed Mar 14 20:37:35 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9631
9632         * Added new SILC_CF_LAG_STRICT command flag that strictly forces
9633           that the command may be executed only once in (about) 2 seconds.
9634           The old SILC_CF_LAG flag is same but allows command bursts up
9635           to five before limiting.
9636
9637           Added the support for CF_LAG and CF_LAG_STRICT flags to the
9638           server code.  Various commands now includes the CF_LAG_STRICT
9639           flag to disallow any kind of miss-use of the command.
9640
9641         * Fixed the silc_buffer_unformat to not to allocate any data
9642           if the length of the data is zero.  It used to allocate the
9643           length + 1.  Affected file lib/silcutil/silcbuffmt.c.
9644
9645 Wed Mar 14 16:10:30 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9646
9647         * Changed the format of AdminConnection configuration section
9648           in the server.  Added username of the admin to the format.
9649           Affected files silcd/serverconfig.[ch].
9650
9651           Added silc_server_config_find_admin into silcd/serverconfig.[ch]
9652           to return admin configuration data by host, username and/or
9653           nickname.
9654
9655 Wed Mar 14 13:18:16 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9656
9657         * Implemented WHOWAS command to the server.  Added the functions:
9658
9659           silc_server_command_whowas_parse,
9660           silc_server_command_whowas_send_reply,
9661           silc_server_command_whowas_from_client and
9662           silc_server_command_whowas_from_server
9663
9664         * Added <Client ID> argument to the WHOWAS command reply.  Updated
9665           the protocol specs accordingly.
9666
9667         * Implemented WHOWAS command and command_reply to the client
9668           library.
9669
9670           Implemented the WHOWAS printing on the user interface.
9671
9672 Tue Mar 13 22:17:34 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9673
9674         * Added new argument to the WHOWAS command reply, the real name.
9675           It is an optional argument.  Updated the protocol specs.
9676
9677         * Added SilcIDCacheDestructor callback that is registered when
9678           the SilcIDCache is allocated.  The callback is called when
9679           an cache entry in the ID Cache expires, or is purged from the
9680           cache.  Added into lib/silccore/idcache.[ch].
9681
9682           Added silc_idlist_client_destructor to the silcd/idlist.[ch]
9683           to destruct the client entries when the cache entry expires.
9684           Other ID Cache's in server and in the client library ignores
9685           the destructor.
9686
9687         * If the ID Cache entry's `expire' field is zero then the entry
9688           never expires.  Added boolean `expire' argument to the
9689           silc_idcache_add function in the lib/silccore/idcache.[ch].
9690           If it is TRUE the default expiry value is used.
9691
9692         * Added silc_server_free_client_data_timeout that is registered
9693           when client disconnects.  By default for 5 minutes we preserve
9694           the client entry for history - for WHOWAS command.
9695
9696 Tue Mar 13 13:26:18 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9697
9698         * Added support to the server to enforce that commands are not
9699           executed more than once in 2 seconds.  If server receives
9700           commands from client more frequently, timeout is registered
9701           to process the commands.  Affected file silcd/command.c.
9702           Added new function silc_server_command_process_timeout.
9703
9704         * Changed NICK_NOTIFY handling in client library to check that
9705           if the client's nickname was changed, so there is no need to
9706           resolve anything from the server.
9707
9708         * Removed error printing from the WHOIS and IDENTIFY commands.
9709           If error occurs then it is ignored silently in the client library.
9710           The application, however, may map the received error to
9711           human readable error string.  The application currently maps
9712           the NO_SUCH_NICKNAME error to string.
9713
9714         * Made the command status message public to the application.  Moved
9715           them from lib/silcclient/command_reply.c to
9716           lib/silcclient/command_reply.h.  The application can map the
9717           received command status to the string with the
9718           silc_client_command_status_message function.
9719
9720         * Added check to the server to check that client's ID is same
9721           as the Source ID in the packet the client sent.  They must
9722           match.
9723
9724 Tue Mar 13 12:49:21 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9725
9726         * Added dist-bzip hook to the Makefile.am to make bzip2
9727           compressed distributions.
9728
9729 Mon Mar 12 18:43:38 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9730
9731         * Server now enforces the maximum length for the nickname and
9732           the channel as protocol specification dictates.  128 bytes for
9733           nickname and 256 bytes for channel name.
9734
9735         * Moved the WHOIS printing to the application.  The client libary
9736           does not print out the WHOIS information anymore, the application
9737           must do it.  Renamed silc_client_command_reply_whois_print to
9738           the silc_client_command_reply_whois_save.
9739
9740           The client's idle time is also sent to the application now, and
9741           the idle is shown on screen.
9742
9743         * Added silc_client_command_reply_identify_save to save the
9744           received IDENTIFY entries.
9745
9746         * Do not check for channel private keys in message sending and
9747           reception if the channel does not have the PRIVKEY mode set.
9748           Affected file lib/silclient/client_channel.c.
9749
9750 Sun Mar 11 20:25:06 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9751
9752         * Fixed a minor bug if WHOIS and IDENTIFY command parsing that
9753           just surfaced after chaning the JOIN procedure.
9754
9755 Sun Mar 11 14:59:05 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9756
9757         * Added silc_client_get_clients_by_list to get client entries
9758           from Client ID list, that is returned for example by JOIN
9759           and USERS command replies.  The application should use this
9760           function for example when JOIN command reply is received to
9761           resolve the clients already on the channel (library does not
9762           do that anymore as USERS command reply is not used in the JOIN
9763           procedure anymore).  Affected files lib/silcclient/silcapi.h and
9764           lib/silcclient/idlist.c.
9765
9766         * JOIN command reply and USERS command reply returns now SilcBuffer
9767           pointers instead of unsigned char pointers when returning
9768           the client list and mode list.
9769
9770         * Added <Client ID> argument to the JOIN command reply, mainly
9771           for the server to identify for which client the command was
9772           originally sent.  Updated protocol specs accordingly.
9773
9774         * Added SilcDlist private_key pointer to the SilcChannelEntry
9775           in the client to support the channel private keys.  Affected
9776           file is lib/silcclient/idlist.h.
9777
9778         * Added SilcChannelPrivateKey argument to the function
9779           silc_client_send_channel_message so that application can choose
9780           to use specific private ke if it wants to.  If it is not provided,
9781           the normal channel key is used, unless private keys are set.
9782           In this case the first (key that was added first) is used
9783           as the encryption key.
9784
9785         * Implemented the support for channel private key handling.
9786           Implemented the following functions:
9787
9788           silc_client_add_channel_private_key,
9789           silc_client_del_channel_private_keys,
9790           silc_client_del_channel_private_key,
9791           silc_client_list_channel_private_keys and
9792           silc_client_free_channel_private_keys
9793
9794           Affected file lib/silcclient/client_channel.c.
9795
9796         * Added the support for the private keys in the channel message
9797           sending and encryption and in the message reception and
9798           decryption.  Affected funtions are
9799           silc_client_send_channel_message and silc_client_channel_message.
9800
9801 Sat Mar 10 21:36:22 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9802
9803         * Added SKE's key verify callback to the client library's
9804           KE protocol context. Affected files lib/silcclient/protocol.[ch].
9805
9806         * Removed the statement that server (or router) must send USERS
9807           command reply when joining to the channel so that the client
9808           knows who are on the channel.  Instead, the client list and
9809           client's mode list is now sent in the JOIN command reply to the
9810           client who joined channel.  This is better solution.
9811
9812         * Added function silc_server_get_users_on_channel and function
9813           silc_server_save_users_on_channel to the silcd/server.[ch].
9814
9815         * Removed function silc_server_command_send_users from the
9816           silcd/command.c.
9817
9818         * Do not show topic on the client library anymore.  The topic is
9819           sent in the command reply notify to the application and the
9820           application must show the topic now.
9821
9822 Sat Mar 10 00:07:37 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9823
9824         * Added client searching by nickname hash into the IDENTIFY and
9825           WHOIS commands in the server as they were clearly missing from
9826           them.  Affected file is silcd/command.c.
9827
9828         * Fixed a bug in private message receiving in the client library.
9829           The remote ID was freed and it wasn't supposed, now it is
9830           duplicated.
9831
9832 Fri Mar  9 12:40:42 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9833
9834         * Minor fix to the channel payload; allocate the data area, as it
9835           needs to be of specific length.
9836
9837         * If the key agreement port is zero then the operating
9838           system will define the bound port.  Affected files are
9839           lib/silcclient/silcapi.h and lib/silcclient/client_keyagr.c.
9840
9841         * Added new function silc_channel_payload_decrypt into the file
9842           lib/silccore/silcchannel.[ch].
9843
9844         * Moved the channel message etc, check from silc_packet_decrypt
9845           to applications.  The library calls now a generic
9846           SilcPacketCheckDecrypt callback which is to return TRUE or FALSE
9847           when the packet is either normal or special.  This was done to
9848           allow more wide range of checking that was not allowed when
9849           the code was in library.  Now applications can do virtually any
9850           checks to the packet and return to the library the decision how
9851           the packet should be processed.  Affected files are
9852           lib/silccore/silcpacket.[ch].
9853
9854           Added silc_server_packet_decrypt_check to the server and
9855           silc_client_packet_decrypt_check to the client library.
9856
9857         * Added silc_server_packet_send_srcdest into silcd/packet_send.[ch]
9858           to send with specified source and destination information.
9859
9860         * Channel message delivery between routers was broken after the
9861           channel key distribution was fixed earlier.  The channel key
9862           was used be to distributed to other routers as well which is not
9863           allowed by the protocol.  Now this is fixed and channel keys
9864           really are cell specific and the channel message delivery between
9865           routers comply with the protocol specification.
9866
9867         * Fixed various commands in server to check also the global list
9868           for the channel entry and not just the local list.  The affected
9869           file silcd/command.c.
9870
9871 Thu Mar  8 21:39:03 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9872
9873         * Added assert()s to buffer formatting and unformatting routines
9874           to assert (if --enable-debug) when error occurs.  Affected
9875           file: lib/silcutil/silcbuffmt.c.
9876
9877         * Changed to auto-reconnect to check whether the remote host is
9878           router and register the re-connect timeout if it is.  It used
9879           to check that whether we are normal server, but router must do
9880           auto-reconnect with another router as well.  Affected file
9881           silcd/server.c.
9882
9883         * Removed the [<key len>] option from CMODE command as the cipher
9884           name decides the key length, nowadays.  See the defined ciphers
9885           from the protocol specification.
9886
9887         * Added [<hmac>] option to the CMODE command to define the HMAC
9888           for the channel.  Added SILC_CMODE_HMAC channel mode.
9889
9890         * Added [<hmac>] option for the JOIN command so that user can
9891           select which HMAC is used to compute the MACs of the channel
9892           messages.
9893
9894         * Added Hmac field to the Channel Message Payload.  The integrity
9895           of plaintext channel messages are now protected by computing
9896           MAC of the message and attaching the MAC to the payload.  The
9897           MAC is encrypted.  Now, it is clear that this causes some
9898           overhead to the size of the packet but rationale for this is that
9899           now the receiver can verify whether the channel message decrypted
9900           correctly and also when private keys are set for the channel the
9901           receiver can decrypt the packet with several keys and check from
9902           the MAC which key decrypted the message correctly.
9903
9904         * Added silc_cipher_encrypt and silc_cipher_decrypt into the
9905           lib/silccrypt/silccipher.[ch].
9906
9907         * Added silc_hash_len to return the digest length into the
9908           lib/silcrypt/silchash.[ch].
9909
9910         * Rewrote parts of Silc Channel Payload interface in the
9911           lib/silccore/silcchannel.[ch].  The encode function now also
9912           encrypts the packet and parse function decrypts it.
9913
9914 Wed Mar  7 20:58:50 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9915
9916         * Fixed a minor formatting bug in the SKE's key material processing.
9917           It actually might have processed the keys wrong way resulting
9918           into wrong keys.
9919
9920         * Redefined the mandatory HMAC algorithms and added new algorithms.
9921           Added hmac-sha1-96 and hmac-md5-96 which are normal hmac-sha1
9922           and hmac-md5 truncated to 96 bits.  The mandatory is now
9923           hmac-sha1-96.  Rest are optional (including the one that used
9924           to be mandatory).  Rationale for this is that the truncated HMAC
9925           length is sufficient from security point of view and can actually
9926           make the attack against the HMAC harder.  Also, the truncated
9927           HMAC causes less overhead to the packets.  See the RFC2104 for
9928           more information.
9929
9930         * Added new [hmac] configuration section.  The SKE used to use
9931           the hash names (md5 and sha1) in the SKE proposal as HMCAS which
9932           is of course wrong.  The official names that must be proposed in
9933           the SKE are the ones defined in the protocol specification
9934           (hmac-sha1-96 for example).  The user can configure any hmac
9935           using any hash function configured in the [hash] section.  At
9936           least, the mandatory must be configured.
9937
9938           Rewrote the HMAC interface in lib/silccrypt/silchmac.[ch].
9939
9940         * Added HMAC list to the SKE proposal list.  It has now both
9941           hash algorithm list and HMAC list.  This makes the protocol
9942           incompatible with previous versions.  The SKE now seems to work
9943           the way it is supposed to work, for the first time actually.
9944
9945         * Defined plain Hash algorithms to the protocol specification.
9946           Added sha1 and md5.
9947
9948 Tue Mar  6 15:36:11 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
9949
9950         * Implemented support for key agreement packets into the server.
9951           Added functions silc_server_key_agreement and
9952           silc_server_send_key_agreement.  Other than these functions,
9953           server has nothing to do with this packet.
9954
9955         * Added support for private message key packets into the server.
9956           Added functions silc_server_private_message_key and
9957           silc_server_send_private_message_key.
9958
9959         * Updated TODO.
9960
9961         * Changed the silc_[client|server]_protocol_ke_set_keys to be
9962           called in the protocol's final callback instead in the END
9963           protocol state.  This makes a little more sense and in the same
9964           time in client we can use the same protocol routines for normal
9965           key exchange and to key agreement packet handling as well.
9966
9967         * Added to both client's and server's KE protocol context the
9968           SilcSKEKeyMaterial pointer to save the key material.  We will
9969           bring the key material to the protocol's final callback by doing
9970           this.  The final callback must free the key material.
9971
9972         * Added SKE's packet_send callback into client's KE protocol
9973           context so that the caller can choose what packet sending function
9974           is used.  This way we can use different packet sending when
9975           doing normal SKE when doing key agreement packet handling (in
9976           the key agreement packet handling we do not want to encrypt
9977           the packets).
9978
9979         * Implemented the responder side of the key agreement routines
9980           in the client.  The client can now bind to specified port and
9981           accept incoming key negotiation.  The key material is passed
9982           to the application after the protocol is over.
9983
9984         * Implemented the processing of incoming Key Agreement packet
9985           in the client.  Added function silc_client_key_agreement to
9986           process the packet.
9987
9988         * Implemented the intiator side of the key agreement routines
9989           in the client.  The client can now initiate key agreement with
9990           another remote client.  The key material is passed to the
9991           application after the protocol is over.
9992
9993         * Created client_keyagr.c to include all the key agreement
9994           routines.
9995
9996         * Added macro SILC_TASK_CALLBACK_GLOBAL which is equal to the
9997           SILC_TASK_CALLBACK except that it is not static.
9998
9999         * Created client_notify.c and moved the Notify packet handling
10000           from the client.[ch] into that file.
10001
10002         * Created client_prvmsg.c and moved all private message and
10003           private message key routines from the client.[ch] into that file.
10004
10005         * Create client_channel.c and moved all channel message and
10006           channel private key routines from the client.[ch] into that file.
10007
10008         * Changed silc_client_get_client_by_id_resolve to resolve with
10009           WHOIS command instead of IDENTIFY command, in the file
10010           lib/silclient/idlist.c.
10011
10012 Mon Mar  5 18:39:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10013
10014         * Implemented the SKE's responder side to the Client library.
10015
10016         * When FAILURE is received to the protocol do not trust it
10017           blindly.  Register a timeout to wait whether the remote closes
10018           the connection as it should do it, only after that process the
10019           actual failure.  This was changed to both client and server.
10020
10021         * Added client_internal.h to include some of the structures
10022           there instead of client.h in lib/silcclient/.
10023
10024         * Added function silc_task_unregister_by_callback to unregister
10025           timeouts by the callback function.
10026
10027 Sat Mar  3 19:15:43 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10028
10029         * Some "Incomplete WHOIS info" errors has been appearing on the
10030           log files.  Took away the entry->userinfo check from WHOIS
10031           reply sending.  The entry->userinfo is now " " if client did not
10032           provide one.  I thought this was fixed earlier but something
10033           is wrong still.  Let's see if the error still appears.
10034
10035 Wed Feb 28 20:56:29 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10036
10037         * Fixed a minor bug in the login when the channel key is
10038           re-generated in the server.  It used to generate the key in
10039           wrong order and thus caused problems in the channel traffic.
10040
10041         * Fixed a minor bug in channel key distsribution after
10042           KICK command.  The key was not sent to the router even though
10043           it should've been.
10044
10045 Tue Feb 27 20:24:25 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10046
10047         * Added silc_ske_process_key_material_data as generic routine
10048           to process any key material as the SILC protocol dictates.  The
10049           function is used by the actual SKE library but can be used by
10050           applications as well.  This relates to the private message keys
10051           and the channel private keys since they must be processed the
10052           same way the normal SILC session keys.  The protocol dictates
10053           this.  Affected files: lib/silcske/silcske.[ch].
10054
10055           Added also silc_ske_free_key_material to free the
10056           SilcSKEKeyMaterial structure.
10057
10058         * Defined silc_cipher_set_key function to set the key for
10059           cipher without using the object's method function.  The affected
10060           files: lib/silccrypt/silccipher.[ch].
10061
10062         * Implemented silc silc_client_add_private_message_key,
10063           silc_client_add_private_message_key_ske,
10064           silc_client_del_private_message_key,
10065           silc_client_list_private_message_keys and
10066           silc_client_free_private_message_keys functions in the
10067           client library.
10068
10069           Added functions silc_client_send_private_message_key to send
10070           the Private Message Key payload and silc_client_private_message_key
10071           to handle incoming Private Message Key payload.
10072
10073         * Added Cipher field to the Private Message Key payload to set
10074           the cipher to be used.  If ignored, the default cipher defined
10075           in the SILC protocol (aes-256-cbc) is used.
10076
10077 Tue Feb 27 13:30:52 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10078
10079         * Removed lib/silcclient/ops.h file.
10080
10081           Redefined parts of the SILC Client Library API. Created new
10082           file silcapi.h that deprecates the ops.h file and defines the
10083           published Client Library API.  Defined also private message key
10084           API and channel private key API into the file.
10085
10086           This is the file that the application must include from the
10087           SILC Client Library.  Other files need not be included by
10088           the application anymore.
10089
10090         * Added new key_agreement client operation callback and also
10091           defined the Key Agreement library API for the application.
10092
10093 Tue Feb 27 11:28:31 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10094
10095         * Added new packet type: SILC_PACKET_KEY_AGREEMENT.  This packet
10096           is used by clients to request key negotiation  between another
10097           client in the SILC network.  If the negotiation is started it
10098           is performed using the SKE protocol.  The result of the
10099           negotiation, the secret key material, can be used for example
10100           as private message key.
10101
10102           Implemented the Key Agreement payload into the files
10103           lib/silccore/silauth.[ch].
10104
10105 Mon Feb 26 12:13:58 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10106
10107         * Redefined ciphers for the SILC protocol.  Added some new ciphers
10108           and defined the key lengths for the algorithms.  Changed the
10109           code accordingly.  The default key length is now 256 bits.
10110
10111         * Fixed SKE key distribution function silc_ske_process_key_material
10112           when the key length is more than 128 bits.  The default key
10113           length in SILC is now 256 bits.
10114
10115         * Added new command status type: SILC_STATUS_ERR_UNKOWN_ALGORITHM
10116           to indicate unsupported algorithm.
10117
10118         * Renamed rijndael.c to aes.c and all functions as well.
10119
10120         * Fixed a long standing channel key setting bug in client library.
10121           Weird that it has never surfaced before.
10122
10123         * Fixed bug in channel deletion.  If the entire channel is removed
10124           then it must also delete the references of the channel entry
10125           from the client's channel list as the client's channel entry and
10126           the channel's client entry share same memory.
10127
10128 Sun Feb 25 20:47:29 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10129
10130         * Implemented CONNECT and SHUTDOWN commands in the client.
10131
10132         * Implemented CLOSE command to the client.
10133
10134         * Added the function silc_idlist_find_server_by_name into the
10135           files silcd/idlist.[ch].
10136
10137           Added the function silc_idlist_find_server_by_conn into the
10138           files silcd/idlist.[ch].
10139
10140 Sat Feb 24 23:45:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10141
10142         * DIE command was renamed to SHUTDOWN.  Updated the both code
10143           and protocol specs.
10144
10145         * Defined SILC_UMODE_NONE, SILC_UMODE_SERVER_OPERATOR and
10146           SILC_UMODE_ROUTER_OPERATOR modes into lib/silccore/silcmode.h.
10147
10148         * Implemented CONNECT, CLOSE and SHUTDOWN commands to the server
10149           side.
10150
10151         * Added function silc_server_create_connection function to create
10152           connection to remote router.  My server implementation actually
10153           does not allow router to connect to normal server (it expects
10154           that normal server always initiates the connection to the router)
10155           so the CONNECT command is only good for connecting to another
10156           router.
10157
10158 Sat Feb 24 16:03:45 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10159
10160         * Added SILC_NOTIFY_TYPE_KICKED to indicate that the client
10161           or some other client was kicked from the channel.
10162
10163           Implemented the handling of the notify type to both client
10164           and server.
10165
10166           Implemented silc_server_send_notify_kicked to send the KICKED
10167           notify.  It is used to send it to the server's primary router.
10168
10169         * Implemented the KICK command into server and client.
10170
10171         * Added `query' argument to the silc_idlist_get_client function
10172           to indicate whether to query the client from server or not if
10173           it was not found.
10174
10175         * Added new command status type SILC_STATUS_ERR_NO_CHANNEL_FOPRIV
10176           to indicate that the client is not channel founder.
10177
10178         * Updated TODO.
10179
10180 Sat Feb 24 00:00:55 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10181
10182         * Removed the rng context from SilcPacketContext structure and
10183           changed that the packet routine uses the Global RNG API.
10184
10185 Fri Feb 23 11:22:57 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10186
10187         * Added support for quit message that client can "leave" on the
10188           channel when it quits the SILC.  It is ditributed inside the
10189           SILC_NOTIFY_TYPE_SIGNOFF notify type.
10190
10191           Added silc_server_free_client_data that will take the
10192           signoff message as argument.
10193
10194         * Changed SKE routines to use the silc_pkcs_sign/verify routines.
10195
10196 Thu Feb 22 23:05:36 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10197
10198         * Updated parts of the protocol specification to keep it up
10199           to date.
10200
10201 Thu Feb 22 15:08:20 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10202
10203         * Added List flag (SILC_PACKET_FLAG_LIST) to indicate list of
10204           payloads in one packet.
10205
10206         * Deprecated following packet types: NEW_ID_LIST, NEW_CHANNEL_LIST,
10207           NEW_CHANNEL_USER_LIST, SET_MODE and SET_MODE_LIST.  List packets
10208           use now the new List flag.
10209
10210         * Also deprecated the following packet types: REPLACE_ID,
10211           NEW_CHANNEL_USER and REMOVE_CHANNEL_USER packet types.
10212
10213         * Added list support for Notify packet in server.
10214
10215         * Added silc_server_send_notify_channel_change to send the
10216           CHANNEL_CHANGE notify type to replace channel ID's.  Deprecates
10217           the silc_server_send_replace_id.
10218
10219         * Added silc_server_send_notify_nick_change to send the
10220           NICK_CHANGE notify type.  Deprecates the function
10221           silc_server_send_replace_id.
10222
10223         * Added silc_server_send_notify_join to send the JOIN notify type.
10224           Deprecates the function silc_server_send_new_channel_user.
10225
10226         * Added silc_server_send_notify_leave to send LEAVE notify type.
10227           Deprecates the function silc_server_send_remove_channel_user.
10228
10229         * Added silc_server_send_notify_cmode and
10230           silc_server_send_notify_cumode to send CMODE and CUMODE notify
10231           types.  Deprecates the silc_server_send_set_mode function.
10232
10233         * Added SERVER_SIGNOFF notify type to indicate that server has
10234           quit.  This means that all clients on the channel from that
10235           server will drop.  This can be also used when netsplit happens.
10236
10237           Deprecated REMOVE_ID packet type since it is not needed anymore
10238           even from server.
10239
10240           Added silc_server_send_notify_server_signoff to send the
10241           SERVER_SIGNOFF notify type.  Deprecates the function
10242           silc_server_send_remove_id.
10243
10244           Added also silc_server_send_notify_signoff to send the
10245           SIGNOFF notify type.
10246
10247         * Employed the PKCS #1. It is the mandatory way to do RSA in the
10248           SILC protocol from this day on.  Changed the protocol
10249           specification as well.
10250
10251         * Added silc_server_send_notify_topic_set to send TOPIC_SET
10252           notify type.  It is used between routers to notify about
10253           topic changes on a channel.
10254
10255         * Added silc_id_dup into lib/silccore/id.[ch] to duplicate
10256           ID data.
10257
10258         * Partly updated the protocol specification to comply with the
10259           changes now made.  It is still though a bit outdated.
10260
10261         * The JOIN notify type now takes one extra argument <Channel ID>.
10262           The packet used to be destined to the channel but now the
10263           JOIN type may be sent as list thus it is impossible to
10264           destine it to any specific channel.  By adding this argument
10265           it is again possible.
10266
10267 Wed Feb 21 22:39:30 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10268
10269         * Added CREDITS file.  The CHANGES and CREDITS file will appear
10270           in the distribution as well.
10271
10272 Wed Feb 21 14:17:04 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10273
10274         * Implemented CMODE_CHANGE, CUMODE_CHANGE and TOPIC_SET notify
10275           types in the server's silcd/packet_receive.c.
10276
10277         * Implemented CMODE and CUMODE to work in router environment.
10278
10279         * Fixed minor encoding and decoding buglet from the
10280           lib/silccore/silcmode.c.
10281
10282         * Fixed buffer overflow from lib/silcclient/command.c in USERS
10283           command parsing.
10284
10285 Wed Feb 21 12:44:00 EET 2001  Mika Boström <bostik@lut.fi>
10286
10287         * Changed all SilcConfigServer* and silc_config_server* to
10288           SilcServerConfig* and silc_server_config*, respectively.
10289           Patch by Bostik.
10290
10291 Wed Feb 21 00:10:00 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10292
10293         * Associated the ID (client or server ID) to the Authentication
10294           Payload to avoid any possibility of forging.  Updated the
10295           protocol specification and the code accordingly.
10296
10297 Tue Feb 20 14:14:14 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10298
10299         * The RSA key length is now save to the RsaKey context in the
10300           key generation process in lib/silccrypt/rsa.c.  The key length
10301           is now used to figure out the maximum size of the block allowed
10302           to be encrypted/signed.
10303
10304         * Added silc_mp_mp2bin_noalloc into lib/silcmath/mpbin.[ch].  It
10305           is equivalent to the silc_mp_mp2bin but does not allocate any
10306           memory.
10307
10308         * Changed silc_mp_mp2bin API to take length argument.  If it is
10309           non-zero then the buffer is allocated that large.  If zero, then
10310           the size is approximated using silc_mp_sizeinbase, which however
10311           is not relieable.
10312
10313         * Created Global RNG API which is global RNG that application can
10314           initialize.  After initializing, any routine anywhere in the
10315           code (including library) can use RNG without allocating a new
10316           RNG object.  This was done to allow this sort of use of the
10317           RNG in code that has no chance to allocate RNG object.  All
10318           applications currently allocate this and many routines in the
10319           library use this.  Affected file lib/silccrypt/silcrng.[ch].
10320
10321         * Removed the RNG kludge from lib/silcmath/primegen.c and changed
10322           it to use the Global RNG API.
10323
10324         * Defined Authentication Payload into protocol specification that
10325           is used during SILC session to authenticate entities.  It is
10326           used for example by client to authenticate itself to the server
10327           to obtain server operator privileges.
10328
10329           Implemented this payload into the lib/silccore/silcauth.[ch].
10330           Implemented also routines for public key based authentication
10331           as the new protocol specification dictates.
10332
10333           Moved definitions of different authentication methods from
10334           lib/silccore/silcprotocol.h into lib/silccore/silcauth.h.
10335
10336         * Added silc_pkcs_encrypt, silc_pkcs_decrypt, silc_pkcs_sign,
10337           silc_pkcs_verify and silc_pkcs_sign_with_hash and
10338           silc_pkcs_verify_with_hash functions into the file
10339           lib/silccrypt/silcpkcs.[ch].
10340
10341 Mon Feb 19 19:59:28 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10342
10343         * The client entry's userinfo pointer must be always valid.
10344           Otherwise the [<unknown>] bug will surface beacuse the WHOIS
10345           will fail since it requires the userinfo.  Now, the userinfo
10346           is allocated as "" if actual userinfo does not exist.  Actually,
10347           it must exist and it is totally Ok to drop client connections
10348           that does not announce the userinfo.  However, we will make
10349           this workaround for now.
10350
10351         * Added silc_net_get_remote_port into lib/silcutil/silcnet.[ch]
10352           to return the remote port by socket.
10353
10354 Mon Feb 19 14:26:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10355
10356         * Changed SILC_SERVER_COMMAND_EXEC_PENDING macro to the name
10357           SILC_SERVER_PENDING_EXEC and added an new macro
10358           SILC_SERVER_PENDING_DESTRUCTOR which is called to free the
10359           data or when error occurs while processing the pending command.
10360
10361           Added new argument `destructor' into silc_server_command_pending
10362           and to the SilcServerCommandPending object.  This destructor is
10363           now called after calling the pending callback or if error occurs
10364           immediately.  If error occurs the actual pending callback won't
10365           be called at all - only the destructor.  The destructor may be
10366           NULL if destructor is not needed.
10367
10368           All this applies for client library code as well.  Similar
10369           changes were made there as well for the pending commands.
10370
10371           In the client, the application must now allocate the
10372           SilcClientCommandContext with the silc_client_command_alloc
10373           function.
10374
10375         * Added reference counter to the SilcServerCommandContext.  Added
10376           function silc_server_command_alloc and silc_server_command_dup
10377           functions.
10378
10379           Same type of functions added to the client library for the same
10380           purpose as well.
10381
10382         * Removed the cmd_ident from IDListData away since it is now
10383           global for all connections.  It is the command identifier used
10384           in command sending and with pending commands.  The affected file
10385           is silcd/idlist.h.
10386
10387         * Added reference counter to the SilcSocketConnection objecet to
10388           indicate the usage count of the object.  The object won't be
10389           freed untill the reference counter hits zero.  Currently only
10390           server uses this, and client ignores it.  The client must be
10391           set to use this too later.  The affected files are
10392           lib/silccore/silcsockconn.[ch].  Added also the function
10393           silc_socket_dup to increase the reference counter.
10394
10395           This was mainly added because it is possible that the socket
10396           is removed underneath of pending command or other async
10397           operation.  Now it won't be free'd and proper DISCONNECTING
10398           flags, etc. can be set to avoid sending data to connection that
10399           is not valid anymore.
10400
10401         * Added SILC_SET_DISCONNECTING to server.c when EOF is read from
10402           the connection.  After that it sets SILC_SET_DISCONNECTED.
10403           It is, however, possible that the socket data is not still freed.
10404           The silc_server_packet_process now checks that data is not
10405           read or written to connection that is DISCONNECTED.  The socket
10406           get's freed when the reference counter hits zero.
10407
10408 Mon Feb 19 00:50:57 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10409
10410         * Changed the client operation API: channel_message operation's
10411           `sender' is now the client entry of the sender, not the nickname
10412           and the `channel' is the channel entry, not the channel name.
10413
10414           In the private_message operation the `sender' is now also the
10415           client entry of the sender not the nickname.
10416
10417           Affected file is lib/silcclient/ops.h and all applications
10418           using the client operations.
10419
10420 Sat Feb 17 22:11:50 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10421
10422         * Moved the calling of ops->connect() from connect_to_server_final
10423           into receive_new_id functin since that is the point when the
10424           client is actually allowed to send traffic to network.  The
10425           affected file is lib/silcclient/client.c.
10426
10427 Sat Feb 17 13:15:35 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10428
10429         * When receiving NEW_CHANNEL_LIST, NEW_CHANNEL_USER_LIST,
10430           NEW_ID_LIST and SET_MODE_LIST packets, broadcast the list packet
10431           (if needs broadcasting) instead of broadcasting the packets one
10432           by one which would make a burst in the network traffic.
10433
10434         * Added `broadcast' argument to the functions in silcd/server.[ch]
10435           silc_server_create_new_channel[_with_id] to indicate whether
10436           to send New Channel packet to primary router.
10437
10438 Sat Feb 17 01:06:44 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10439
10440         * Added new function into the silcd/server.[ch] files:
10441           silc_server_create_new_channel_with_id to create new channel with
10442           already existing Channel ID.
10443
10444         * Added new packet type SILC_PACKET_SET_MODE_LIST into the file
10445           lib/silccore/silcpacket.h.  This packet is used t send list of
10446           Set Mode payloads inside one packet.  Server uses this to set
10447           the modes for the channels and clients on those channels, that it
10448           announced to the router when it connected to it.  The protocol
10449           specification has been updated accordingly.
10450
10451         * The silc_server_new_channel did not handle the packet coming
10452           from normal server as it normally does not send that.  However,
10453           when it announces its channels it does send it.  Implemented
10454           the support for that.
10455
10456         * Added SILC_ID_CHANNEL_COMPARE macro to compare to Channel ID's
10457           into the file lib/silccore/id.h.
10458
10459 Fri Feb 16 23:57:29 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10460
10461         * Fixed memory leaks in the functions silc_idlist_del_client,
10462           silc_idlist_del_channel and silc_idlist_del_server in the file
10463           silcd/idlist.c.  All of those leaked like a sieve.
10464
10465         * Fixed some small memory leaks in the client's function
10466           silc_client_notify_by_server.
10467
10468         * Added functions into silcd/server.c: silc_server_announce_clients,
10469           silc_server_announce_channels and silc_server_announce_server.
10470           These functions are used by normal and router server to announce
10471           to its primary router about clients, channels and servers (when
10472           router) that we own.  This is done after we've connected to the
10473           router.
10474
10475           These functions effectively implements the following packet types:
10476           SILC_PACKET_NEW_CHANNEL_LIST, SILC_PACKET_NEW_CHANNEL_USER_LIST
10477           and SILC_PACKET_NEW_ID_LIST.
10478
10479         * Added new functions into the silcd/packet_receive.[ch]:
10480           silc_server_new_id_list, silc_server_new_channel_list and
10481           silc_server_new_channel_user_list to handle the incoming
10482           NEW_ID_LIST, NEW_CHANNEL_LIST and NEW_CHANNEL_USER_LIST packets.
10483
10484         * Added support of changing Channel ID in the function
10485           silc_server_replace_id.  If the server that announces a channel
10486           to the router already exists in the router (with same name but
10487           with different Channel ID), router is responsible to send
10488           Replace ID packet to the server and force the server to change
10489           the Channel ID to the one router has.
10490
10491         * Added new notify type SILC_NOTIFY_TYPE_CHANNEL_CHANGE to notify
10492           client that the Channel ID has been changed by the router.  The
10493           normal server sends this to the client.  Client must start using
10494           the new Channel ID as the channel's ID.
10495
10496           Implemented handling of this new type into lib/silcclient/client.c
10497           into the function silc_client_notify_by_server.
10498
10499         * Added new function silc_idlist_replace_channel_id into the files
10500           silcd/idlist.[ch] to replace the Channel ID.
10501
10502 Fri Feb 16 14:14:00 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10503
10504         * Call silc_server_command_identify_check always when processing
10505           the IDENTIFY command in silcd/command.c
10506
10507 Thu Feb 15 20:07:37 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10508
10509         * Added new packet type SILC_PACKET_HEARTBEAT that is used to
10510           send keepalive packets.  The packet can be sent by clients,
10511           servers and routers.
10512
10513           Added function silc_socket_set_heartbeat into the file
10514           lib/silccore/silcsockconn.[ch] to set the heartbeat timeout.
10515           If not set, the heartbeat is not performed.  The actual
10516           heartbeat is implemented in the low level socket connection
10517           library.  However, application is responsible of actually
10518           sending the packet.
10519
10520           Added silc_server_send_heartbeat to send the actual heartbeat
10521           packet into silcd/packet_send.[ch].  Server now performs
10522           keepalive with all connections.
10523
10524         * Added silc_task_get_first function into lib/silcutil/silctask.c
10525           to return the timeout task with shortest timeout.  There was a bug
10526           in task unregistration that caused problems.  TODO has been
10527           updated to include that task system must be rewritten.
10528
10529         * The client library will now resolve the client information when
10530           receiving JOIN notify from server for client that we know but
10531           have incomplete information.
10532
10533         * Rewrote parts of silc_server_remove_from_channels and
10534           silc_server_remove_from_one_channel as they did not remove the
10535           channel in some circumstances even though they should've.
10536
10537         * Encryption problem encountered in server:
10538
10539           The LEAVE command used to send the Channel Key packet to the
10540           router immediately after generating it.  However, the code
10541           had earlier sent Remove Channel user packet but not immediately,
10542           ie. it was put to queue.  The order of packets in the router
10543           was that Channel Key packet was first and Remove Channel User
10544           packet was second, even though they were encrypted in the
10545           reverse order.  For this reason, MAC check failed.  Now, this
10546           is fixed by not sending the Channel Key packet immediately but
10547           putting it to queue.  However, this is more fundamental problem:
10548           packets that are in queue should actually not be encrypted
10549           because packets that are sent immediately gets encrypted
10550           actually with wrong IV (and thus MAC check fails).  So, packets
10551           that are in queue should be encrypted when they are sent to
10552           the wire and not when they put to the queue.
10553
10554           However, the problem is that the current system has not been
10555           designed to work that way.  Instead, the packet is encrypted
10556           as soon as possible and left to the queue.  The queue is then
10557           just purged into wire.  There won't be any fixes for this
10558           any time soon.  So, the current semantic for packet sending
10559           is as follows:
10560
10561           o If you send packet to remote host and do not force the send
10562           (the packet will be in queue) then all subsequent packets to the
10563           same remote host must also be put to the queue.  Only after the
10564           queue has been purged is it safe again to force the packet
10565           send immediately.
10566
10567           o If you send all packets immediately then it safe to send
10568           any of subsequent packets through the queue, however, after
10569           the first packet is put to queue then any subsequent packets
10570           must also be put to the queue.
10571
10572           Follow these rules and everything works fine.
10573
10574 Thu Feb 15 14:24:32 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10575
10576         * Added new function silc_server_remove_clients_by_server to
10577           remove all client entries from ID list when the server connection
10578           is lost.  In this case it is also important to invalidate all
10579           client entires as they hold the invalid server entry.  This
10580           fixes fatal bug when server has lost connection and will reconnect
10581           again.
10582
10583 Wed Feb 14 16:03:25 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10584
10585         * Made some sanity checks to silc_server_daemonise like to check
10586           whether the requested user and group actually exists.
10587
10588         * Added sanity check to SKE's silc_ske_responder_finish to check
10589           that the public and private key actually is valid.
10590
10591         * Invalidate the client's nickname when receiving Replace ID
10592           packet and the Client ID is being replaced.  This means that the
10593           server will query the nickname if someone needs it (client)
10594           a bit later.
10595
10596         * Sort the ID Cache in client library when the ID Cache data
10597           has changed (needs sorting).
10598
10599         * Do not allow for SILC client to create several connections to
10600           several servers.  The client does not support windows right now
10601           and generating multiple connections causes weird behaviour.
10602
10603           Irssi-silc client does support windows and can handle several
10604           connections without problems, see: www.irssi.org and SILC plugin.
10605
10606         * Fixed some places where client was added to the IDList.  The
10607           rule of thumb is following (in order to get everything right):
10608           If the client is directly connected local client then the
10609           `connection' argument must be set and `router' argument must be
10610           NULL to silc_idlist_add_client function.  If the client is not
10611           directly connected client then the `router' argument must
10612           bet set and the `connection' argument must be NULL to the
10613           silc_idlist_add_client function.
10614
10615         * The funtion silc_server_packet_send_local_channel actually did
10616           not check whether the client was locally connected or not.  It
10617           does that now.  Fixed a bug related to LEAVE command.
10618
10619         * Fixed Remove Channel User payload parsing bug in server's
10620           silcd/packet_receive.c.  Fixed a bug related to LEAVE command.
10621
10622         * The server's silc_server_save_channel_key now checks also the
10623           global ID list for the channel as it might not be in the local
10624           list.  Fixed a bug related to LEAVE command.
10625
10626         * Is this the end of the [<unknown>] buglet that has been lurking
10627           around for a long time?  A little for loop fix in server's
10628           silc_server_command_whois_parse that is used by both IDENTIFY
10629           and WHOIS command.  At least, this was a clear bug and a cause
10630           of one type of [<unknown>] buglet.
10631
10632         * WHOIS and IDENTIFY commands call the function
10633           silc_server_command_[whois/identify]_check function even if
10634           we are not router server.
10635
10636 Tue Feb 13 19:55:59 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10637
10638         * Added --with-gmp configuration option.  If set the GMP
10639           is always compiled in the SILC source tree.  If not set then
10640           it is checked whether the system has the GMP3 installed.  If
10641           it has then the GMP won't be compiled (the system's headers
10642           and library is used), if it doesn't have it then the GMP is
10643           compiled in the SILC source tree.
10644
10645 Mon Feb 12 11:20:32 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10646
10647         * Changed RSA private exponent generation to what PKCS #1
10648           suggests.  We try to find the smallest possible d by doing
10649           modinv(e, lcm(phi)) instead of modinv(e, phi).  Note: this is
10650           not security fix but optimization.
10651
10652 Sun Feb 11 18:19:51 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10653
10654         * Added new config entry [Identity] to fork the server and run
10655           it as specific user and group.  A patch from Bostik.
10656
10657         * Imported Dotconf configuration library into lib/dotconf.
10658           This will be used to create the SILC configuration files later.
10659           It will appear in the distsribution after this commit.
10660
10661 Sat Feb 10 21:13:45 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10662
10663         * A big code auditing weekend happening.  Auditing code for
10664           obvious mistakes, bugs and errors.  Also, removing any code
10665           that is obsolete.
10666
10667           Removed files for being obsolete:
10668
10669           o lib/silcutil/silcbuffer.c (the buffer interface is entirely in
10670           inline in the file lib/silcutil/silcbuffer.h)
10671
10672           o lib/silcutil/silcbufutil.c (the header has inline versions)
10673
10674           Changed code to fix possible error conditions:
10675
10676           o The buffer formatting routines now check that the destination
10677           buffer really has enough space to add the data.  This applies for
10678           both buffer formatting and unformatting
10679           (lib/silcutil/silcbuffmt.[ch]).  Also, the entire buffer
10680           unformatting was changed to accomodate following rules:
10681           XXX_*STRING_ALLOC will allocate space for the data into the pointer
10682           sent to the function while XXX_*STRING will not allocate or copy
10683           the data into the buffer.  Instead it sets the pointer from the
10684           buffer into the pointer sent as argument (XXX_*STRING used to
10685           require that the pointer must be allocated already).  This change
10686           makes this whole thing a bit more consistent and more optimized
10687           (note that the data returned in the unformatting with XXX_*STRING
10688           must not be freed now).  The routines return now -1 on error.
10689
10690           o Tried to find all code that use buffer_format and buffer_unformat
10691           and added return value checking to prevent formatting and
10692           especially unformatting errors and possible subsequent fatal
10693           errors.
10694
10695           o Changed ske->x and ske->KEY to mallocated pointers in
10696           lib/silcske/silcske.h.  Fixed possible data and memory leak.
10697
10698           o Added return value checking to all *_parse* functions.  Fixed
10699           many memory leaks as well.
10700
10701           o Added length argument to silc_id_str2id in lib/silccore/id.[ch]
10702           so that buffer overflows would not happen.  All code now also
10703           checks the return value as it can fail.
10704
10705 Mon Feb  5 20:08:30 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10706
10707         * Added reconnection support to server if the normal server looses
10708           its connection to the router (for example if router is rebooted).
10709           The server performs normal reconnection strategy implemented
10710           to the server.  Affected file silcd/server.c.
10711
10712 Sun Feb  4 13:18:32 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10713
10714         * Added new packet type SILC_PACKET_SET_MODE that is used to
10715           distribute the information about changed modes (for clients,
10716           channels and clients channel modes) to all routers in the
10717           network.  Updated the protocol specification accordingly.
10718
10719           Added functions into silcd/packet_send.c and
10720           silcd/packet_receive.c: silc_server_send_set_mode,
10721           silc_server_set_mode.
10722
10723           Added new files silcmode.[ch] into lib/silccore that implements
10724           the encoding and decoding of Set Mode Payload.  Added new type
10725           SilcSetModePayload.  Moved the definitions of different modes
10726           from lib/silccore/silcchannel.h into lib/silccore/silcmode.h.
10727
10728 Sat Feb  3 15:44:54 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10729
10730         * Oops, a little mistake in server's connection authentication
10731           protocol.  The protocol is not ended with FAILURE but with
10732           SUCCESS if the authentication is Ok. :)  Affected file is
10733           silcd/protocol.c.
10734
10735         * Implemented NICK_CHANGE notify handling in server in the file
10736           silcd/packet_receive.c  The NICK_CHANGE notify is distributed to
10737           the local clients on the channel.  After the changing nickname
10738           in router environment snhould work and the [<unknown>] nickname
10739           should appear no more.
10740
10741           The silc_server_replace_id function that receives the Replace ID
10742           payload now sends the NICK_CHANGE notify type also in the file
10743           silcd/packet_receive.c
10744
10745         * Changed WHOIS and IDENTIFY command to support the maximum amount
10746           of arguments defined in protocol specs (3328 arguments).  This
10747           fixed a bug that caused problems when there were more than three
10748           users on a channel.
10749
10750 Fri Feb  2 11:42:56 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10751
10752         * Added extra parameter, command identifier, to the
10753           silc_client_send_command so that explicit command identifier
10754           can be defined.
10755
10756           Changed that ID list routines uses specific command identifier
10757           when sending WHOIS/IDENTIFY requests to the server so that they
10758           can be identified when the reply comes back.
10759
10760           Affected files lib/silcclient/command.[ch],
10761           lib/silcclient/client.c and lib/silcclient/idlist.[ch].
10762
10763         * Added `sender' argument to silc_server_packet_send_to_channel
10764           to indicaet the sender who originally sent the packet to us
10765           that we are now re-sending.  Ignored if NULL.  Affected file
10766           silcd/packet_send.[ch].
10767
10768         * Added some server statistics support in silcd/server_internal.h
10769           SilcServerStatistics structure and around the server code.  Also
10770           send some nice statistics information when client is connecting
10771           to the client.
10772
10773 Thu Feb  1 23:31:21 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10774
10775         * Fixed channel ID decoding in server's JOIN command reply in
10776           silcd/command_reply.c
10777
10778         * Fixed braodcasting of replace ID payload to not to send it if
10779           we are standalone server in silcd/packet_receive.c.
10780
10781         * Fixed all channel message sending routines to not to send
10782           packets to clients that has router set, since they are routed
10783           separately in the same function earlier.  Affects file
10784           silcd/packet_send.c and all channel packet sending functions.
10785
10786         * In USERS reply, res_argv[i] are not allocated, the table
10787           is allocated.  Thus changed that free the table, not its
10788           internals.
10789
10790         * In server's whois_check and identify_check if the client is
10791           locally connected do not send any WHOIS commands - they are not
10792           needed.
10793
10794 Thu Feb  1 21:32:27 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10795
10796         * Fixed some minor bugs in client when sending WHOIS command.  The
10797           arguments was in wrong order.
10798
10799         * Removed statis function add_to_channel from server in
10800           silcd/command.c that was previously used with the joining but
10801           is obsolete now.
10802
10803         * Tested USERS command in router environment successfully with two
10804           routers, two servers and two clients.
10805
10806 Thu Feb  1 00:54:26 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10807
10808         * Reorganized the USERS command and command reply in client library
10809           in lib/silcclient/command.c and lib/silcclient/command_reply.c.
10810           When the command is given by user we register a pending command
10811           callback that will reprocess the command after the reply has been
10812           received from the server.  When reprocessing the packet we then
10813           display the information.  Thus, the USERS information is displayed
10814           now in the command callback instead of in the command reply
10815           callback.  The processing of the command is same as previously
10816           when server has sent the command reply in the JOINing process.
10817
10818         * Added to USERS command in silcd/command_reply.c to join the client,
10819           we didn't use to know about, to the channel after we've created
10820           a client entry for it.  Also, for clienet we did know already still
10821           check whether it is on the channel or not and add it if not.
10822
10823         * Removed silc_server_command_join_notify as the function and its
10824           use was obsolete.
10825
10826 Tue Jan 30 22:39:15 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10827
10828         * Changed the client's pending command handling to the same as the
10829           server's pending command handling.  It is also now possible to
10830           execute command reply functions from other command reply
10831           function as the function callbacks for commands and command
10832           replies are one and same.  The pending commands are not static
10833           list anymore, it is mallocated SilcDList in lib/silcclient/client.h
10834           in client connection context.  Thus, pending commands are server
10835           connection specific as it is convenient.
10836
10837           Changed the function silc_client_command_pending and
10838           silc_client_command_pending_del and added new function
10839           silc_client_command_pending_check.  Removed the
10840           SILC_CLIENT_CMD_REPLY_EXEC, and SILC_CLIENT_PENDING_COMMAND_CHECK
10841           macros.
10842
10843         * Added cmd_ident, current command identifier, to the client
10844           connection context in lib/silcclient/client.h to keep track on
10845           command identifiers used in command sending.  Client's command reply
10846           function handling now supports the mandatory command identifiers.
10847
10848         * Added SILC_CLIENT_COMMAND_EXEC_PENDING macros to all command reply
10849           funtions in client to fully support pending command callbacks.
10850
10851         * NOTE: the name_list in USERS (old NAMES) command is NOT sent anymore
10852           as one of the arguments to the application in the command reply
10853           client operation.
10854
10855         * NOTE: The FORWARDED flag is depracated.  It used to be depracated
10856           before first releasing SILC but came back.  Now it is removed again
10857           and should come back nomore.  The FORWARDED flag was used only
10858           by the JOINing procedure by forwarding the command packet to router.
10859           Now, the JOINing procedure has been changed to more generic (due
10860           to various router environment issues) and FORWARDED is not needed
10861           anymore for anything.  The protocol specification is yet to be
10862           updated.
10863
10864           Now, removed silc_server_packet_forward from server and the flag
10865           SILC_PACKET_FORWARDED from lib/silccore/silcpacket.h.
10866
10867 Tue Jan 30 00:05:05 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10868
10869         * Renamed NAMES command to USERS command.  The NAMES was named that
10870           due to historical reasons.  Now it is renamed.  Also, rewrote
10871           parts of the USERS command.  The nickname list is not sent anymore
10872           by the server.  Only Client ID and mode lists are sent in the USERS
10873           command.  Changed this also to the protocol specification.
10874
10875           The client now resolves the names and stuff after it receives
10876           the USERS list from the server when joining to the channel.
10877
10878         * WHOIS and IDENTIFY commands has been changed to support multiple
10879           Client ID's per command.  One can now search for multiple users
10880           in the network by sending only one WHOIS or IDENTIFY command.
10881           Changed the code and the protocol specifications.
10882
10883         * Removed silc_server_command_identify_parse and changed that IDENTIFY
10884           uses silc_server_command_whois_parse to parse the request. */
10885
10886         * If normal server, do not parse the WHOIS and IDENTIFY requests
10887           before sending it to the router.  Saves some time.
10888
10889 Sun Jan 28 16:19:49 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10890
10891         * Fixed JOIN command on client library.  Wrong number of arguments
10892           used to crash the client.
10893
10894         * Added silc_server_channel_has_global function to check whether
10895           channel has global users or not.
10896
10897         * Added silc_server_channel_has_local function to check whether channel
10898           has locally connected clients on the channel.
10899
10900         * The silc_server_remove_from_one_channel now checks whether the
10901           channel has global users or not after given client was removed from
10902           the channel.  It also checks whether the channel has local clients
10903           on the channel anymore.  If it does not have then the channel entry
10904           is removed as it is not needed anymore.
10905
10906         * The silc_server_notify now checks on JOIN notify whether the joining
10907           client is one of locally connected or global.  If it is global then
10908           the channel has now global users on the channel and that is marked
10909           to the channel entry.  Also, it now saves the global client to
10910           global list who is joining and JOINs it to the channel.  This is
10911           for normal server, that is.
10912
10913           Changed silc_server_send_notify_on_channel,
10914           silc_server_packet_relay_to_channel and
10915           silc_server_packet_send_to_channel check if we are normal server
10916           and client has router set (ie. global client) do not send the
10917           message to that client, as it is already routed to our router.
10918
10919         * Implemented LEAVE notify type handling in silc_server_notify
10920           function.
10921
10922         * Tested LEAVE command in router environment successfully.  Tested
10923           with two routers, two servers and two clients.
10924
10925         * Updated TODO.
10926
10927         * idlist_find_xxx_by_id routines now dumps the ID on the debug mode.
10928
10929         * Implemented SIGNOFF notify type handling in silc_server_notify
10930           function.
10931
10932         * silc_server_remove_id now removes the client entry from all channels
10933           it has joined and thusly sends SIGNOFF notify type.
10934
10935         * Rewrote the NAMES list generation in server by removing two excess
10936           loops.  The lists are created now inside one loop.
10937
10938 Sat Jan 27 22:34:56 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10939
10940         * silc_server_remove_channel_user checks now also global list
10941           for channel and client.
10942
10943         * silc_server_new_channel_user checks now both local and global
10944           list for channel and client.  Fixed a bug in client id decoding.
10945           Used to decode wrong buffer.
10946
10947         * silc_server_channel_message checks now both local and global
10948           list for channel entry.
10949
10950         * Tested channel joining (hence JOIN) in router environment
10951           successfully.  Tested with two routers, two servers and two
10952           clients.
10953
10954         * Tested channel message sending in router environment successfully.
10955
10956 Thu Jan 11 03:22:57 EET 2001  Pekka Riikonen <priikone@poseidon.pspt.fi>
10957
10958         * Added silc_server_save_channel_key into server.[ch] to save the
10959           received channel key in Channel Key payload processing. It is
10960           also used in JOIN command reply handling.
10961
10962           Equivalent function silc_client_save_channel_key added into
10963           client.[ch] into client library.
10964
10965         * Changed JOIN command reply to send information whether the channel
10966           was created or not (is existing already) and the channel key
10967           payload.  Changed protocol specs accordingly.
10968
10969         * Fixed bugs in WHOIS and IDENTIFY command reply sending when
10970           the request was sent by ID and not by nickname.  Crashed on
10971           NULL dereference.
10972
10973 Sat Dec 23 21:55:07 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
10974
10975         * Fixed a bug in Client library.  IDENTIFY and WHOIS reply functions
10976           now correctly save the received data.
10977
10978         * silc_server_free_sock_user_data now notifies routers in the
10979           network about entities leaving the network.
10980
10981           At the same time implemented functions silc_server_remove_id
10982           and silc_server_send_remove_id to receive and send REMOVE_ID
10983           packets.  The packet is used to notify routers in the network
10984           about leaving entities.  The ID removed will become invalid in
10985           the network.
10986
10987         * Added function silc_idlist_del_server into server. Removes and
10988           free's server entry from ID list.
10989
10990         * silc_server_private_message function now checks, if we are router,
10991           that the destination ID really is valid ID, naturally.
10992
10993         * In router when NEW_ID packet is received (for new client) the
10994           hash of the Client ID is saved in the ID Cache but the
10995           client->nickname is set to NULL, instead of putting the hash
10996           to it as well.
10997
10998           IDENTIFY command now also checks that client->nickname must be
10999           valid. If it is not if will request the data from the server who
11000           owns the client.  Added new function
11001           silc_server_command_identify_check.
11002
11003         * Added silc_command_set_command into lib/silccore/silcommand.[ch]
11004           to set the command to already allocated Command Payload.
11005
11006         * Tested private message sending in router environment with two
11007           routers, two servers and two clients.  Fixed minor bugs and now
11008           it works fine.
11009
11010         * Fixed segfault from client's NAMES command. Used to crash if
11011           not on any channel.
11012
11013         * Forwarded packets must not be routed even if it is not destined
11014           to the receiver.  Changed server code comply with this.
11015
11016 Sun Dec 17 14:40:08 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11017
11018         * Added `require_reverse_mapping' boolean value to ServerParams
11019           structure. If TRUE (not default) the server will require that
11020           the connecting host has fully qualified domain name.
11021
11022           If the reverse mapping is not required and hostname could not be
11023           found the IP address is used as hostname.
11024
11025 Sat Dec 16 17:39:54 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11026
11027         * Implemented version string checking to both client and server.
11028           The check is incomplete currently due to the abnormal version
11029           strings used in development version of SILC.
11030
11031         * Changed all command functions in server to use the new
11032           CHECK_ARGS macro.
11033
11034 Fri Dec 15 15:55:12 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11035
11036         * Changed char *data to unsigned char *data in ID Cache system to
11037           support binary data as ID Cache data. Changed code to support
11038           binary data in lib/silccore/idcache.c.
11039
11040         * Renamed silc_server_packet_relay_command_reply to
11041           silc_server_command_reply as it is normal packet receiving
11042           function. Rewrote the function to accept command replys for
11043           servers and not only for clients.
11044
11045         * Mark remote router always as registered server if we are connecting
11046           to it.  Otherwise, commands sent by the router to us are ignored.
11047
11048         * All ID List find routines now returns the ID Cache Entry pointer
11049           as well if requested.
11050
11051         * WHOIS command works now in router environment, tested with two
11052           routers, two servers and two clients.
11053
11054         * Cleaned up and rewrote IDENTIFY command. IDENTIFY should work now
11055           in router environment (as it is almost equivalent to WHOIS) but
11056           hasn't been tested thoroughly.  Added new functions:
11057
11058           silc_server_command_identify_parse
11059           silc_server_command_identify_send_reply
11060           silc_server_command_identify_from_client
11061           silc_server_command_identify_from_server
11062
11063         * Disabled route cache adding because adding two different ID's with
11064           same IP replaces the old cache entry thus giving wrong route.
11065           The entry->router->connection is always the fastest route anyway
11066           so route cache may not be needed.  Of course, new routes maybe
11067           established after receiving the ID when the entry->router->connection
11068           might not be anymore the most optimal.
11069
11070 Thu Dec 14 15:55:35 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11071
11072         * Add route cache for received ID for fast routing.
11073
11074         * Added silc_server_packet_route to route received packet on router
11075           that is not destined to us.
11076
11077         * Renamed silc_server_get_route to silc_server_route_get.
11078
11079         * Added id_string and id_string_len fields into SilcServer to
11080           include encoded ServerID for fast comparing without excess
11081           encoding of the ID's.
11082
11083         * Cleaned up WHOIS command on server side. Added following static
11084           functions:
11085
11086           silc_server_command_whois_parse
11087           silc_server_command_whois_check
11088           silc_server_command_whois_send_reply
11089           silc_server_command_whois_from_client
11090           silc_server_command_whois_from_server
11091
11092         * Added macro SILC_SERVER_COMMAND_CHECK_ARGC to check mandatory
11093           arguments in command replies. All command functions should be
11094           updated to use this macro.
11095
11096 Sun Dec 10 23:52:00 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11097
11098         * Minor typo fixes on command reply handling on server.
11099
11100 Tue Nov 28 11:05:39 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11101
11102         * Added silc_server_command_add_to_channel internal routine to add
11103           the client to the channel after router has created the channel and
11104           sent command reply to the server.
11105
11106         * Added generic silc_server_send_command to send any command from
11107           server.
11108
11109         * Use static buffer with ID rendering instead of duplicating data.
11110
11111 Mon Nov 27 21:39:40 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11112
11113         * Fixed a channel user mode bug when joining to a channel server gave
11114           everybody channel founder rights, oops.
11115
11116         * We mark ourselves as the router of the incoming server connection
11117           if we are router ourselves.  This way we can check in some packet
11118           sending functions whether it is locally connected server.  For
11119           incoming router connections we put NULL.
11120
11121         * For router sending packets locally means now always sending the
11122           packet cell wide; to local clients and local servers.  For normal
11123           server sending packet locally means sending it to only local
11124           clients.
11125
11126         * Fixed the JOIN command to really work in router environment.  If the
11127           channel is created it is always created by the router.  Router is
11128           also responsible of making the initial joining to the channel,
11129           sending JOIN notify to the sending server and distributing
11130           NEW_CHANNEL and NEW_CHANNEL_USER packets.  Hence, if the channel
11131           does not exist server doesn't do anything else but forward the
11132           command to the router which performs everything.
11133
11134         * Added silc_server_send_channel_key function to send the Channel Key
11135           payload.
11136
11137         * Added silc_server_create_channel_key to create new channel key.  The
11138           channel key is now re-generated everytime someone joins or leaves
11139           a channel, as protocol dictates.  Note: channel->key_len is the
11140           key length in bits.
11141
11142 Wed Nov 22 22:14:19 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11143
11144         * Splitted server.[ch] finally.  Created now packet_send.[ch] and
11145           packet_receive.[ch] to separate packet sending and receiving
11146           routines.  The server.[ch] now includes everything else including
11147           actual packet processing (writing and reading data) and other
11148           server issues.
11149
11150           Renamed silc_server_private_message_send_internal to
11151           silc_server_send_private_message.  The routine is still though
11152           used only to relay private messages as server does not send
11153           private messages itself.
11154
11155           Renamed silc_server_new_channel to silc_server_create_new_channel
11156           and added new function sicl_server_new_channel that handles the
11157           incoming New Channel packet.  Added also new sending function
11158           silc_server_send_new_channel to send New Channel Payload.
11159
11160         * Added new function silc_server_notify to process incoming notify
11161           packet to the server/router. Server may then relay the notify
11162           to clients if needed.
11163
11164         * Added new function silc_server_new_channel_user to process incoming
11165           New Channel User packet.  Router will redistribute the packet and
11166           send JOIN notify to its local clients and locally connected servers
11167           if needed.  Normal server will send JOIN notify to its local client
11168           on same channel when received this packet.  Added also corresponding
11169           sending function silc_server_send_new_channel_user to sent the
11170           payload.
11171
11172         * Added boolean route argument to send_notif_to_channel and
11173           packet_send_to_channel functions to attempt to route the packet
11174           if it is TRUE and send only locally if it is FALSE.
11175
11176 Tue Nov 21 19:49:31 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11177
11178         * silc_server_replace_id now broadcasts the received replace ID
11179           packet if it is not broadcast packet already. The router must
11180           broadcast to inform other routers about changed ID.
11181
11182         * Added backpointer to server's router into SilcServer context in
11183           silcd/server_internal.h.
11184
11185         * Fixed silc_server_packet_broadcast to send correct broadcast
11186           packets.
11187
11188         * The channel key is now distributed to the local client as soon
11189           as it is received from the router (in router environment) so that
11190           no other packet may be sent for the channel until client has
11191           received the key.
11192
11193         * silc_server_remove_channel_user now broadcasts the received
11194           Remove Channel User packet if it is not broadcast packet already.
11195           The router must broadcast to inform other routers about removed
11196           channel user.
11197
11198         * Added users field into SilcPacketContext that is a reference count
11199           of the context.  One can increase the reference count by calling
11200           silc_packet_context_dup which is now changed to just increase the
11201           reference count instead of duplicating the data.  The reference
11202           count is decresed by calling silc_packet_context_free that will
11203           free the data after the reference count hits zero.
11204
11205           For now on the packet context and everything allocated into it
11206           (including the raw packet from network) must be freed by calling
11207           the new silc_packet_context_free function.  Added also new function
11208           silc_packet_context_alloc that must be used now to allocate the
11209           context.  This also means that if a routine is asynchronous from
11210           silc_[client/server]_packet_parse_type the packet context must
11211           be duplicated by calling silc_packet_context_dup.  Otherwise it
11212           gets free'd after silc_[client/server]_packet_parse_type returns.
11213           Also, one must remember that if packet is duplicated then its
11214           reference count must be decresed by calling the free function as
11215           many times as it was duplicated.
11216
11217         * Changed SilcBuffer field from protocol contexts to SilcPacketContext
11218           from both client and server.
11219
11220 Mon Nov 20 23:47:03 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11221
11222         * Made joining to a channel working in router environment.
11223
11224         * Cleaned up JOIN command on server side and create function
11225           silc_server_command_join_channel internal routine to make the
11226           joining happen.
11227
11228 Thu Nov  9 21:12:39 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11229
11230         * Changed silc_command_pending list to SilcDList.  Also, added
11231           `ident' field to SilcServerCommandPending structure to identify
11232           the reply and to call correct callback.
11233
11234           Added silc_server_command_pending_check function to replace the
11235           corresnponding macro.  The silc_command_pending list is not
11236           extern anymore.
11237
11238         * Added silc_command_set_ident into lib/silccore/silccommand.[ch]
11239           to set identifier to previously allocated Command Payload.  It
11240           is used to set identifier for command when resending Command
11241           Payload.
11242
11243         * Added silc_command_payload_encode_payload to encode Command
11244           Payload buffer from SilcCommandPayload structure.
11245
11246         * Added silc_argument_payload_encode_payload to encode Argument
11247           payload buffer from SilcArgumentPayload structure.
11248
11249 Wed Nov  8 21:03:28 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11250
11251         * Changed WHOIS command to support router connection on server side.
11252           The whois request is always sent to router unless the server is
11253           standalone server.  After server has received the reply from the
11254           router will it send the reply to the client.
11255
11256         * Added silc_server_packet_broadcast into silcd/server.[ch] to
11257           broadcast received broadcast packet.  The function is used only
11258           by router.  The broadcast packet is always sent to the router's
11259           primary route.
11260
11261         * Added silc_id_render function in lib/silcutil/silcutil.[ch] to
11262           render given ID to printable string, for log files for example.
11263
11264 Tue Nov  7 22:14:19 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11265
11266         * Made basic router to router connections working.  At least they
11267           can now connect to each other but nothing really works the way
11268           they are supposed - yet.
11269
11270         * Added new initiator token to RouterConnection configuration
11271           file in silcd/serverconfig.[ch].  It is used to tell whether we
11272           are the initiator to the remote router or whether we'll expect
11273           the other end to connect.
11274
11275         * Moved registering of listener task to silc_server_init, hence
11276           the server starts listenning as soon as it is run, even if it
11277           does not have connections to other routers.  Let's see how well
11278           this will work.
11279
11280         * Changed default connection retry timeouts for more suitable in
11281           silcd/server.h.
11282
11283         * Removed cipher and such arguments from silc_idlist_add_client
11284           and silc_idlist_add_server prototypes from silcd/idlist.[ch].
11285           Added new function silc_idlist_add_data to add the keys and stuff
11286           to any ID entry.
11287
11288         * Added SilcIDListData structure and added it to SilcClientEntry
11289           and SilcServerEntry as their first field in the structure.  This
11290           way we can explicitly cast the ID entries to the SilcIDListData
11291           structure and get common data for the entries.  In past, we had
11292           to first check what type of connection it is and then cast it to
11293           correct ID entry type.  Now, we can directly cast the opaque
11294           pointer to the SilcIDListData (no matter what ID entry it actually
11295           is) and get the data needed.
11296
11297 Mon Nov  6 21:56:12 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11298
11299         * Wow, found a bug in scheduler.  The scheduler uninitialized itself
11300           in some circumstances even if threre were timeout tasks, though not
11301           IO tasks, but tasks anyway.  Now fixed.
11302
11303         * Defined SilcServerConnection structure to hold connection specific
11304           stuff about directly connected servers and routers.  The definition
11305           is currently in silcd/server_internal.h.  I thought about having
11306           a bit more important role fro this struct but for now it is used
11307           only when connecting to other server (or router actually).
11308
11309         * Added connecting retry support in server when connecting to
11310           router(s).  The retry feature implement exponential backoff
11311           algorithm.  Also, added SilcServerParams structure to hold default
11312           parameters for server.  For now, it include these retry settings
11313           and are hard coded.  After server is moded to be as Silc Server
11314           Library this structure will be more important.
11315
11316 Sun Nov  5 22:28:44 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11317
11318         * Changed client librarys channel->clients table to SilcList and
11319           changed code accordingly.
11320
11321 Thu Nov  2 16:28:01 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11322
11323         * Changed client's channel table to SilcList and changed code
11324           accordingly.  Also changed SilcChannelClientEntry to include back-
11325           pointer to the channel so that client entry can use that structure
11326           as list as well and we have fast cross-reference to the channel.
11327           This change dramatically decreased the complexity of channel
11328           handling with client entry and vice versa (removed one extra
11329           loop when searching for channel entry from many functions).
11330
11331         * Changed server->sim from table to SilcDList and changed code
11332           accordingly.
11333
11334         * NAMES command can now be used from user interface.  It will show
11335           the user list on the channel, neatly.
11336
11337         * Added realname pointer to SilcClientEntry in lib/silcclient/idlist.h.
11338           Code now saves realname of the user if it becomes available.
11339
11340         * Renamed configure.in to configure.in.pre and made ./prepare
11341           script to automatically add correct version string to
11342           configure.in which it creates from configure.in.pre.
11343
11344 Wed Nov  1 17:21:26 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11345
11346         * NAMES command reply now shows users mode with the nickname when
11347           joining to channel.
11348
11349         * Moved silc_client_ch[u]mode[_char] functions from
11350           silc/clientutil.[ch] to lib/silcclient/client.[ch].  Though, that
11351           place sucks, they are utility functions and should be in some
11352           other file.
11353
11354         * Fixed some unsigned int's to unsigned short's.  Patch by cras.
11355
11356         * Fixed contrib/getopt*.[ch] to not require config.h.  Patch by
11357           cras.
11358
11359 Tue Oct 31 20:10:37 EET 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11360
11361         * Updated README.
11362
11363         * Added TRQ (efficient deque and list library) into lib/trq.  This is
11364           a very good list library that is currently used in the SILC.  Defined
11365           SilcList API over the library because I didn't like the API very
11366           much.  See lib/trq/silclist.h for the API and examples of how to
11367           use the API.  Fixed various places in the code to use the new
11368           SilcList API. The SilcList is meant for lists that has a structure
11369           already defined as a list.  It is not suitable to add just some
11370           context to the list (in TRQ, the context is the list actually).
11371
11372           So, I defined SilcDList that can be used for the purpose where
11373           predefined list structure does not exit.  This can be used as
11374           such list.  Now some context just can be added to the SilcDList.
11375           Currently this list is not used in the SILC just yet, though there
11376           are a lot places where this can replace dynamically allocated
11377           tables and I will fix these places, later, to use SilcDList.
11378           See lib/trq/silcdlist.h for SilcDList (they are all inline functions,
11379           and use TRQ internally).
11380
11381           Also fixed some annoying warning messages that the original TRQ
11382           code generated.  Also minor changes to TRQ's Makefile.in.
11383
11384         * Added support for querying by Client ID to both WHOIS and
11385           IDENTIFY commands into server, as required by the protocol.
11386
11387         * Removed method function pointers from SilcBuffer structure. They
11388           weren't used to anything and just increased the context size for
11389           no good reason.  This change also made silc_buffer_alloc and
11390           silc_buffer_free functions inline functions.
11391
11392         * Disabled command flooding detection support until it's fixed so
11393           that it accepts commands in but does not execute them more than once
11394           in two seconds.
11395
11396         * Added silc_net_localhost(), to return local hostname, into
11397           lib/silcutil/silcnet.[ch].  Also added client->hostname pointer
11398           that must be initialized before calling silc_client_init.
11399
11400         * Added new function: silc_server_send_notify_on_channels to send
11401           notify messages to all channels client has joined.  It is assured
11402           that the message is sent only once per client.
11403
11404         * Moved silc_log_format (from lib/silcutil/silclog.[ch] into
11405           lib/silcutil/silcutil.[ch] as silc_format function.  The new
11406           function is generic and is used by server as well, not only by
11407           the logging routines.
11408
11409         * Added new SKE status type: SILC_SKE_STATUS_BAD_VERSION to indicate
11410           the provided version string was not acceptable.  Added new function:
11411           silc_ske_check_version into lib/silcske/silcske.h.  The function
11412           must be implemented by the application (client or server) and it
11413           does not reside in the SKE library.  The function checks the version
11414           string remote end sent.
11415
11416         * Added back pointers (to opaque context and to SilcSocketConnection)
11417           into SilcPacketContext structure into lib/silccore/silcpacket.h.
11418
11419         * Added silc_packet_context_dup into lib/silccore/silcpacket.[ch] to
11420           duplicate packet context structure.
11421
11422         * Changed `notify' client operation to send same arguments as client
11423           receives from server except for ID's.  ID's are mapped to correct
11424           ID entry and that is returned.  Also, if channel entry is not sent
11425           by server but the notify is for channel the channel entry is sent
11426           to application (otherwise application doesn't know that it is for
11427           channel (library gets it from packet's Destination ID)).
11428
11429         * Added silc_client_remove_from_channels into client library to
11430           remove a client from all channels it has joined to.  Used when
11431           received SIGNOFF notify from server.  Added also new function
11432           silc_client_replace_from_channels to replace old ID entry with
11433           new ID entry on all channels.  Used when received NICK_CHANGE
11434           notify from server.
11435
11436         * Fixed ID Cache list handling in silc_idlist_get_client in
11437           lib/silcclient/idlist.c.  Also, added silc_idlist_get_client_by_id
11438           to get (or query) client by ID.
11439
11440         * Updated TODO list.
11441
11442         * Added connection authentication status message defined by the
11443           protocol: SILC_CONN_AUTH_OK and SILC_CONN_AUTH_FAILED and added the
11444           support for these into the code in client and server side.
11445
11446         * Added generic function silc_client_send_command to send any command
11447           with variable argument list.  Application should use this function
11448           to send commands if the command functions provided by the library
11449           does not suite for the application's user interface needs.
11450
11451         * Added new `failure' client operation.  Application is notified about
11452           received failure packet if client is executing a protocol.  In this
11453           case the protocol's execution has failed.
11454
11455         * Added SKE's end notify to send the SKE_SUCCESS notify message that
11456           is required by the protocol.
11457
11458         * Added SILC_PROTOCOL_STATE_FAILURE to indicate received failure
11459           packet from remote.  SILC_PROTOCOL_STATE_ERROR indicates local
11460           error at our end.
11461
11462         * Added status flag to SilcSKE object to indicate realtime status
11463           of the SKE protocol.
11464
11465         * Application receives now exactly same command reply arguments as
11466           the library receives from server.  However, if ID is received the
11467           corresponding ID entry is returned to the application (eg. Client
11468           ID is mapped to correct SilcClientEntry entry and that is returned).
11469           Changed command_reply client operation due to this change.
11470
11471         * Changed all ID's in commands and in command replys as ID Payloads.
11472           Change affected both client and server side codes.
11473
11474           All ID's sent in SILC network (with execption of ID's in SILC
11475           Packet header) are sent in ID Payload to support variable length
11476           ID's.
11477
11478         * Server now notifies nick changes and notifies all clients on
11479           the channels about the new nickname (about the new Client ID,
11480           actually).
11481
11482         * Implemented CMODE command to change channel modes. Supports all
11483           channel modes defined by the protocol specs except ban and invite
11484           lists. (Also, private channel key mode is supported but support for
11485           setting private channel key in client is missing, thus, this mode
11486           has no effect on client side (except that server requires that the
11487           client uses private channel key and normal channel traffic does not
11488           work anymore)).
11489
11490           Also, invite mode works per se, but INVITE command does not work
11491           yet correctly, so you can set channel as invite only channel but
11492           inviting clients to the channel does not work (it is yet to be
11493           thought what's the best way to do it).
11494
11495         * Added new command SILC_COMMAND_CUMODE to change user mode on the
11496           channel.  Defined user modes: CHANNEL_FOUNDER and CHANNEL_OPERATOR.
11497           Implemented CUMODE command to change user's mode on the channel.
11498           Supports all modes defined by the protocol specs.
11499
11500         * Added NAMES command reply to return users modes on the channel.
11501
11502         * Removed unnecessary and slow ciphers from lib/silccrypt.
11503
11504         * Set SO_KEEPALIVE option to connection sockets by default.
11505
11506         * Added new command reply status: SILC_STATUS_USER_NOT_ON_CHANNEL.
11507
11508         * Added notify types: MOTD, CMODE_CHANGE and CUMODE_CHANGE.  Also,
11509           redefined the Notify Payload into protocol specs.
11510
11511         * Added silc_id_payload_parse_id to get ID directly from raw
11512           ID payload data.
11513
11514 Mon Oct  9 20:57:02 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11515
11516         * Changed SILC_COMMAND_IDENTIFY in protocol specification to
11517           accept searching by Client ID as well.
11518
11519         * Added support for LEAVE and SIGNOFF notify types in client library.
11520
11521         * Added silc_id_payload_parse_data into lib/silccore/silcpayload.[ch]
11522           to parse ID Payload from raw data.
11523
11524 Sun Oct  8 19:33:08 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11525
11526         * Added flags parameter into silc_ske_assemble_security_properties
11527           function in lib/silcske/silcske.[ch].
11528
11529         * Changed notify client operation to fit better for notify messages
11530           sent by server.  The notify payload received from server is now
11531           passed to the application (after parsing it to SilcNotifyPayload).
11532           It is application's responsibility to retrieve the arguments
11533           from the payload and show the message the way it wants.  The message
11534           sent by server is implementation specific.
11535
11536         * Changed public keys to comply with the protocol specification.
11537           Old public keys are not supported anymore and are not compatible.
11538
11539         * Removed nickname from Channel Payload as the latest draft removed
11540           it.  The client must resolve the nickname from the NAMES command
11541           reply received when it joined the channel.
11542
11543           Also, changed all channel_xxxx_payload to channel_payload_xxxx.
11544
11545 Sat Oct  7 21:55:01 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11546
11547         * Fixed some errors in protocol specification drafts.
11548
11549         * Created lib/silccore/silcnotify.c to implement Notify Payload
11550           encoding and decoding, lib/silccore/silcpayload.[ch] to implement
11551           generic payloads described by protocol specifications.  The file
11552           includes implementations for ID Payload and Argument Payload.
11553
11554         * Changed Command Payload implementation to use the new Argument
11555           Payload.  Changed command_xxxx_payload to command_payload_xxxx
11556           to comply with SILC coding conventions.
11557
11558         * Added suppport for Argument Payload handling in Notify Payload
11559           implementation as protocol requires it.  Added the new support
11560           into server and client lib as well.
11561
11562 Thu Oct  5 21:16:28 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11563
11564         * Added support for multiple nicknames on same channel.  [n] is
11565           added locally to the nickname if there are more than one same
11566           nicknames on the channel.
11567
11568         * Server now sends all nicknames that matched WHOIS request.
11569           Client also shows the list received from server.
11570
11571         * Added TOPIC command to client side.  User can now set and show
11572           current topic on channel.
11573
11574         * Added MOTD command to client and server.  Also, server sends the
11575           motd when client connects to the server.
11576
11577         * Changed version strings to comply ISO 8601.
11578
11579 Wed Oct  4 23:29:06 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11580
11581         * Fixed protocol error handling in client library.  It should now
11582           cope even if the SKE fails for some reason.
11583
11584         * Made new protocol specification drafts for submitting to IETF.
11585
11586         * Implemented TOPIC command to server in silcd/command.c.
11587
11588         * Added two new notify types into lib/silccore/silcnotify.h:
11589           SILC_NOTIFY_TYPE_NICK_CHANGE and SILC_NOTIFY_TYPE_TOPIC_SET to
11590           notify nickname change and topic setting/change on a channel.
11591
11592         * API change of command_reply operation in client library.  The
11593           application gets now the status type received from server as well.
11594
11595 Sat Sep 30 16:57:42 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11596
11597         * Removed the function just added to lib/silcutil/silcschedule.[ch].
11598
11599         * Cras fixed and optimized the packet handling even further and
11600           it should work now.  Minor change to the prototype of function
11601           silc_packet_receive_process in lib/silccore/silcpacket.[ch].
11602
11603 Sat Sep 30 08:48:47 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11604
11605         * Added new function into lib/silcutil/silcschedule.[ch]:
11606           silc_schedule_with_fd to select() a specified fd.  The function
11607           returns after timeout expires or data arrives or goes.  The
11608           function is used by packet routines to wait that all data is
11609           received from network.
11610
11611         * Fixed data reading from network in lib/silccore/silcpacket.c.
11612           The code now assures that all data is read from the fd and then
11613           continues packet processing.  This was a bug fix since the code
11614           used to drop some data in some circumstances.
11615
11616         * Added new function into lib/silcclient/client.[ch]:
11617           silc_client_start_key_exchange to start key exchange after
11618           connection has been established to server.  The code internally
11619           now uses this funtion but its main purpose was to provide it
11620           for applications that perform their own connecting.  After
11621           application has created a connection it merely calls this
11622           function to start the key exchange between client and server.
11623           The library takes care of everything else after that.
11624
11625           Updated also lib/silcclient/README to explain the usage of
11626           this new function.
11627
11628         * Do not send to application information that connection has
11629           been established.  Application gets notified it by connect
11630           operation anyway.
11631
11632 Thu Sep 28 23:40:19 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11633
11634         * Applied cras's patch to add silc_schedule_one function.  The
11635           function runs scheduler once and returns.
11636
11637         * Fixed the scheduler after cras messed it up.  The timeout
11638           handling works now as it's supposed to work.
11639
11640         * Added into lib/silccore/ silcnotify.h to include notify
11641           message types support.  Changed silc_server_send_notify*
11642           functions, in server.[ch], to support those new notify types.
11643           Added the support for the notify types into client library,
11644           as well.  Added new notify client operation into ops.h in
11645           lib/silcclient/.
11646
11647         * Changed silc_server_packet_send_to_channel to send normal
11648           packets instead of just channel message packets.  The function
11649           is now used to send the notify packets to channels.  It is not
11650           used to send channel message packets anymore, as server never
11651           sends them anymore.
11652
11653         * Added explicit casting into lib/silcutil/silcbuffmt.c to few
11654           va_arg()s as it seems to require it nowadays.  I guess, if SILC
11655           is compiled with older va_arg() the new code should work anyway.
11656
11657 Wed Sep 13 18:10:14 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11658
11659         * Splitted core library.  Core library (lib/silccore) includes
11660           now only SILC protocol specific core (and common) components.
11661           Created new utility library (lib/silcutil) that includes more
11662           generic purpose stuff.  The stuff for util library was taken
11663           from the old core library.  This was minor and easy split.
11664
11665         * Created SILC Client Library (lib/silcclient) that includes
11666           implementation of the SILC client without user interface.  This
11667           was major move from silc/ directory.  The code has been changed
11668           so that it is transparent towards the user interface.  The
11669           silc/ directory includes now the same user interface as before
11670           and it uses the new client library.  Read lib/silcclient/README.
11671           Basicly, the client library performs everything else related
11672           to SILC except user interface handling.  Also, configuration
11673           files are considered to be part of user interface and library
11674           does not handle them.
11675
11676           This change also changed a lot of structures, function naming etc.
11677           Most important change was that SilcClientWindow object was
11678           renamed to SilcClientConnection in the client library.  Created
11679           also new file lib/silcclient/ops.h.  Also added new files
11680           silc/local_command.[ch] and silc/client_ops.[ch].
11681
11682           All these changes were made to make it easier for user interface
11683           designers to create what ever user interface for the SILC client
11684           they want.
11685
11686           It is also expected that the server will be moved to lib
11687           directory as well and SILC Server Library will be created;
11688           sometimes in the future.
11689
11690         * Removed Local commands from lib/silccore/silccommand.h as
11691           they are application specific and new client library does not
11692           handle any of those anymore.
11693
11694         * Several functions moved to lib/silcutil/silcutilc.[ch] from
11695           old client implementation in silc/.
11696
11697         * Added support for callback functions in SILC_LOG_* macros.
11698           Application can now set its own callbacks that will be called
11699           instead of using the default functions that will always print
11700           the debug messages to stderr (or stdout).  Also, debugging can
11701           now be disabled by setting silc_debug to FALSE and re-enabled by
11702           setting it to TRUE.  Note, that logging will still work even
11703           if debugging is disabled.
11704
11705           New functions in lib/silcutil/silclog.[ch]: silc_log_set_callbacks,
11706           silc_log_reset_callbacks, silc_log_set_debug_callbacks and
11707           silc_log_reset_debug_callbacks.
11708
11709         * To enable debugging in silc client one must give now -d
11710           option on command line.
11711
11712         * Changed silc_schedule_init to automatically allocate task queues
11713           if they are not allocated before calling it.
11714
11715 Thu Sep  7 10:49:33 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11716
11717         * Added GMP 3.1 into math library.
11718
11719 Sun Aug 20 21:27:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11720
11721         * Added SILC_PACKET_REMOVE_CHANNEL_USER to remove a client from
11722           a channel in SILC network.  The packet is used by servers and
11723           routers to notify other routers that user has left a channel.
11724           This little feature was missing until now.  Added the feature
11725           to protocol specification as well.
11726
11727           Added functions: silc_server_send_remove_channel_user and
11728           silc_server_remove_channel_user into server.[ch].
11729
11730         * Added SILC_PACKET_REKEY and SILC_PACKET_REKEY_DONE into
11731           lib/silccore/silcpacket.h.  However, they are not implemented
11732           yet.
11733
11734 Sat Aug 19 23:04:16 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11735
11736         * Fixed joining to a channel and sending channel messages
11737           between server and router.  The channel message sending should
11738           now work inside a cell.
11739
11740 Tue Jul 25 20:46:13 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11741
11742         * Fixed the private message sending between server and router.
11743           The private message sending should now work inside a cell.
11744
11745         * Added silc_server_replace_id into server.[ch] to replace
11746           existing ID in the SILC network.
11747
11748         * Added silc_idlist_find_server_by, silc_idlist_replace_client_id
11749           and silc_idlist_replace_server_id into idlist.[ch] in server.
11750
11751 Mon Jul 24 18:33:31 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11752
11753         * Fixed the server to server connections.  Server can again now
11754           connect to router.  Router to router connections probably does
11755           not work just yet.
11756
11757 Thu Jul 20 13:15:01 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11758
11759         * Added dynamic protocol registering support.  Now protocols can
11760           registered and unregistered on the fly.  Patch by cras.
11761
11762 Wed Jul 19 19:08:46 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11763
11764         * Added lib/contrib directory to hold routines that some platforms
11765           don't have but are needed by SILC.
11766
11767         * Added getopt.c, getopt1.c and getopt.h from GNU C library
11768           into lin/contrib to provide getopt() and getopt_long() for
11769           those who don't have it.
11770
11771 Tue Jul 18 20:41:20 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11772
11773         * Added AWAY command to client.  When away message is set and
11774           client receives a private message packet the client automatically
11775           replies to the sender with the away message.
11776
11777         * Fixed a bug in lib/silcmath/mpbin.c: silc_mp_mp2bin.  This
11778           bug seemed to be the cause of recent problems when compiling
11779           with gcc-2.95.
11780
11781         * Added version detection support to SKE protocol specification
11782           and added the new changes to the SKE implementation as well.
11783           There were other minor changes in the SKE protocol as well.
11784
11785           Many changes in lib/silcske/silcske.[ch] and in
11786           lib/silcske/payload.[ch].
11787
11788         * Added ^U functionality, clear input line.  Patch from cras.
11789
11790 Mon Jul 17 23:33:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11791
11792         * Mainly small bugfixes on core library.  Fixed some debugging
11793           logging and buffer overflow in silclog.c.
11794
11795         * Updated config.sub and config.guess on the distribution tree.
11796
11797 Sat Jul 15 15:33:48 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11798
11799         * Added command lagging support in server. Client may execute
11800           commands now only once in two seconds.
11801
11802 Thu Jul 13 22:10:21 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11803
11804         * Optimized packet reception. MAC computation and checking is now
11805           also more optimized.  A lot previously duplicated code is now
11806           used as generic by both client and server.
11807
11808         * Fixed key pair generation in clientutil.c
11809
11810 Wed Jul 12 18:28:07 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11811
11812         * Added into lib/silccore/silcbufutil.[ch] new function;
11813           silc_buffer_realloc.
11814
11815         * Moved generic packet sending/encryption functions to
11816           lib/silccore/silcpacket.[ch] from client and server.  Some
11817           rewriting of the functions.
11818
11819         * Moved all generic packet reception/decryption functions to
11820           lib/silccore/silcpacket.[ch] from client and server.  The
11821           packet processing is now much cleaner in both client and server.
11822           These were major changes in both client and server.
11823
11824         * Created many common functions in server to do packet sending.
11825           Previously code were duplicated a lot, this has been removed
11826           with these changes.
11827
11828 Tue Jul 11 20:27:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11829
11830         * Rewrote major parts of the ID cache system.  Don't know
11831           whether it is better now or not but at least the API is more
11832           cleaner now.
11833
11834         * Major rewrite on ID cache stuff on client because of the ID
11835           cache API changes.  Added idlist.c to client.
11836
11837         * Also major rewrite on ID cache stuff on server as well.
11838           Major rewrite of idlist.[ch]. SilcXXXList's are now named
11839           SilcXXXEntry's.  We won't keep anymore idlist specific pointers
11840           in hand, instead they are all put into the ID cache system now.
11841           All server_idlist_* routines uses ID cache now instead of
11842           traversing its own lists (those lists does not exist anymore).
11843           SilcIDList though still exists.  Also, SilcXXXEntry's are
11844           now pointers.
11845
11846 Sun Jul  9 15:19:24 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11847
11848         * Finally made the SKE implementation compliant to the protocol
11849           specification.  All mp integers are now binary encoded as
11850           opposed being HEX encoded.
11851
11852         * Added lib/silcmath/mpbin.[ch].  Encoding mp intergers to and
11853           from binary data.
11854
11855         * Added into lib/silccore/silcutil.[ch] PEM encoding/decoding
11856           functions: silc_[encode/decode]_pem.  Also added function
11857           silc_encode_pem_file to PEM encode with newlines ('\n') for
11858           saving into a file.
11859
11860         * SILC public keys are now encoded either PEM or binary.  Same
11861           option is for private keys as well.  By default private keys
11862           are binary encoded and public keys PEM encoded.  Silly HEX
11863           encoding were removed.
11864
11865         * Added into lib/silccrypt/silchash.[ch] silc_hash_fingerprint
11866           function to create fingerprints.
11867
11868         * Fixed a bug in SHA1; does not change the original data anymore.
11869
11870         * Partly implemented INFO command on client and server side.
11871           Fixed CLEAR command.  Changes to SERVER command; show current
11872           server(s) when giving command without arguments.  Added
11873           VERSION command to client.
11874
11875         * Added check to server that unregistered connections cannot
11876           execute commands (unless it is specificly allowed).
11877
11878 Thu Jul  6 18:12:24 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11879
11880         * Fixed screen refresh.
11881
11882         * Fixed channel joining bug from client.  On some circumstances
11883           client tried to join to a channel it had already joined.
11884
11885         * Added public key verification process into client's protocol.c.
11886           The client now verifies the public key from user and saves
11887           it into ~./silc/serverkeys/ directory.
11888
11889           Added into: clientutil.[ch]: silc_client_verify_server_key.
11890
11891         * Changed SKE protocol's silc_ske_initiator_finish function
11892           to accept callback function that verifies the received public
11893           key.  Removed old silc_ske_verify_public_key function.
11894
11895 Wed Jul  5 19:19:02 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11896
11897         * Added into silcpkcs[ch]: silc_pkcs_public_key[_data]_set and
11898           silc_pkcs_private_key[_data]_set.
11899
11900         * Made the password and public authentication more cleaner in
11901           server's protocol.c.
11902
11903         * Removed historic and obsolete protocol `channel_auth' from
11904           both client and server.
11905
11906         * Removed wrong way of sending command status messages from
11907           server to client in server's command.c.  The old way violated
11908           protocol specification.
11909
11910           Changes to silccore/silccommand.[ch]: removed
11911           silc_command_encode_status_payload -> not needed anymore,
11912           changed silc_command_encode_payload_va to accept extra
11913           argument on variable argument list.  The argument type must
11914           now be provided to the function.  Also, added new function:
11915           silc_command_encode_reply_payload_va which is same as
11916           normal command_encode_payload_va except command status type
11917           is provided as extra argument.
11918
11919 Tue Jul  4 18:26:39 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11920
11921         * Added ~./silc directory handling.  The directory includes the
11922           public and private keys for the client.
11923
11924           Added silc_client_check_silc_dir, silc_client_create_identifier
11925           and silc_client_load_keys.
11926
11927         * Implemented SILC protocol compliant public key.  Added public
11928           and private key saving to and loading from files.
11929
11930           Added into silcpkcs.[ch]: silc_pkcs_encode_identifier,
11931           silc_pkcs_public_key_encode[_data], silc_pkcs_public_key_decode,
11932           silc_pkcs_private_key_encode[_data], silc_pkcs_private_key_decode,
11933           silc_pkcs_public_key_alloc, silc_pkcs_public_key_free,
11934           silc_pkcs_private_key_alloc and silc_pkcs_private_key_free.
11935
11936           Implemented: silc_pkcs_save_[public/private]_key[_data] and
11937           silc_pkcs_load_[public/private]_key.
11938
11939 Mon Jul  3 18:51:27 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11940
11941         * Added silc_server_get_route (route.[ch]) to get connection
11942           data for the fastest route for given ID.
11943
11944         * Implemented INVITE command on client and server.  The command
11945           were re-defined in the SILC Protocol Specification and the
11946           implementation now complies with the specification.
11947
11948         * Implemented PING command on client and server.
11949
11950         * Implemented NAMES command on client and server.  The server side
11951           supports currently only normal server not router server yet.
11952           Some changes to NAMES definition in SILC protocol specification.
11953
11954 Sun Jul  2 18:23:01 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11955
11956         * Implemented LEAVE command on client and server.
11957
11958         * Previously deprecated SILC_PACKET_FORWARDED flag is now in use
11959           again.  This change was made to the protocol as well.  Server
11960           should not violate the protocol specification anymore.
11961
11962 Fri Jun 30 14:03:26 EEST 2000  Pekka Riikonen <priikone@poseidon.pspt.fi>
11963
11964         * Added SOCKS4 and SOCKS5 support to SILC client.  SOCKS5
11965           was tested.  SOCKS4 was not but should work anyway.